继续问题:
感谢该问题中接受的答案,我意识到让窗口等待数据是驱动程序的责任。
当我使用 Dokan 时,我可以查看驱动程序代码。当您没有返回任何数据时,Dokan 使用 STATUS_END_OF_FILE 完成 IRP 请求,这显然会强制 Windows 停止等待数据并关闭文件。
我想要做的是保留请求文件数据的应用程序,直到数据可用,正如我在原始问题中所说,用户必须能够随时取消该过程。
完成请求的代码是:
PIRP irp
irp->IoStatus.Status = STATUS_END_OF_FILE
IoCompleteRequest(irp, IO_NO_INCREMENT);
实际上,我可以返回任何错误代码,并且我想知道某些状态代码(NTSTATUS 值之一)是否强制窗口等待数据,以及返回该状态代码是否足以让窗口保持读取操作。
我已经尝试返回 STATUS_WAIT_0,但它似乎不起作用。
再次感谢 :)