Обычно это означает, что предыдущий DEVICE_OBJECT
еще не был полностью удален. Его имя все еще используется, поэтому новый DEVICE_OBJECT
не может зарегистрировать новое устройство с таким именем.
Предыдущее устройство может застрять, если на устройстве есть открытые ручки. Если у вас есть какой-либо код, открывающий дескрипторы устройства, вы должны убедиться, что они закрыты. Также убедитесь, что у вас есть все объекты, которые выделяет ваш минипорт. Например, сопоставить звонки на NdisAllocateTimerObject
с звонками на NdisFreeTimerObject
. Убедитесь, что ваш обработчик MiniportHaltEx
вызывается и возвращается.
Кроме того, если у вас подключен отладчик ядра, вы можете проверить ситуацию с помощью !ndiskd.miniport
. Он сообщит вам, если предыдущий минипорт все еще присутствует, и если да, то в каком он состоянии.