我正在创建一个需要改变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计算机上远程调试驱动程序。
有谁知道问题可能是什么?我是否需要设置权限,如果需要,如何设置权限?
答案 0 :(得分:1)
听起来好像需要impersonate the drivers client.
UMDF驱动程序通常在LocalService帐户下运行,但不能 访问需要用户凭据的文件或资源,例如 受保护的文件或其他受保护资源通常是UMDF驱动程序 对在客户端应用程序之间流动的命令和数据进行操作 和一个设备。因此,大多数UMDF驱动程序不访问受保护的 资源。
该框架提供了允许驱动程序的模拟功能 模仿驱动程序的客户端并获取客户端的访问权限 对受保护资源的权利。