【问题标题】:Driver denied access to PCI card驱动程序拒绝访问 PCI 卡
【发布时间】:2010-05-04 21:29:54
【问题描述】:

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

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

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

我们创建了一个测试版本的驱动程序,并进行了一些额外的调试,并确定 CreateFile 失败。它返回 INVALID_HANDLE_VALUE,因为它应该在失败时返回。 GetLastError 表示错误是 Access is Denied。

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

【问题讨论】:

    标签: c++ windows device-driver


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 好吧,稍微搜索一下 SE_BACKUP_PRIVILEGE 是什么,表明有多个策略设置与之相关。对于所有提到的,我们确实获得了许可。我也刚刚在服务器故障上发布了这个问题。我们会看看他们想出什么。
      猜你喜欢
      • 1970-01-01
      • 2017-10-06
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 2017-01-23
      • 2016-04-26
      • 2020-10-17
      相关资源
      最近更新 更多