1

質問を続ける:

Windowsがファイルを読み取ろうとし続ける

その質問で受け入れられた回答のおかげで、ウィンドウがデータを待機し続けることがドライバーの責任であることに気づきました。

Dokanを使用しているので、ドライバーコードを調べることができます。Dokanは、データが返されない場合にSTATUS_END_OF_FILEを使用してIRP要求を完了します。これにより、ウィンドウはデータの待機を停止し、ファイルを閉じます。

私がやりたいのは、データが利用可能になるまでファイルデータを要求するアプリケーションを保持することです。元の質問で述べたように、ユーザーはいつでもプロセスをキャンセルできる必要があります。

リクエストを完了するコードは次のとおりです。

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

実際、エラーコードを返すことができます。ステータスコード(NTSTATUS値の1つ)があるかどうか、ウィンドウにデータの待機を強制するかどうか、およびそのステータスコードを返すだけでウィンドウの読み取り操作を保持できるかどうかを知りたいと思いました。

すでにSTATUS_WAIT_0を返そうとしましたが、うまくいかないようです。

再度、感謝します :)

4

1 に答える 1

2

STATUS_PENDINGを返し、IRPにCancelRoutineを設定する必要があります。データが利用可能になったとき、またはエラーが発生したときにIRPを完了します。詳細については、非同期I/O応答IRPのキャンセルを参照してください。

于 2009-10-21T08:38:37.437 に答える