-1

我正在尝试从Windows 驱动程序工具包 (WDK) 8.1 示例(位图示例)打印测试页。因为我没有得到任何打印输出,所以我在每次调用“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 !!! 从系统错误代码

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 Driver Kit (WDK) 8.1 Samples\OEM 打印机自定义插件 Samples\C++\bitmap

4

1 回答 1

0

似乎,由于一个已实现且未禁用的功能,有两种不同的方法来处理图像数据......我不知道每个都将它们的输出发送到假脱机程序(生成ERROR_ALREADY_EXISTS......是我的猜测)

(更准确地说,虽然我没有实现FilterGraphics,但只是ImageProcessing,我也应该在S_FALSEFilterGraphics返回GetImplementedMethod

于 2015-01-22T21:35:34.490 回答