共用方式為


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

指定驅動程式提供的 取消 例程的進入點。

傳回值

沒有

言論

如果驅動程式已經忙於處理目標裝置物件的要求,則封包會排入裝置佇列中。 否則,此例程會使用指定的 IRP 呼叫驅動程式的 StartIo 例程。

如果提供非 NULL CancelFunction 指標,則會在 IRP 中設定它,以便在 IRP 完成前取消 IRP 時呼叫驅動程式的 Cancel 例程。

沒有 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