Функция NdisClOpenAddressFamilyEx (ndis.h)
Функция NdisClOpenAddressFamilyEx регистрирует семейство адресов (AF), связанное с диспетчером вызовов для клиента, ориентированного на подключение.
Синтаксис
NDIS_STATUS NdisClOpenAddressFamilyEx(
[in] NDIS_HANDLE NdisBindingHandle,
[in] PCO_ADDRESS_FAMILY AddressFamily,
[in] NDIS_HANDLE ClientAfContext,
[out] PNDIS_HANDLE NdisAfHandle
);
Параметры
[in] NdisBindingHandle
Дескриптор, возвращающий NdisOpenAdapterEx, и определяющий целевой сетевой интерфейс карта (NIC) или виртуальный адаптер следующего ниже драйвера, к которому привязан вызывающий объект.
[in] AddressFamily
Указатель на структуру CO_ADDRESS_FAMILY , описывающую открываемую функцию диспетчера вызовов и af.
Этот указатель является входным параметром для клиента Функция ProtocolCoAfRegisterNotify , которая вызывает NdisClOpenAddressFamilyEx.
[in] ClientAfContext
Дескриптор предоставленной вызывающей абонентской области контекста, в которой клиент сохраняет состояние для этой af после открытия af. NDIS передает этот дескриптор обратно клиенту во всех последующих вызовах, относящихся к этой AF, если вызов NdisClOpenAddressFamilyEx выполнен успешно.
[out] NdisAfHandle
Указатель на переменную, предоставленную вызывающим абонентом, в которой NdisClOpenAddressFamilyEx возвращает дескриптор, представляющий только что открытое семейство адресов.
Возвращаемое значение
Когда NdisClOpenAddressFamilyEx возвращает что-либо, кроме NDIS_STATUS_PENDING, клиент должен выполнить внутренний вызов Функция ProtocolClOpenAfCompleteEx . В противном случае NDIS вызывает функцию ProtocolClOpenAfCompleteEx клиента после завершения этой операции.
Комментарии
Клиент CoNDIS вызывает NdisClOpenAddressFamilyEx из своего Функция ProtocolCoAfRegisterNotify после того, как клиент проверяет входной буфер, на который указывает параметр AddressFamily , чтобы определить, распознает ли клиент диспетчер вызовов и зарегистрированные адреса. NDIS перенаправит клиентский вызов NdisClOpenAddressFamilyEx в функцию ProtocolCmOpenAf диспетчера вызовов, которая гарантирует, что клиент прошел допустимую структуру AF.
Успешный вызов NdisClOpenAddressFamilyEx настраивает обмен данными между клиентом и диспетчером вызовов. Затем клиент может подготовиться к приему входящих вызовов, вызвав функцию NdisClRegisterSap . Клиент также может настроить виртуальное подключение (VC), вызвав функцию NdisCoCreateVc , чтобы он смог выполнить исходящий вызов, вызвав функцию NdisClMakeCall .
Если вызов клиента NdisClOpenAddressFamilyEx завершается сбоем, клиент должен вызвать функцию NdisUnbindAdapter , чтобы запросить NDIS для освобождения привязки к базовому адаптеру мини-порта. В противном случае клиент должен сохранить дескриптор, возвращаемый параметром NdisAfHandle . Этот дескриптор идентифицирует диспетчера вызовов, которому направляются последующие запросы, касающиеся заданного семейства адресов. Клиент должен рассматривать этот возвращенный дескриптор как непрозрачную переменную, передавая ее в неизмененных и неинтерпретированных в последующих вызовах функций NdisXxx .
NDIS передает указатель из параметра ClientAfContext зарегистрированным функциям Клиента ProtocolClXxx во всех последующих вызовах, которые относятся к AF, пока клиент не вызовет NdisCloseAddressFamily с тем же NdisAfHandle . После закрытия AF клиент может освободить или повторно использовать хранилище, выделенное в ClientAfContext .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается в NDIS 6.0 и более поздних версиях. |
Целевая платформа | Персональный компьютер |
Верхняя часть | ndis.h (включая Ndis.h) |
Библиотека | Ndis.lib |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | Irql_Protocol_Driver_Function(ndis) |