开发者

Active Wait in Windows I/O Driver

开发者 https://www.devze.com 2022-12-09 04:45 出处:网络
Continuing the question in: Keep windows trying to read a file Thanks to accepted answer in that question I realized that keeping windows waiting for data is a driver responsability.

Continuing the question in:

Keep windows trying to read a file

Thanks to accepted answer in that question I realized that keeping windows waiting for data is a driver responsability.

As i'm using Dokan, I am be able to look into the driver code. Dokan complete the IRP request with a STATUS_END_OF_FILE when you return no data, that obvioulsy forces windows to stop waiting for data and close the file.

What i want to do is to hold the application that request file data until data is available and as i said in the original question, the user must be able to cancel the process at any time.

The code that completes the request is:

PIRP irp
irp->IoStatus.Status = STATUS_END_OF_FILE
IoCompleteRequest(irp, IO_NO_INCREMENT);

Actually, i can return any error code, and i wanted to know if some STATUS code ( one of NTSTATUS values ), force windows to wait fo开发者_开发百科r data, and if returning that status code is enough to hold windows in reading operation.

I already tried to return STATUS_WAIT_0, but it doesn't seem to work.

Thanks again :)


You should return STATUS_PENDING and set CancelRoutine for the IRP. Complete your IRP when the data is available or an error occurred. See Asynchronous I/O Responses and Canceling IRPs for more info.

0

精彩评论

暂无评论...
验证码 换一张
取 消