InitializeHandler драйвера минипорта не вызывается при отключенном и включенном интерфейсе
Я пишу драйвер NDIS 6 минипорт 802.11 для USB-оборудования. Устройство работает нормально - в лицо при установке драйвера работает нормально. Но если я отключаю, а затем включаю интерфейс с панели управления, initializeHandler не вызывается. Disabled работает отлично. Когда я включаю интерфейс, запись драйвера также возвращает успех.
Кто-нибудь может помочь мне? Что было бы причиной этого?
С уважением, Souvik
1 ответ
Обычно это означает, что предыдущий DEVICE_OBJECT
еще не был полностью удален. Его название все еще используется, поэтому новый DEVICE_OBJECT
не может зарегистрировать новое устройство с таким именем.
Предыдущее устройство может застрять, если к устройству открыты ручки. Если у вас есть какой-либо код, открывающий дескрипторы устройства, вы должны убедиться, что они закрыты. Также убедитесь, что у вас есть все объекты, которые выделяет ваш минипорт. Например, сопоставить звонки с NdisAllocateTimerObject
с звонками в NdisFreeTimerObject
, Убедитесь, что ваш MiniportHaltEx
вызывается обработчик и он возвращается.
Кроме того, если у вас есть отладчик ядра, вы можете проверить ситуацию с !ndiskd.miniport
, Он сообщит вам, если предыдущий минипорт все еще присутствует, и если да, то в каком он состоянии.