2011-12-09 27 views
0

我正在爲基於USB的硬件編寫Ndis 6 miniport 802.11驅動程序。該設備工作正常 - 面對我安裝驅動程序時,它工作正常。但是,如果我禁用,然後啓用控制面板接口initializeHandler不beeing調用。禁用工作得很好。當我啓用接口時,驅動程序條目也會返回成功。當禁用和啓用時,不會調用Miniport驅動程序的InitializeHandler接口

有人能幫我嗎?這是什麼原因呢?

問候, Souvik

回答

0

通常這意味着先前的DEVICE_OBJECT還尚未完全刪除。其名稱仍在使用中,因此新的DEVICE_OBJECT無法註冊具有該名稱的新設備。

如果設備打開手柄,則上一個設備可能會卡住。如果您有任何打開設備手柄的代碼,則應確保它們關閉。還要確保你已經釋放了你的微型端口分配的所有對象。例如,將呼叫與NdisAllocateTimerObject進行匹配,並呼叫NdisFreeTimerObject。確保您的MiniportHaltEx處理程序正在被調用並返回。另外,如果您連接了內核調試程序,則可以使用!ndiskd.miniport檢查情況。它會告訴你,如果以前的微型端口仍然存在,如果是這樣,它是在什麼狀態。

+0

非常感謝您的答覆。我的代碼中使用了一些定時器,但它們是使用WdfTimerCreate創建的。這種計時器是否需要釋放?我正在檢查DDK示例代碼 - 它們只在WDFTIMER上執行TimerCreate/start/stop。另外,我可以在WDFTIMER未啓動時停止嗎?如果我在不停止的情況下啓動WDFTIMER,是否會有任何問題?我的MpHalt例程成功返回。即使我觀察到DriverEntry被調用,並在我重新啓用接口時返回了STATUS_SUCCESS。 – Souvik

相關問題