функция обратного вызова PROTOCOL_CO_AF_REGISTER_NOTIFY (ndis.h)
Функция ProtocolCoAfRegisterNotify используется клиентами NDIS, ориентированными на подключение. Все клиенты NDIS, ориентированные на подключение, должны иметь полнофункциональные функции ProtocolCoAfRegisterNotify . Автономные диспетчеры вызовов, ориентированные на подключение, имеют зарегистрированные функции ProtocolCoAfRegisterNotify , которые просто возвращают управление.
Синтаксис
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 |
См. также раздел
NdisCmRegisterAddressFamilyEx NdisInitializeNPagedLookasideList NdisMCmRegisterAddressFamilyExОбратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по