关于https://github.com/microsoft/Windows-driver-samples/tree/master/serial/VirtualSerial2中的示例。
在 queue.c 中有 EvIoRead,当应用程序从我的虚拟驱动程序请求数据时会调用它。当没有数据时,执行以下代码:
OID
EvtIoRead(
_In_ WDFQUEUE Queue,
_In_ WDFREQUEST Request,
_In_ size_t Length
)
{
....
if (bytesCopied > 0) {
//
// Data was read from buffer succesfully
//
WdfRequestCompleteWithInformation(Request, status, bytesCopied);
return;
}
else {
//
// No data to read. Queue the request for later processing.
//
status = WdfRequestForwardToIoQueue(Request,
queueContext->ReadQueue);
}
}
WdfRequestForwardToIoQueue
叫做。但是,当有新数据时,我不确定该怎么做。如何触发EvtIoRead
再次被调用?