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
值的指標,決定將封包插入裝置佇列的位置。 如果這是零,封包會插入裝置佇列的結尾。
[in, optional] CancelFunction
指定驅動程式提供的 Cancel 例程的進入點。
傳回值
無
備註
如果驅動程式已經忙於處理目標裝置物件的要求,則封包會排入裝置佇列中。 否則,此例程會使用指定的 IRP 呼叫驅動程式的 StartIo 例程。
如果提供非 NULL CancelFunction 指標,它會在 IRP 中設定,以便在完成之前取消 IRP 時呼叫驅動程式的 Cancel 例程。
沒有 StartIo 例程的驅動程式無法呼叫 IoStartPacket。
IoStartPacket 的呼叫端必須在 IRQL <= DISPATCH_LEVEL執行。 通常,此例程是從 IRQL = PASSIVE_LEVEL的設備驅動器分派例程呼叫。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 |
目標平台 | Universal |
標頭 | ntifs.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (请参阅一节) |