我正在为基于USB的硬件编写Ndis 6微型端口802.11驱动程序。设备工作正常 - 当我安装驱动程序时,它工作正常。但是,如果我禁用然后从控制面板启用接口,则不会调用initializeHandler。残疾人工作得非常好。当我启用接口时,驱动程序条目也会返回成功。
有人可以帮帮我吗?这是什么原因?
此致 Souvik
答案 0 :(得分:0)
通常这意味着之前的DEVICE_OBJECT
尚未完全删除。它的名称仍在使用中,因此新的DEVICE_OBJECT
无法注册具有该名称的新设备。
如果设备有打开的句柄,之前的设备可能会卡住。如果您有任何打开设备句柄的代码,则应确保它们已关闭。还要确保已释放微型端口分配的所有对象。例如,通过调用NdisAllocateTimerObject
来匹配对NdisFreeTimerObject
的来电。确保正在调用MiniportHaltEx
处理程序并返回。
此外,如果您附加了内核调试程序,则可以使用!ndiskd.miniport
检查情境。它将告诉您前一个微型端口是否仍然存在,如果存在,它将处于什么状态。