2010-05-04 126 views
1

我們編寫了Windows設備驅動程序來訪問我們的自定義PCI卡。該驅動程序使用CreateFile來獲取卡的句柄。驅動程序拒絕訪問PCI卡

我們最近遇到了麻煩,一次安裝卡似乎停止工作。我們嘗試更換卡(更換似乎不工作)。計算機供應商更換了主板,兩張卡仍然無法工作。我們把這些卡放在另一臺電腦上,兩者都很好。

我們現在有電腦在我們的辦公室進行檢查。 Windows設備管理器像往常一樣列出我們的卡在其他設備,並說它工作正常。但是,當它嘗試連接到卡時,我們的驅動程序初始化失敗。

我們通過一些額外的調試創建了驅動程序的測試版本,並確定CreateFile失敗。它會在失敗時返回INVALID_HANDLE_VALUE。 GetLastError指示錯誤是訪問被拒絕。

由於我們以本地管理員身份登錄系統,因此可以拒絕對設備的訪問?

回答

1

您可能想嘗試Windows內核的「Checked」版本。這是一個調試版本,它具有通過調試通道提供的更多診斷信息。上次我使用了一個(幾年前),該構建在MSDN上可用,但我的信息可能已過時。

1

這聽起來不像設備驅動程序,CreateFile()僅適用於常規的Win32應用程序。這也符合錯誤,設備驅動程序不受像Win32應用程序那樣的安全限制。

是的,您可能無法打開使用CreateFile()的設備的句柄。我認爲用戶帳戶至少需要擁有SE_BACKUP_PRIVILEGE。 Vista中也有更改,請查看CreateFile docs,規則中的「物理磁盤和卷」部分。找到可以告訴您如何編輯帳戶權限的安全權威的最佳位置是serverfault.com

+0

好的,稍微搜索一下SE_BACKUP_PRIVILEGE是什麼,表明多個策略設置與它有關。對於所有提到的,我們都有權限。 另外我只是在serverfault上發佈了這個問題。我們會看到他們提出了什麼。 – Corin 2010-05-05 16:34:00