IoStartPacket 関数 (wdm.h)

IoStartPacket ルーチンは、指定された IRP を使用してドライバーの StartIo ルーチンを呼び出すか、デバイスが既にビジー状態の場合は、指定されたデバイス オブジェクトに関連付けられているデバイス キューに IRP を挿入します。

構文

void IoStartPacket(
  [in]           PDEVICE_OBJECT DeviceObject,
  [in]           PIRP           Irp,
  [in, optional] PULONG         Key,
  [in, optional] PDRIVER_CANCEL CancelFunction
);

パラメーター

[in] DeviceObject

IRP のターゲット デバイス オブジェクトへのポインター。

[in] Irp

処理する IRP へのポインター。

[in, optional] Key

デバイス キューにパケットを挿入する場所を決定する値へのポインター。 これが 0 の場合、パケットはデバイス キューの末尾に挿入されます。

[in, optional] CancelFunction

ドライバーが提供する Cancel ルーチンのエントリ ポイントを指定します。

戻り値

なし

解説

ドライバーがターゲット デバイス オブジェクトの要求の処理中に既にビジー状態になっている場合、パケットはデバイス キューにキューに入れられます。 それ以外の場合、このルーチンは、指定した IRP を使用してドライバーの StartIo ルーチンを呼び出します。

NULL 以外の CancelFunction ポインターが指定されている場合は、IRP の完了前に IRP が取り消された場合にドライバーの Cancel ルーチンが呼び出されるように、IRP に設定されます。

StartIo ルーチンを持たないドライバーは、IoStartPacket を呼び出すことができません。

IoStartPacket の呼び出し元は IRQL <= DISPATCH_LEVELで実行されている必要があります。 通常、このルーチンは、IRQL = PASSIVE_LEVEL でデバイス ドライバーのディスパッチ ルーチンから呼び出されます。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (「解説」セクションを参照)

こちらもご覧ください

DEVICE_OBJECT

IoMarkIrpPending

IoSetCancelRoutine

IoStartNextPacket

IoStartNextPacketByKey