次の方法で共有


IoStartPacket 関数 (ntifs.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

ドライバーが指定した キャンセル ルーチンのエントリ ポイントを指定します。

戻り値

何一つ

備考

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

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

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

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

必要条件

要件 価値
サポートされる最小クライアント Windows 2000
ターゲット プラットフォーム 万国
ヘッダー ntifs.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (「解説」セクションを参照)

関連項目

DEVICE_OBJECT

IoMarkIrpPending

IoSetCancelRoutine

IoStartNextPacket

IoStartNextPacketByKey