您可以在WDF驱动程序的设备配置函数(例如EvtDeviceAdd)中调用WdfDeviceInitAssignName函数,并在该函数的第三个参数中传递一个文件访问权限,如下所示:
WdfDeviceInitAssignName(DeviceInit, &deviceName, FILE_ATTRIBUTE_NORMAL);
这样就可以使应用程序不需要管理员权限就可以打开设备了。
如果你想使用WDF_DEVICE_IO_TYPE_BUFFERED或WDF_DEVICE_IO_TYPE_DIRECT可以在调用WdfDeviceCreate(设备工厂函数)的时候设置对应的参数。
WdfDeviceCreate(&deviceInit, WDF_NO_OBJECT_ATTRIBUTES, &device);
WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE(&ioQueueConfig, WdfIoQueueDispatchSequential);
ioQueueConfig.EvtIoDeviceControl = EvtIoDeviceControl;
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.SynchronizationScope = WdfSynchronizationScopeDevice;
WdfIoQueueCreate(device, &ioQueueConfig, &attributes, &queue);
这样就可以使用WDF_DEVICE_IO_TYPE_BUFFERED或WDF_DEVICE_IO_TYPE_DIRECT模式。