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

Функция ProtocolCmCloseAf — это обязательная функция, которая освобождает открытые ресурсы для семейства адресов, которое поддерживает диспетчер вызовов.

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

Синтаксис

PROTOCOL_CM_CLOSE_AF ProtocolCmCloseAf;

NDIS_STATUS ProtocolCmCloseAf(
  [in] NDIS_HANDLE CallMgrAfContext
)
{...}

Параметры

[in] CallMgrAfContext

Указывает дескриптор контекстной области диспетчера вызовов по af, изначально предоставленной NDIS функцией ProtocolCmOpenAf диспетчера вызовов.

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

ProtocolCmCloseAf возвращает состояние своих операций как одно из следующих:

Код возврата Описание
NDIS_STATUS_SUCCESS
Указывает, что диспетчер вызовов успешно освободил или деактивировал все ресурсы, выделенные от имени клиента, ориентированного на подключение, который открыл этот экземпляр семейства адресов.
NDIS_STATUS_PENDING
Указывает, что запрос на закрытие открытого экземпляра семейства адресов будет выполнен асинхронно. Диспетчер вызовов должен вызвать NdisCmCloseAddressFamilyComplete , когда все такие операции завершены.

Комментарии

ProtocolCmCloseAf выпускает и (или) деактивирует все ресурсы, выделенные диспетчером вызовов в его функции ProtocolCmOpenAf . Диспетчер вызовов также должен отменить любые другие действия, выполненные от имени клиента, ориентированного на подключение, когда семейство адресов было открыто этим клиентом.

Если в семействе адресов, хранящейся в CallMgrAfContext, по-прежнему открыты какие-либо невыполненные запросы или подключения, диспетчер вызовов может ответить на запрос клиента о закрытии семейства адресов любым из следующих способов:

  • Диспетчер вызовов может завершить запрос с NDIS_STATUS_NOT_ACCEPTED.
  • Диспетчер вызовов может возвращать NDIS_STATUS_PENDING. После закрытия клиентом всех вызовов и отмены регистрации всех SSP диспетчер вызовов может закрыть семейство адресов и вызвать NdisCmCloseAddressFamilyComplete или NdisMCmCloseAddressFamilyComplete для уведомления клиента. Это предпочтительный ответ.

Примеры

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

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

PROTOCOL_CM_CLOSE_AF MyCmCloseAf;

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

_Use_decl_annotations_
NDIS_STATUS
 MyCmCloseAf(
    NDIS_HANDLE  CallMgrAfContext
    )
  {...}

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

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

Требования

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

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

NdisCmCloseAddressFamilyComplete

ProtocolCmOpenAf