0

我正在为 WPD 设备编写一个上层过滤器。我为 Read/Write/Ioctl 指定了回调函数,从回调声明中我可以得到 WDFQueue、WDFRequest。

VOID WdfFltrDeviceControl(IN WDFQUEUE Queue, IN WDFREQUEST Request, IN size_t OutputBufferLength, IN size_t InputBufferLength, IN ULONG IoControlCode)

但是从参数队列或请求中,我只能得到由我的驱动程序创建的设备信息。有什么方法可以检索我的驱动程序当前正在过滤的附加设备的信息?(例如,从内核日志中我可以看到对我的 android 设备的 ioctl 请求,但我不知道如何获取 android 设备对象获取设备名称)

4

1 回答 1

0

您确实应该能够使用此方法的参数获取有关您的 WPD 设备请求的信息。如果不是,可能是您的代码或 .inf 过滤器设置错误。

您可以使用此代码片段来检查您现在正在过滤的设备:

WDFDEVICE device = WdfIoQueueGetDevice(Queue);
WCHAR id[255];
ULONG resultLength;
NTSTATUS status = WdfDeviceQueryProperty(device, DevicePropertyHardwareID, sizeof(id), id, &resultLength);
if(NT_SUCCESS(status))
{
//check the device id here
} 

或者,如果您更喜欢其他参数,您可以在此处找到列表

于 2018-05-08T16:02:43.533 回答