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 (请参阅一节)

另請參閱

DEVICE_OBJECT

IoMarkIrpPending

IoSetCancelRoutine

IoStartNextPacket

IoStartNextPacketByKey