Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция 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 |