функция обратного вызова PROTOCOL_CO_AF_REGISTER_NOTIFY (ndis.h)

Функция ProtocolCoAfRegisterNotify используется клиентами NDIS, ориентированными на подключение. Все клиенты NDIS, ориентированные на подключение, должны иметь полностью функциональные функции ProtocolCoAfRegisterNotify . Автономные диспетчеры вызовов, ориентированные на подключение, зарегистрировали функции ProtocolCoAfRegisterNotify , которые просто возвращают управление.

Примечание Необходимо объявить функцию с помощью типа PROTOCOL_CO_AF_REGISTER_NOTIFY . Дополнительные сведения см. в следующем разделе "Примеры".
 

Синтаксис

PROTOCOL_CO_AF_REGISTER_NOTIFY ProtocolCoAfRegisterNotify;

VOID() ProtocolCoAfRegisterNotify(
  [in] NDIS_HANDLE ProtocolBindingContext,
  [in] PCO_ADDRESS_FAMILY AddressFamily
)
{...}

Параметры

[in] ProtocolBindingContext

Указывает дескриптор выделенной клиентом области контекста, в которой клиентский протокол поддерживает состояние времени выполнения для каждой привязки. Функция ProtocolBindAdapterEx клиента предоставила этот дескриптор при вызове NdisOpenAdapterEx.

[in] AddressFamily

Указатель на буфер, описывающий поддержку протокола сигнализации, предоставляемую диспетчером вызовов, который только что зарегистрировал эти службы в NDIS путем вызова NdisCmRegisterAddressFamilyEx или NdisMCmRegisterAddressFamilyEx.

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

None

Remarks

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

ProtocolCoAfRegisterNotify проверяет данные в AddressFamily , чтобы определить, может ли клиент использовать службы этого конкретного диспетчера вызовов. Указывает, может ли клиент вносить изменения в предоставленные данными (M)CM в AddressFamily , зависит от конкретной поддержки протокола сигнализации диспетчера вызовов.

Если клиент обнаружит, что предлагаемые службы управления вызовами неприемлемы, ProtocolCoAfRegisterNotify возвращает управление, и NDIS может снова вызвать ProtocolCoAfRegisterNotify с тем же дескриптором ProtocolBindingContext и спецификацией AF, предоставленной этим или другим диспетчером вызовов, также привязанным к тому же базовому драйверу минипорта. В противном случае ProtocolAfRegisterNotify выделяет контекстную область для каждого AF для клиента и вызывает NdisClOpenAddressFamilyEx с указателем AddressFamily . Если этот вызов выполнен успешно, клиент зарегистрировал свои функции ProtocolClXxx в NDIS для последующих операций, ориентированных на подключение, с помощью служб диспетчера вызовов.

Например, ProtocolCoAfRegisterNotify или ProtocolClOpenAfCompleteEx может вызвать NdisInitializeNPagedLookasideList один или несколько раз при подготовке к динамическим выделениям и выпускам областей контекста для sap, per-VC и (или) отдельных сторон, которые клиент будет нуждаться впоследствии.

Если он принимает входящие вызовы, клиент ProtocolCoAfRegisterNotify илиФункция ProtocolClOpenAfCompleteEx обычно регистрирует одну или несколько SAP в диспетчере вызовов. После открытия af диспетчера вызовов клиент может перейти к выделению области состояния sap и вызвать NdisClRegisterSap один или несколько раз с NdisAfHandle , полученной из NdisClOpenAddressFamilyEx. Если он выполняет исходящие вызовы, клиент может перейти к выделению области состояния для каждого VC и создать VC с NdisCoCreateVc в ожидании входящего запроса от одного из своих собственных клиентов, чтобы выполнить исходящий вызов на удаленный узел.

Примеры

Чтобы определить функцию ProtocolCoAfRegisterNotify , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средства проверки статических драйверов (SDV) и других средств проверки найти ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить функцию ProtocolCoAfRegisterNotify с именем MyCoAfRegisterNotify , используйте тип PROTOCOL_CO_AF_REGISTER_NOTIFY , как показано в этом примере кода:

PROTOCOL_CO_AF_REGISTER_NOTIFY MyCoAfRegisterNotify;

Затем реализуйте функцию следующим образом:

_Use_decl_annotations_
VOID
 MyCoAfRegisterNotify(
    NDIS_HANDLE  ProtocolBindingContext,
    PCO_ADDRESS_FAMILY  AddressFamily
    )
  {...}

Тип функции PROTOCOL_CO_AF_REGISTER_NOTIFY определен в файле заголовка Ndis.h. Чтобы точнее определить ошибки при запуске средств анализа кода, обязательно добавьте в определение функции заметку Use_decl_annotations . Заметка Use_decl_annotations гарантирует использование заметок, применяемых к типу функции PROTOCOL_CO_AF_REGISTER_NOTIFY в файле заголовка. Дополнительные сведения о требованиях для объявлений функций см. в разделе "Объявление функций с помощью типов ролей функций для драйверов NDIS".

Сведения о Use_decl_annotations см. в разделе "Поведение функции аннотирования".

Требования

   
Минимальная версия клиента Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. Протокол ProtocolCoAfRegisterNotify (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. протокол ProtocolCoAfRegisterNotify (NDIS 5.1)) в Windows XP.
Целевая платформа Windows
Header ndis.h (включая Ndis.h)
IRQL PASSIVE_LEVEL

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

CO_ADDRESS_FAMILY

NdisClOpenAddressFamilyEx

NdisClRegisterSap

NdisCmRegisterAddressFamilyEx

NdisCoCreateVc

NdisInitializeNPagedLookasideList NdisMCmRegisterAddressFamilyEx

NdisOpenAdapterEx

ProtocolBindAdapterEx

ProtocolClOpenAfCompleteEx