我正在为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)
但是从参数Queue或Request中,我只能获取由我的驱动程序创建的设备信息。有没有办法检索我的驱动程序当前正在过滤的附加设备的信息?(例如,从内核日志中我可以看到ioctl请求到我的Android设备,但我不知道如何获取Android设备获取设备名称的对象)
答案 0 :(得分: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
}
或者,如果您更喜欢其他参数,可以找到列表here