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


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

NdisCloseAddressFamily освобождает связь между клиентским протоколом и зарегистрированной AF диспетчера вызовов или драйвера MCM для определенной сетевой карты, к которой привязан клиент.

Синтаксис

NDIS_STATUS NdisClCloseAddressFamily(
  [in] NDIS_HANDLE NdisAfHandle
);

Параметры

[in] NdisAfHandle

Указывает предоставленный NDIS-дескриптор, возвращаемый NdisClOpenAddressFamilyEx.

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

When NdisCloseAddressFamily возвращает что-либо, кроме NDIS_STATUS_PENDING, клиент должен выполнить внутренний вызов Функция ProtocolCloseAfComplete . В противном случае NDIS вызывает клиент Функция ProtocolCloseAfComplete после завершения этой операции.

If NdisCloseAddressFamily возвращает NDIS_STATUS_PENDING клиента, который ожидает егоВызываемая функция ProtocolCloseAfComplete не должна блокировать текущий поток, так как это может привести к взаимоблокировке. Это особенно важно, когда клиент вызывает NdisCloseAddressFamily в контексте обработки Запрос NdisCmNotifyCloseAddressFamily . В этом случае диспетчер вызовов не может закрыть семейство адресов до тех пор, пока клиент не вернется из обработки запроса NdisCmNotifyCloseAddressFamily . Если клиент блокирует текущий поток, клиент никогда не завершит обработку запроса NdisCmNotifyCloseAddressFamily , что приведет к взаимоблокировке.

Комментарии

Клиент обычно вызывает NdisCloseAddressFamily из своей
Функция ProtocolUnbindAdapterEx после закрытия всех открытых виртуальных машин клиента в привязке с помощью вызовов NdisClCloseCall и (или) NdisClDeregisterSap. Клиент также может вызвать NdisCloseAddressFamily в контексте обработки Запрос NdisCmNotifyCloseAddressFamily .

NDIS вызывает клиент Функция ProtocolUnbindAdapterEx при удалении с компьютера или перенастройке базового сетевого адаптера, к которому привязан этот клиент. Перенастройка PnP базового драйвера мини-порта приводит к тому, что диспетчер вызовов или драйвер MCM перерегистрирует семейство адресов, которое он поддерживает для этого сетевого адаптера. Это, в свою очередь, вызывает последующий вызов клиента Функция ProtocolCoAfRegisterNotify . В обоих случаях клиентФункция ProtocolUnbindAdapterEx должна вызывать NdisCloseAddressFamily с любым текущим NdisAfHandle, который зависит от базового драйвера минипорта.

В качестве общего руководства клиент должен освободить все ресурсы, выделенные для связи, ориентированной на подключение, через драйвер мини-порта до его Функция ProtocolUnbindAdapterEx вызывает NdisCloseAdapterEx.

NdisAfHandle, переданный в NdisCloseAddressFamily, становится недопустимым для клиента сразу после этого вызова.

Перед вызовом NdisCloseAddressFamily клиент может использовать NdisAfHandle , когда af is open or while aОперация ProtocolClNotifyCloseAf ожидается. Если Функция ProtocolClNotifyCloseAf возвращает NDIS_STATUS_PENDING, используйте дескриптор в Вызов NdisClNotifyCloseAddressFamilyComplete после завершения операции закрытия.

Требования

Требование Значение
Минимальная версия клиента Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. раздел NdisCloseAddressFamily (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. раздел NdisCloseAddressFamily (NDIS 5.1)) в Windows XP.
Целевая платформа Персональный компьютер
Верхняя часть ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI Irql_Protocol_Driver_Function(ndis)

См. также раздел

NdisClCloseCall

NdisClDeregisterSap

NdisClOpenAddressFamilyEx

ProtocolCloseAfComplete

ProtocolCmCloseAf

ProtocolCoAfRegisterNotify

ProtocolUnbindAdapterEx