我正在编写一个驱动程序,通过注册EvtIoDeviceControl来侦听特定设备上的请求。

DF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE(&IoCallbacks, WdfIoQueueDispatchParallel);
IoCallbacks.PowerManaged = WdfFalse;
IoCallbacks.EvtIoDeviceControl = EvtIoDeviceControlCallback;


在Windows 10(KMDF 1.21)上,我可以使用WdfRequestGetRequestorProcessId来获取在EvtIoDeviceControlCallback中发出请求的进程的进程ID,但是我很难找到一种方法来执行此早期版本的KMDF。有见识吗?

最佳答案

您可以使用WdfRequestWdmGetIrp(最低KMDF版本1.0)和IoGetRequestorProcessId

所以简单地使用

ULONG WdfRequestGetRequestorProcessId_1_0(WDFREQUEST Request)
{
    return IoGetRequestorProcessId(WdfRequestWdmGetIrp(Request));
}

10-08 11:55