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


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

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

Синтаксис

NDIS_STATUS NdisClCloseAddressFamily(
  [in] NDIS_HANDLE NdisAfHandle
);

Параметры

[in] NdisAfHandle

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

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

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

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

Замечания

Клиент обычно вызывает NdisCloseAddressFamily из нее
функция ProtocolUnbindAdapterEx после закрытия всех открытых виртуальных машин клиента в привязке с вызовами NdisCloseCall и/или NdisClDeregisterSap. Клиент также может вызывать NdisCloseAddressFamily в контексте обработки запрос NdisCmNotifyCloseAddressFamily.

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

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

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

Перед вызовом NdisCloseAddressFamilyклиент может использовать NdisAfHandle во время открытия или в то время как af операция 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 (include Ndis.h)
библиотеки Ndis.lib
IRQL <= DISPATCH_LEVEL
правил соответствия DDI Irql_Protocol_Driver_Function(ndis)

См. также

NdisCloseCall

NdisClDeregisterSap

NdisClOpenAddressFamilyEx

ProtocolCloseAfComplete

ProtocolCmCloseAf

ProtocolCoAfRegisterNotify

ProtocolUnbindAdapterEx