Поделиться через


Различия в инициализации

Диспетчер вызовов — это протокол NDIS; поэтому он следует последовательности инициализации для протокола, ориентированного на подключение, но с одним дополнительным шагом. В обработчике ProtocolBindAdapterEx сразу после выполнения шагов инициализации для протокола, ориентированного на подключение, диспетчер вызовов должен зарегистрировать семейство адресов, вызвав NdisCmRegisterAddressFamilyEx. Вызов NdisCmRegisterAddressFamilyEx, в котором диспетчер вызовов регистрирует свои функции диспетчера вызовов, определяет протокол в качестве диспетчера вызовов. Диспетчер вызовов должен зарегистрировать семейство адресов для каждого сетевого адаптера, к которому он привязывается.

Драйвер MCM является минипорт-драйвером; Поэтому он следует последовательности инициализации для драйвера минипорта, ориентированного на подключение, с добавлением следующего шага: драйвер MCM должен зарегистрировать семейство адресов, вызвав NdisMCmRegisterAddressFamilyEx в своей функции MiniportInitializeEx , сразу после завершения последовательности инициализации драйвера минипорта. Вызов NdisMCmRegisterAddressFamilyEx, в котором драйвер MCM регистрирует свои функции диспетчера вызовов, отличает драйвер MCM от обычного драйвера минипорта, ориентированного на подключение. Хотя драйвер MCM регистрирует свои обработчики минипорта только один раз во время инициализации путем вызова NdisMRegisterMiniportDriver, он должен вызывать NdisMCmRegisterAddressFamilyEx один раз для каждого сетевого адаптера, который он управляет.