функция обратного вызова 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 выделяет область контекста для клиента и вызывает NdisClOpenAddressFamilyEx с указателем AddressFamily . Если этот вызов выполнен успешно, клиент зарегистрировал свои функции ProtocolClXxx в NDIS для последующих операций, ориентированных на подключение, с помощью служб этого диспетчера вызовов.

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

Если он принимает входящие вызовы, client's ProtocolCoAfRegisterNotify илиФункция ProtocolClOpenAfCompleteEx обычно регистрирует одну или несколько SSP в диспетчере вызовов. После открытия 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