функция обратного вызова PROTOCOL_CM_CLOSE_AF (ndis.h)
Функция ProtocolCmCloseAf — это обязательная функция, которая освобождает открытые ресурсы для семейства адресов, которое поддерживает диспетчер вызовов.
Синтаксис
PROTOCOL_CM_CLOSE_AF ProtocolCmCloseAf;
NDIS_STATUS ProtocolCmCloseAf(
[in] NDIS_HANDLE CallMgrAfContext
)
{...}
Параметры
[in] CallMgrAfContext
Указывает дескриптор контекстной области диспетчера вызовов по af, изначально предоставленной NDIS функцией ProtocolCmOpenAf диспетчера вызовов.
Возвращаемое значение
ProtocolCmCloseAf возвращает состояние своих операций как одно из следующих:
Код возврата | Описание |
---|---|
|
Указывает, что диспетчер вызовов успешно освободил или деактивировал все ресурсы, выделенные от имени клиента, ориентированного на подключение, который открыл этот экземпляр семейства адресов. |
|
Указывает, что запрос на закрытие открытого экземпляра семейства адресов будет выполнен асинхронно. Диспетчер вызовов должен вызвать 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 |