我编写了一个windows内核模式驱动程序来访问PCI Express板的内存空间,并且我能够使用CreateFile和DeviceIOControl函数与驱动程序的IO Control进行通信。除了用户应用程序需要以管理员权限运行这一事实外,一切看起来都很好,因为需要对PCI设备进行读/写访问。这在我的应用程序中是一个挑战,因为我不能指望我的用户在运行应用程序时拥有管理员权限。为了解决这个问题,我到目前为止提出了以下想法:
1)在驱动程序中创建命名管道并在用户应用程序中访问它但我不确定驱动程序是否可以访问用于创建和访问命名管道的Windows API。
2)创建一个以管理员权限运行的Windows服务,并成为用户应用程序和驱动程序之间的接口。虽然这很实用,但这种解决方案似乎有些过分。
我感谢对上述解决方案的任何评论以及与司机沟通的常见做法。
由于
答案 0 :(得分:3)
您的驱动程序可以为其创建的设备对象分配适当的权限。默认设置仅允许管理员将I / O控制请求发送到设备,但您可以根据需要对其进行配置。
标题为Securing Device Objects的MSDN部分涵盖了此内容。
答案 1 :(得分:1)
感谢大家提供您的意见。我需要在我的KMDF中使用WdfDeviceInitAssignSddlString
。此API指定访问驱动程序的I / O控制器所需的权限。