Функция 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) |