KeInsertByKeyDeviceQueue 函数 (wdm.h)
KeInsertByKeyDeviceQueue 例程获取指定 DeviceQueue 的旋转锁,如果设备队列设置为忙碌状态,则根据指定的排序键值将条目排队。
语法
BOOLEAN KeInsertByKeyDeviceQueue(
[in, out] PKDEVICE_QUEUE DeviceQueue,
[in, out] PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
[in] ULONG SortKey
);
参数
[in, out] DeviceQueue
指向调用方为其提供存储的设备队列类型的控制对象的指针。
[in, out] DeviceQueueEntry
指向要根据特定键值插入到设备队列中的设备队列条目的指针。
[in] SortKey
指定排序键值,该值确定要插入条目的设备队列中的位置。
返回值
如果设备队列为空,则返回 FALSE ,这意味着 DeviceQueueEntry 不会插入到设备队列中。
注解
获取指定的设备队列旋转锁并检查设备队列的状态。 如果设备队列设置为忙碌状态, 则 DeviceQueueEntry 指定的 IRP 将根据其排序键值插入设备队列,并释放设备队列旋转锁。
新条目位于设备队列中排序键值小于或等于其排序键值的任何条目之后,并且位于具有较大排序键值的任何条目之前。
如果 KeInsertByKeyDeviceQueue 返回 FALSE,则调用方必须开始处理 IRP。 当队列为空时,调用 KeInsertDeviceQueue 或 KeInsertByKeyDeviceQueue 会导致设备队列从不忙状态转换为忙碌状态。
此例程适用于将 I/O 请求排队到设备驱动程序的代码。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | DISPATCH_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDDI (storport) 、 IrqlDispatch (storport) 、 IrqlDispatch (storport) 、 IrqlDispatch (wdm) 、 MarkQueuedIrps (wdm) |