次の方法で共有


IofCompleteRequest 関数 (wdm.h)

IoCompleteRequest マクロは、呼び出し元が特定の I/O 要求のすべての処理を完了し、指定された IRP を I/O マネージャーに返していることを示します。

IoCompleteRequestIofCompleteRequest をラップします

構文

void IofCompleteRequest(
  PIRP  Irp,
  CCHAR PriorityBoost
);

パラメーター

Irp

完了する IRP へのポインター。

PriorityBoost

操作を要求した元のスレッドの実行時優先度をインクリメントするシステム定義の CCHAR 定数を指定します。 この値は、元のスレッドが操作をすばやく完了できる操作を要求した場合 (そのため、要求元のスレッドが I/O の完了を想定した待機に対して補正されない) 場合、または IRP がエラーで完了した場合にIO_NO_INCREMENTされます。 それ以外の場合、 PriorityBoost 定数のセットはデバイスの種類に固有です。 これらの定数については、Ntddk.h または Wdm.h を参照してください。

戻り値

なし

解説

ドライバーは、特定の IRP のすべての処理を完了すると、 IoCompleteRequest を呼び出します。 I/O マネージャーは、上位レベルのドライバーが IRP の IoCompletion ルーチンを設定しているかどうかを判断する IRP をチェックします。 その場合、チェーン内のすべての階層化されたドライバーが IRP を完了するまで、各 IoCompletion ルーチンが呼び出されます。

すべてのドライバーが特定の IRP を完了すると、I/O マネージャーは、操作の元の要求元に状態を返します。 ドライバーで作成された IRP を設定する上位レベルのドライバーは、作成した IRP を解放する IoCompletion ルーチンを指定する必要があることに注意してください。

スピン ロックを保持しているときに IoCompleteRequest を呼び出すことはありません。 スピン ロックを保持しているときに IRP を完了しようとすると、デッドロックが発生する可能性があります。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 CompleteRequest、CompleteRequestStatusCheck、 DoubleCompletion(wdm)HwStorPortProhibitedDDIs(storport)、IoAllocateComplete、IoBuildFsdComplete、 IoSetCompletionExCompleteIrp、 IrpProcessingComplete(wdm)、MarkIrpPending、 PendedCompletedRequest(wdm)、PendedCompletedRequest2、PendedCompletedRequest3、 PendedCompletedRequestEx(wdm)PnpIrpCompletion(wdm)、SpinLockSafe(storport)、 SpinLockSafe(wdm)、、 WmiComplete(wdm)

こちらもご覧ください

IoSetCompletionRoutine