Функция NdisCmRegisterAddressFamilyEx (ndis.h)

Функция NdisCmRegisterAddressFamilyEx регистрирует семейство адресов (AF) для связи между драйверами CoNDIS.

Синтаксис

NDIS_STATUS NdisCmRegisterAddressFamilyEx(
  [in] NDIS_HANDLE        NdisBindingHandle,
  [in] PCO_ADDRESS_FAMILY AddressFamily
);

Параметры

[in] NdisBindingHandle

Дескриптор, предоставленный NDIS в параметре NdisBindingHandle функции NdisOpenAdapterEx. Этот дескриптор идентифицирует привязку, связанную с AF.

[in] AddressFamily

Указатель на структуру CO_ADDRESS_FAMILY, которая определяет диспетчер вызовов и AF, которые он поддерживает для привязки, которая указывает NdisBindingHandle.

Указатель на AddressFamily становится входным параметром ProtocolCoAfRegisterNotify функции всех клиентов, привязанных к одному мини-адаптеру CoNDIS.

Возвращаемое значение

NdisCmRegisterAddressFamilyEx может вернуть любое из следующих элементов:

Возвращаемый код Описание
NDIS_STATUS_SUCCESS
Драйвер протокола зарегистрировал AF, на который AddressFamily указывает, поэтому NDIS вызовет Функции ProtocolCoAfRegisterNotify всех клиентов, которые привязывают себя к одному и тому же минипорту адаптера.
NDIS_STATUS_RESOURCES
Запрошенная операция завершилась ошибкой, так как NDIS не может выделить достаточно памяти или инициализировать состояние, используемое для отслеживания диспетчера вызовов или указанного AF.
NDIS_STATUS_FAILURE
NDIS не удалось вызвать NdisCmRegisterAddressFamilyEx, возможно, по одной из следующих причин:
  • Вызывающий объект не был зарегистрирован в качестве драйвера протокола, ориентированного на подключение.
  • Минипорт-драйвер, к которому привязан вызывающий объект, не зарегистрирован в качестве драйвера минипорта, ориентированного на подключение.
  • Другой диспетчер вызовов уже зарегистрировал указанный AF.
  • Привязка вызывающего абонента закрывается.

Замечания

Автономные диспетчеры вызовов NDIS, которые регистрируются в качестве драйверов протокола NDIS путем вызова функция NdisRegisterProtocolDriver должна вызывать функцию NdisCmRegisterAddressFamilyEx для регистрации AF. Диспетчеры вызовов мини-порта (MCM) должны вместо этого вызвать функции NdisMCmRegisterAddressFamilyEx.

Чтобы зарегистрировать AF для привязки, автономный диспетчер вызовов должен вызывать NdisCmRegisterAddressFamilyEx из функция ProtocolBindAdapterEx.

Функция диспетчера вызовов ProtocolBindAdapterEx сначала устанавливает привязку к базовому драйверу минипорта, вызвав функцию NdisOpenAdapterEx. Каждый раз, когда NDIS вызывает ProtocolBindAdapterEx с другим дескриптором в параметре BindContext, ProtocolBindAdapterEx устанавливает привязку и регистрирует функцию AF, которую она поддерживает. Другими словами, автономный диспетчер вызовов в конечном итоге регистрирует AF для каждой привязки, в которой она предоставляет службы управления вызовами для клиентов, ориентированных на подключение.

Диспетчер вызовов может поддерживать несколько AF и может поддерживать несколько AF для одной привязки. Однако только один диспетчер звонков может поддерживать заданный AF для клиентов, привязанных к заданному адаптеру минипорта.

Когда функция диспетчера вызовов ProtocolBindAdapterEx возвращает контроль после успешной операции привязки, NDIS вызывает Функции ProtocolCoAfRegisterNotify всех клиентов, привязанных к одному и тому же минипорту.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Поддерживается в NDIS 6.0 и более поздних версиях.
целевая платформа Настольный
заголовка ndis.h (include Ndis.h)
библиотеки Ndis.lib
IRQL PASSIVE_LEVEL
правил соответствия DDI Irql_CallManager_Function(ndis)

См. также

CO_ADDRESS_FAMILY

NdisMCmRegisterAddressFamilyEx

NdisOpenAdapterEx

NdisRegisterProtocolDriver

ProtocolBindAdapterEx

ProtocolCoAfRegisterNotify