从 UMDF 驱动程序调用创建文件时出现'Access is denied'错误 (C++)

'Access is denied' error when calling CreateFile from a UMDF driver (C++)

本文关键字:denied is Access 错误 C++ UMDF 驱动程序 文件 创建 调用      更新时间:2023-10-16

我正在创建一个umdf驱动程序,它需要更改LCD后光的亮度。

以下代码在控制台应用程序中起作用,并成功地将句柄返回到设备:

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机器上进行远程调试。

有人知道问题可能是什么吗?我需要设置权限,如果是的话,如何?

听起来好像您需要模仿驱动程序客户。

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

该框架提供了一个模仿能力,可允许驾驶员 冒充驾驶员的客户并获取客户的访问权限 受保护资源的权利。