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。 如果 可取消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) |
| 库 | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
| IRQL | <= DISPATCH_LEVEL |