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
ドライバーが提供する Cancel ルーチンのエントリ ポイントを指定します。
戻り値
なし
解説
ドライバーがターゲット デバイス オブジェクトの要求の処理中に既にビジー状態になっている場合、パケットはデバイス キューにキューに入れられます。 それ以外の場合、このルーチンは、指定した IRP を使用してドライバーの StartIo ルーチンを呼び出します。
NULL 以外の CancelFunction ポインターが指定されている場合は、IRP で設定されるため、完了前に IRP が取り消されると、ドライバーの Cancel ルーチンが呼び出されます。
StartIo ルーチンを持たないドライバーは、IoStartPacket を呼び出すことができません。
IoStartPacket の呼び出し元は IRQL <= DISPATCH_LEVELで実行されている必要があります。 通常、このルーチンは、デバイス ドライバーのディスパッチ ルーチン (IRQL = PASSIVE_LEVEL) から呼び出されます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 |
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Wdm.h、Ntddk.h、Ntifs.h を含みます) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (「解説」セクションを参照) |