当FindNextPrinterChangeNotification为ppPrinterNotifyInfo返回null时,它是什么意思?

时间:2012-12-15 00:22:34

标签: c# pinvoke

我使用FindFirstPrinterChangeNotification / FindNextPrinterChangeNotification方法使用C#中的P / Invoke监视打印机。

我已经彻底阅读了关于此功能的MSDN docs

偶尔我对FindNextPrinterChangeNotification的一次调用会导致非零(成功)返回值,但ppPrinterNotifyInfo指针为空。我无法在任何地方找到这种行为,所以我不确定这表明了什么。我通常可以通过在我的机器上快速连续发送20或30张照片来重现这个问题。

我知道我从FindFirstPrinterChangeNotification接收的句柄是有效的,因为使用相同句柄的其他调用(使用空指针调用之前和之后)都会成功返回通知数据。

这是我正在使用的定义:

[DllImport("winspool.drv", EntryPoint = "FindNextPrinterChangeNotification", SetLastError = true,
            CharSet = CharSet.Unicode, ExactSpelling = false, CallingConvention = CallingConvention.StdCall)]
public static extern int FindNextPrinterChangeNotification([In] IntPtr hChangeObject,
                                                           [Out] out Int32 pdwChange,
                                                           [In, MarshalAs(UnmanagedType.LPStruct)] PrinterNotifyOptions pPrinterNotifyOptions,
                                                           [Out] out IntPtr lppPrinterNotifyInfo);

那么导致null ppPrinterNotifyInfo的原因是,这种行为记录在我遗漏的任何地方,这是什么意思?

我可以安全地忽略它为空的情况并继续从同一个句柄接收通知吗?这是否意味着我错过了任何通知?

0 个答案:

没有答案
相关问题