次の方法で共有


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

こちらもご覧ください

IRP

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver

IoSetCompletionRoutine