IoMakeAssociatedIrp 関数 (ntddk.h)
このルーチンは、ファイル システムとファイル システム フィルター ドライバーで使用するために予約されています。 IoMakeAssociatedIrp ルーチンは、最上位レベルのドライバーに送信されるマスター IRP に関連付けられる IRP を割り当てて初期化します。これにより、呼び出し元は元の要求を分割し、関連する IRP を下位レベルのドライバーに送信できます。
構文
PIRP IoMakeAssociatedIrp(
[in] PIRP Irp,
[in] CCHAR StackSize
);
パラメーター
[in] Irp
最上位レベルのドライバーのディスパッチ ルーチンに入力されたマスター IRP へのポインター。
[in] StackSize
関連付けられている IRP に割り当てるスタックの場所の数を指定します。 値は、次の下位ドライバーのデバイス オブジェクトの StackSize 以上である必要がありますが、関連付けられている IRP は、呼び出し元の追加のスタックの場所を持つことができます。
戻り値
IoMakeAssociatedIrp は、関連付けられた IRP へのポインターを返すか、IRP を割り当てることができない場合は NULL ポインターを返します。
注釈
このルーチンを呼び出すことができるのは、最上位のドライバーだけです。
I/O マネージャーは、呼び出し元が関連付けられている IRP で IoCompletion ルーチンを設定し、 その IoCompletion ルーチンからSTATUS_MORE_PROCESSING_REQUIRED返されていない限り、下位ドライバーが関連付けられているすべての IRP を完了すると、マスター IRP を自動的に完了します。 このような状況では、呼び出し元は、関連付けられているすべての IRP が完了したことをドライバーが判断したときに、マスター IRP を明示的に完了する必要があります。
マスター IRP のみがスレッドに関連付けられています。関連付けられている IRP は含まれません。 このため、I/O マネージャーは、スレッドの終了時に関連付けられている IRP の キャンセル ルーチンを呼び出すことができません。 マスター IRP のスレッドが終了すると、I/O マネージャーは、マスター IRP の キャンセル ルーチンを呼び出します。 Cancel ルーチンは、関連付けられているすべての IRP を追跡し、IoCancelIrp を呼び出して取り消す役割を担います。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 以降で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | ntddk.h (Ntddk.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |