队列
2026-06-17
1
0
队列和WDFDevice一样,也有:
- 属性:就是扩展Context
- 配置:回调函数
NTSTATUS
RawQueueCreate(
_In_ WDFDEVICE Device,
_Out_ WDFQUEUE *Queue
)
{
NTSTATUS status;
WDF_IO_QUEUE_CONFIG queueConfig;
WDF_OBJECT_ATTRIBUTES queueAttributes;
WDFQUEUE queue;
PQUEUE_CONTEXT queueContext;
WDF_IO_QUEUE_CONFIG_INIT(
&queueConfig,
WdfIoQueueDispatchParallel);
queueConfig.EvtIoWrite = HIDINJECTOR_EvtIoWriteFromRawPdo;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(
&queueAttributes,
QUEUE_CONTEXT);
status = WdfIoQueueCreate(
Device,
&queueConfig,
&queueAttributes,
&queue);
if (!NT_SUCCESS(status))
{
KdPrint(("WdfIoQueueCreate failed 0x%x\n", status));
return status;
}
queueContext = GetQueueContext(queue);
queueContext->Queue = queue;
queueContext->DeviceContext = GetHidDeviceContext(Device);
*Queue = queue;
return status;
}
WDF





