1

我们编写了一个 Windows 设备驱动程序来访问我们的定制 PCI 卡。驱动程序使用 CreateFile 来获取卡的句柄。

我们最近在一次安装中遇到了麻烦,因为该卡似乎停止工作。我们尝试更换卡(更换似乎也不起作用)。计算机供应商更换了主板,但两张卡仍然无法工作。我们把卡片放在另一台电脑上,都运行良好。

我们现在办公室里有电脑供检查。Windows 设备管理器照常在其他设备中列出我们的卡,并表示它工作正常。但是,当它尝试连接到卡时,我们的驱动程序初始化失败。

我们通过一些额外的调试创建了驱动程序的测试版本,并确定 CreateFile 失败。它返回 INVALID_HANDLE_VALUE,因为它应该在失败时返回。GetLastError 指示错误是访问被拒绝。

既然我们是以本地管理员的身份登录系统的,那么什么可以拒绝访问设备呢?

4

2 回答 2

1

这听起来不像是设备驱动程序,CreateFile() 仅在常规 Win32 应用程序中可用。这也符合错误,设备驱动程序不受 Win32 应用程序那样的安全限制。

是的,您可能无法使用 CreateFile() 打开设备句柄。我认为用户帐户至少需要有 SE_BACKUP_PRIVILEGE。Vista 中也有更改,请查看CreateFile 文档的“物理磁盘和卷”部分以了解规则。找到可以向您展示如何编辑帐户权限的安全专家的最佳位置是 serverfault.com

于 2010-05-04T21:57:31.313 回答
1

您可能想尝试使用 Windows 内核的“已检查”版本。这是一个调试版本,可通过调试通道获得更多诊断信息。上次我使用一个(几年前)时,该版本在 MSDN 上可用,但我的信息可能已经过时了。

于 2010-05-04T21:35:31.893 回答