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 (請參閱一節) |