функция обратного вызова PROTOCOL_CL_CLOSE_AF_COMPLETE (ndis.h)
Функция ProtocolClcloseAfComplete используется клиентами NDIS, ориентированными на подключение. Все клиенты NDIS, ориентированные на подключение, должны иметь функции ProtocolClCloseAfComplete для выполнения асинхронных операций, которые они инициируют с помощью NdisClCloseAddressFamily.
Синтаксис
PROTOCOL_CL_CLOSE_AF_COMPLETE ProtocolClCloseAfComplete;
void ProtocolClCloseAfComplete(
[in] NDIS_STATUS Status,
[in] NDIS_HANDLE ProtocolAfContext
)
{...}
Параметры
[in] Status
Указывает окончательное состояние инициированного клиентом запроса на закрытие семейства адресов, которое может быть одним из следующих:
NDIS_STATUS_SUCCESS
Адресная семья была закрыта. NdisAfHandle, представляющий открытое семейство адресов, которое клиент хранит в своей области ProtocolAfContext, теперь является недопустимым.
NDIS_STATUS_FAILURE
Либо в af(s) есть связанные VC и (или) зарегистрированные SAP, которые клиент должен освободить перед попыткой закрыть af, либо клиент дважды вызвал NdisCloseAddressFamily , так как NDIS обнаружил, что состояние af был помечен как "закрытие".
[in] ProtocolAfContext
Указывает предоставленный клиентом дескриптор для его области контекста для каждой af-AF. Клиент первоначально настроил эту область контекста и передал этот дескриптор в NDIS с помощью NdisClOpenAddressFamilyEx.
Возвращаемое значение
None
Remarks
Убедившись, что у него нет незавершенных виртуальных машин и (или) зарегистрированных SSP в открытом семействе адресов, клиент вызывает NdisClCloseAddressFamily , чтобы удалить связь между собой, диспетчером вызовов и конкретной базовой сетевой картой. NDIS вызывает функцию ProtocolCmCloseAf для диспетчера вызовов, который этот клиент изначально использовал для открытия семейства адресов в качестве асинхронной операции. После вызова NdisClCloseAddressFamily клиент должен считать NdisAfHandle недопустимым .
Следовательно, клиент должен иметь функцию ProtocolClCloseAfComplete , которую NDIS вызывает при выполнении асинхронной операции закрытия af. Если входное состояние равно NDIS_STATUS_SUCCESS, клиент может освободить область контекста для каждой af-af.
Примеры
Чтобы определить функцию ProtocolCloseAfComplete , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.Например, чтобы определить функцию ProtocolCloseAfComplete с именем MyClCloseAfComplete, используйте тип PROTOCOL_CL_CLOSE_AF_COMPLETE , как показано в следующем примере кода:
PROTOCOL_CL_CLOSE_AF_COMPLETE MyClCloseAfComplete;
Затем реализуйте функцию следующим образом:
_Use_decl_annotations_
VOID
MyClCloseAfComplete(
NDIS_STATUS Status,
NDIS_HANDLE ProtocolAfContext
)
{...}
Тип функции PROTOCOL_CL_CLOSE_AF_COMPLETE определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции PROTOCOL_CL_CLOSE_AF_COMPLETE в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов NDIS.
Сведения о Use_decl_annotations см. в статье Поведение функции с заметками.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. ProtocolCloseAfComplete (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. ProtocolCloseAfComplete (NDIS 5.1)) в Windows XP. |
Целевая платформа | Windows |
Header | ndis.h (включая Ndis.h) |
IRQL | <= DISPATCH_LEVEL |