我正在尝试从Windows Driver Kit (WDK) 8.1 Samples(位图示例)打印测试页。由于我没有得到任何打印输出,所以在每次调用'DrvWriteSpoolBuf'之后我都发出了一个“GetLastError”调用:
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 !!!来自System Error Codes:
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);
我得到res = E_FAIL
(使用粗体的道歉 - 评论似乎忽略了这个结果)
如何从打印中获得此类错误? (要么是LPT1,要么是FILE:端口)
我已经通过将我尝试发送给假脱机程序的确切内容保存到位图来测试代码,正确创建了位图。
...我为不包含更多代码而道歉,可以在我上面发布的链接中找到... Windows Driver Kit (WDK) 8.1 Samples
Windows驱动程序工具包(WDK)8.1示例\ OEM打印机自定义插件示例\ C ++ \ bitmap
答案 0 :(得分:0)
看来,由于一个已实现但未禁用的功能,有两种不同的方法来处理图像数据......我不知道每个都将它们的输出发送到假脱机程序(生成ERROR_ALREADY_EXISTS
......是我的猜测)
(更准确地说,虽然我没有实现FilterGraphics
,但只有ImageProcessing
,我也应该在S_FALSE
中为FilterGraphics
返回GetImplementedMethod