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

Функция ProtocolClNotifyCloseAf уведомляет клиента CoNDIS о том, что клиент должен закрыть связанное семейство адресов (AF).

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

Синтаксис

PROTOCOL_CL_NOTIFY_CLOSE_AF ProtocolClNotifyCloseAf;

NDIS_STATUS ProtocolClNotifyCloseAf(
  [in] NDIS_HANDLE ClientAfContext
)
{...}

Параметры

[in] ClientAfContext

Предоставленный клиентом дескриптор контекстной области для связанного af. Клиент выделил эту область контекста и передал этот дескриптор в NDIS в вызовеФункция NdisClOpenAddressFamilyEx.

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

ProtocolClNotifyCloseAf может возвращать одно из следующих элементов:

Код возврата Описание
NDIS_STATUS_SUCCESS
Клиент успешно закрыл семейство адресов.
NDIS_STATUS_PENDING
Клиент обрабатывает этот запрос асинхронно и вызываетФункция NdisClNotifyCloseAddressFamilyComplete по завершении операции закрытия.
NDIS_STATUS_XXX
Клиент не выполнил запрос по определенной драйверу причине.

Комментарии

TheДля клиентов CoNDIS требуется функция ProtocolClNotifyCloseAf. NDIS вызывает ProtocolClNotifyCloseAf , когда диспетчер вызовов уведомляет NDIS о том, что семейство адресов (AF), указанное параметром ProtocolAfContext , должно быть закрыто. В ответ клиент должен:

  1. Вызывайте функцию NdisClDropParty столько раз, сколько необходимо, пока только одна сторона не останется активной в каждом многоточеичном виртуальном подключении ( VC), если у клиента есть какие-либо активные многоточечные подключения.
  2. Вызовите функцию NdisClCloseCall столько раз, сколько необходимо, чтобы закрыть все вызовы, которые все еще открыты и связаны с AF.
  3. Вызовите функцию NdisClDeregisterSap столько раз, сколько необходимо, чтобы отменить регистрацию всех точек доступа к службам (SAP), зарегистрированных клиентом в диспетчере вызовов.
  4. ВызовитеФункция NdisClCloseAddressFamily для закрытия af.
Клиент может выполнять эти действия асинхронно, возвращая NDIS_STATUS_PENDING. Если клиент завершает вызов асинхронно, он должен впоследствии вызватьФункция NdisClNotifyCloseAddressFamilyComplete по завершении операции закрытия. Если клиент не возвращает NDIS_STATUS_PENDING, операция закрытия завершается, когда Функция ProtocolClNotifyCloseAf возвращает значение .

NDIS вызывает ProtocolClNotifyCloseAf по адресу IRQL <= DISPATCH_LEVEL.

Клиент может использовать NdisAfHandle , когда af is open or whileОперация ProtocolClNotifyCloseAf ожидается. Если Функция ProtocolClNotifyCloseAf возвращает NDIS_STATUS_PENDING, используйте дескриптор в Вызов NdisClNotifyCloseAddressFamilyComplete после завершения операции закрытия.

Примеры

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

Например, чтобы определить функцию ProtocolClNotifyCloseAf с именем MyClNotifyCloseAf, используйте тип PROTOCOL_CL_NOTIFY_CLOSE_AF , как показано в следующем примере кода:

PROTOCOL_CL_NOTIFY_CLOSE_AF MyClNotifyCloseAf;

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

_Use_decl_annotations_
NDIS_STATUS
 MyClNotifyCloseAf(
    NDIS_HANDLE  ProtocolAfContext
    )
  {...}

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

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

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Windows
Header ndis.h (включая Ndis.h)
IRQL <= DISPATCH_LEVEL

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

NdisClCloseAddressFamily

NdisClCloseCall

NdisClDeregisterSap

NdisClDropParty

NdisClNotifyCloseAddressFamilyComplete

NdisClOpenAddressFamilyEx