IoStartNextPacketByKey 函式 (ntifs.h)
IoStartNextPacketByKey 例程會根據指定的排序索引鍵值,從指定裝置對象的相關聯裝置佇列中清除下一個 I/O 要求封包,並使用該 IRP 呼叫驅動程式的 StartIo 例程。
語法
void IoStartNextPacketByKey(
[in] PDEVICE_OBJECT DeviceObject,
[in] BOOLEAN Cancelable,
[in] ULONG Key
);
參數
[in] DeviceObject
要取消佇列 IRP 之裝置物件的指標。
[in] Cancelable
指定是否可以取消裝置佇列中的 IRP。
[in] Key
指定排序索引鍵,決定要從佇列中移除的專案。
傳回值
無
備註
如果目標裝置對象的裝置佇列中目前沒有 IRP,此例程只會將控制權傳回給呼叫端。
如果驅動程式在呼叫 IoStartPacket時將指標傳遞至取消例程,它應該在此例程的 Cancelable 參數中傳遞 TRUE。 如果 Cancelable 為 TRUE,I/O 管理員將會使用取消微調鎖定來保護裝置佇列和目前的 IRP。
沒有 StartIo 例程的驅動程式無法呼叫 IoStartNextPacketByKey。
IoStartNextPacketByKey 的呼叫端必須在 IRQL <= DISPATCH_LEVEL執行。 通常,此例程是從設備驅動器的 DpcForIsr 或 CustomDpc 例程呼叫,這兩者都是在 IRQL = DISPATCH_LEVEL上執行。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 |
目標平台 | Universal |
標頭 | ntifs.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |