IoStartNextPacketByKey 函数 (wdm.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 开始可用。 |
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |