从UMDF驱动程序调用CreateFile时出现“访问被拒绝”错误(C ++)

时间:2012-10-24 15:42:26

标签: c++ windows-7 driver createfile umdf

我正在创建一个需要改变LCD背光亮度的UMDF驱动程序。

以下代码行在Console App中工作,并成功返回设备的句柄:

HANDLE hDevice = CreateFile(L"\\\\.\\LCD", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0);

但是,当我在驱动程序中使用完全相同的代码时,它返回INVALID_HANDLE_VALUE,GetLastError()给出代码5,即“访问被拒绝”

使用标准WDKRemoteUser配置文件在x64 Windows 7计算机上远程调试驱动程序。

有谁知道问题可能是什么?我是否需要设置权限,如果需要,如何设置权限?

1 个答案:

答案 0 :(得分:1)

听起来好像需要impersonate the drivers client.

  

UMDF驱动程序通常在LocalService帐户下运行,但不能   访问需要用户凭据的文件或资源,例如   受保护的文件或其他受保护资源通常是UMDF驱动程序   对在客户端应用程序之间流动的命令和数据进行操作   和一个设备。因此,大多数UMDF驱动程序不访问受保护的   资源。

     

该框架提供了允许驱动程序的模拟功能   模仿驱动程序的客户端并获取客户端的访问权限   对受保护资源的权利。