驱动程序拒绝访问PCI卡

时间:2010-05-04 21:29:55

标签: c++ windows device-driver

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

我们最近在一次安装时遇到麻烦,卡片似乎停止工作。我们尝试更换卡(更换似乎不起作用)。计算机供应商更换了主板,两张卡仍无法正常工作。我们将这些卡放在另一台计算机上,两者都运行良好。

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

这听起来不像设备驱动程序,CreateFile()仅在常规Win32应用程序中可用。这也与错误相匹配,设备驱动程序不受Win32应用程序等安全限制。

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