ディスパッチ ルーチンから返される状態
Note
最適な信頼性とパフォーマンスを実現するには、レガシ ファイル システム フィルター ドライバーではなく、フィルター マネージャーのサポートがあるファイル システム ミニフィルター ドライバーを使用します。 レガシ ドライバーをミニフィルター ドライバーに移植するには「レガシ フィルター ドライバーの移植ガイドライン」を参照してください。
IRP を完了する場合を除き、完了ルーチンを設定しないディスパッチ ルーチンは常に、IoCallDriver によって返される NTSTATUS 値を返す必要があります。 この値が STATUS_PENDING されていない限り、IRP を完了したドライバーによって設定された Irp->IoStatus.Status の値と一致する必要があります。
作業キューに IRP をポストする可能性がある完了ルーチンを設定するディスパッチ ルーチンは、次のいずれかの操作を行う必要があります。
- IoCallDriver によって返された NTSTATUS 値を返します。
- 完了ルーチンがイベントを通知し、Irp->IoStatus.Status の値を返すのを待ちます。
- 保留中の IRP をマークし、作業キューにポストし、STATUS_PENDING 返します。
- 完了ルーチンが作業キューに IRP をポストする可能性がある場合、ディスパッチ ルーチンは保留中の IRP をマークし、STATUS_PENDING を返す必要があります。
これらの動作のうち、どれが正しい動作か、または可能な動作かは、特定の操作によって異なります。 ディレクトリ変更の通知などの一部の操作は同期できません。および一部の操作 (便宜的ロックなど) を非同期にすることはできません。
ディスパッチ ルーチンから状態を返す方法の詳細については「ディスパッチ ルーチンの制約」を参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示