Системная ошибка 183 из вызова печати (ERROR_ALREADY_EXISTS)

Я пытаюсь распечатать пробную страницу из образца Windows Driver Kit (WDK) 8.1 (образец растрового изображения). Поскольку я не получил никакого вывода на печать, я помещал вызов "GetLastError" после каждого вызова "DrvWriteSpoolBuf":

dwWritten = pDevObj->pDrvProcs->DrvWriteSpoolBuf(pDevObj, (void*)&(pOemPDEV->bmFileHeader), sizeof(BITMAPFILEHEADER));

DWORD pdwReturn = GetLastError();
if (pdwReturn != ERROR_SUCCESS)
    ERR("OEMEndDoc: Error printing=%ld\n", pdwReturn); 

Я получил ошибку 183!!! Из кодов системных ошибок:

ERROR_ALREADY_EXISTS
183 (0xB7)
Cannot create a file when that file already exists.

Альтернативная версия звонка выше

DWORD res = pOemPDEV->pOEMHelp->DrvWriteSpoolBuf(pDevObj, &(pOemPDEV->bmFileHeader), sizeof(BITMAPFILEHEADER), &dwWritten);

Я получаю разрешение = E_FAIL

(извините за использование жирного шрифта - комментарии, кажется, игнорируют этот результат)

Как я могу получить такую ​​ошибку при печати? (либо в LPT1, либо в FILE: порт)

Я проверил код, сохранив в растровом изображении точное содержимое, которое я пытаюсь отправить в спулер, растровое изображение было создано правильно.

... Я прошу прощения за то, что не включил больше кода, он доступен по ссылке, которую я разместил выше... Windows Driver Kit (WDK) 8.1 Примеры

Windows Driver Kit (WDK) 8.1 Примеры \ Образцы подключаемых модулей для настройки OEM-принтеров \C++\bitmap

1 ответ

Решение

Кажется, что из-за функции, которая была реализована и не отключена, было два разных метода для обработки данных изображения... Я не знал, что каждый из них отправлял свои выходные данные в спулер (генерируя ERROR_ALREADY_EXISTS... это мое предположение)

(точнее, пока я не реализовал FilterGraphics, но только ImageProcessingЯ тоже должен был вернуться S_FALSE за FilterGraphics в GetImplementedMethod)

Другие вопросы по тегам