2011-03-18 90 views
0

我想開發一個NDIS過濾器驅動程序。但是,我似乎無法加載它。 我有debugtestsigning啓動選項啓用;我的驅動程序已經過測試簽名,證書已加載到roottrustedpublisher商店中。NDIS過濾器驅動程序不加載在Windows 2008 R2

我啓用testsigning之前,我的司機會在ntbootlog.txt顯示爲

沒有加載驅動程序\ systemroot \ System32中\ DRIVERS \ mydriver.sys

我啓用testsigning後,司機根本沒有出現。然而,它在界面屬性中提出。即使我的驅動程序目前是一個非常小的pass-through NDIS過濾器驅動程序,直到我禁用了我的過濾器,該界面都會中斷。當我禁用我的過濾器時,再次正常工作。

該驅動程序未在windbg的模塊列表中列出,但其列在「未加載模塊」列表中,這表明驅動程序已在某個時間加載。 我的驅動程序在DriverEntryDriverUnload以及所有必需的NDIS掛鉤期間都會生成一些輸出。這個輸出沒有出現在windbg的!dbgprint中,這表明驅動程序的DriverEntry從未被調用過。

我很茫然如何調試這個問題;任何人都可以給我一些關於這裏可能發生的事情的提示嗎?

我正在使用Windows 2008 R2 DataCenter,檢查構建。我目前僅限於一臺機器設置。

+0

從示例驅動程序開始解決了我的問題。 下面的所有答案似乎假設驅動程序條目被調用,而這顯然不是這種情況 – Ondergetekende 2011-03-31 11:10:21

回答

0

嘗試首先加載一個簡單的驅動程序,該驅動程序只在DriverEntry中打印一個跟蹤字符串,測試它的簽名並加載它。如果你看到蹤跡,我們會試着瞭解你的特定駕駛員有什麼問題。如果沒有,可能是系統禁用了內核跟蹤,並且由於問題導致您的NDIS驅動程序未加載,因爲系統跟蹤已禁用,所以您當然不會看到這個問題。

+0

我正在編寫調試消息作爲DriverEntry中的第一件事。它不會顯示在dbgprint緩衝區中。 – Ondergetekende 2011-03-20 17:35:06

+1

默認情況下,在Vista/Server2008中禁用DbgPrint()輸出。您可以按照註冊表中的以下設置啓用調試打印。 打開註冊表並轉到此路徑「HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Debug Print Filter」並添加以下值「DEFAULT」:REG_DWORD:0xFFFFFFFF,然後重新啓動。如果不存在,您可能必須創建「調試打印過濾器」鍵。 – MindBlower 2011-04-02 08:47:12

0

如果驅動程序顯示在未加載的模塊列表中,則它已加載。

如果您使用DbgPrint請確保您閱讀MSDN文檔,特別是關於過濾的部分。

要趕上驅動程序加載,您可以使用sxe ld:mydriver這將允許您在您的驅動程序條目中設置斷點。另一種簡單的調試方法是在DriverEntry中添加一個硬編碼的斷點DbgBreakPoint()

相關問題