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 (「解説」セクションを参照) |