WdfIoQueueGetState 函数 (wdfio.h)
[适用于 KMDF 和 UMDF]
WdfIoQueueGetState 方法返回指定 I/O 队列的状态。
语法
WDF_IO_QUEUE_STATE WdfIoQueueGetState(
[in] WDFQUEUE Queue,
[out, optional] PULONG QueueRequests,
[out, optional] PULONG DriverRequests
);
参数
[in] Queue
框架队列对象的句柄。
[out, optional] QueueRequests
指向一个位置的指针,该位置接收当前在 I/O 队列中且尚未传递到驱动程序的 I/O 请求数。 此指针是可选的,可以为 NULL。
[out, optional] DriverRequests
指向位置的指针,该位置接收已传递到驱动程序但驱动程序尚未完成或取消的 I/O 请求数。 此指针是可选的,可以为 NULL。
返回值
WdfIoQueueGetState 返回一个 WDF_IO_QUEUE_STATE类型的值,该值可以包含多个 WDF_IO_QUEUE_STATE 枚举器的按位 OR。
如果驱动程序提供无效的对象句柄,则会发生 bug 检查。
注解
调用 WdfIoQueueGetState 后,驱动程序可以将收到的状态值传递给 Wdfio.h 中定义的以下函数:
-
WDF_IO_QUEUE_DRAINED,如果队列已排空,则返回 TRUE 。
-
WDF_IO_QUEUE_IDLE,如果队列处于空闲状态,则返回 TRUE 。
-
WDF_IO_QUEUE_PURGED,如果清除队列,则返回 TRUE 。
-
WDF_IO_QUEUE_READY,如果队列准备就绪,则返回 TRUE 。
-
WDF_IO_QUEUE_STOPPED,如果队列已停止,则返回 TRUE 。
有关 WdfIoQueueGetState 方法的详细信息,请参阅 获取 I/O 队列属性。
示例
下面的代码示例是一个例程,如果指定的 I/O 队列处于空闲状态,则返回 TRUE 。
BOOLEAN
IsQueueIdle(
IN WDFQUEUE Queue
)
{
WDF_IO_QUEUE_STATE queueStatus;
queueStatus = WdfIoQueueGetState(
Queue,
NULL,
NULL
);
return (WDF_IO_QUEUE_IDLE(queueStatus)) ? TRUE : FALSE;
}
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
最低 KMDF 版本 | 1.0 |
最低 UMDF 版本 | 2.0 |
标头 | wdfio.h (包括 Wdf.h) |
Library | Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | DriverCreate (kmdf) 、 KmdfIrql (kmdf) 、 KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf) |