функция обратного вызова PROTOCOL_CL_CLOSE_CALL_COMPLETE (ndis.h)
Функция ProtocolClCloseCallComplete используется клиентами NDIS, ориентированными на подключение. Все клиенты NDIS, ориентированные на подключение, должны иметь функции ProtocolClCloseCallComplete для выполнения асинхронных операций, которые они инициируют с помощью.
Синтаксис
PROTOCOL_CL_CLOSE_CALL_COMPLETE ProtocolClCloseCallComplete;
void ProtocolClCloseCallComplete(
[in] NDIS_STATUS Status,
[in] NDIS_HANDLE ProtocolVcContext,
[in, optional] NDIS_HANDLE ProtocolPartyContext
)
{...}
Параметры
[in] Status
Указывает окончательное состояние запроса клиента на закрытие этого вызова, которое может иметь одно из следующих значений:
NDIS_STATUS_SUCCESS
Диспетчер вызовов успешно закрыл вызов, который существовал в заданном VC, и деактивировал VC.
NDIS_STATUS_XXX
Диспетчер вызовов не смог выполнить запрос на закрытие вызова по определенной причине, определяемой CM, и NDIS распространила состояние, возвращенное функцией ProtocolCmCloseCall , клиенту.
[in] ProtocolVcContext
Указывает дескриптор области контекста клиента по VC. Это дескриптор, который клиент изначально передал в NDIS с помощью NdisCoCreateVc или вернулся в NDIS из функции ProtocolCoCreateVc .
[in, optional] ProtocolPartyContext
Указывает дескриптор области контекста клиента для последней оставшейся стороны в созданном клиентом VC, представляющей многоточечные подключения. В противном случае этот параметр имеет значение NULL.
Возвращаемое значение
None
Remarks
Если клиент создал данный VC, а состояние NDIS_STATUS_SUCCESS, клиент теперь может выполнить одно из следующих действий:
- Разорвите VC с помощью NdisCoDeleteVc и отпустите или подготовьтесь к повторному использованию выделенных областей контекста.
- Повторно инициализируйте область контекста для каждого VC и повторно используйте ее VC, чтобы установить еще одно соединение с NdisClMakeCall.
Примеры
Чтобы определить функцию ProtocolCloseCallComplete , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.Например, чтобы определить функцию ProtocolCloseCallComplete с именем MyCloseCallComplete, используйте тип PROTOCOL_CL_CLOSE_CALL_COMPLETE , как показано в этом примере кода:
PROTOCOL_CL_CLOSE_CALL_COMPLETE MyClCloseCallComplete;
Затем реализуйте функцию следующим образом:
_Use_decl_annotations_
VOID
MyClCloseCallComplete(
NDIS_STATUS Status,
NDIS_HANDLE ProtocolVcContext,
NDIS_HANDLE ProtocolPartyContext
)
{...}
Тип функции PROTOCOL_CL_CLOSE_CALL_COMPLETE определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции PROTOCOL_CL_CLOSE_CALL_COMPLETE в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в разделе Объявление функций с помощью типов ролей функций для драйверов NDIS.
Сведения о Use_decl_annotations см. в статье О поведении функции.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. ProtocolCloseCallComplete (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. ProtocolCloseCallComplete (NDIS 5.1)) в Windows XP. |
Целевая платформа | Windows |
Header | ndis.h (включая Ndis.h) |
IRQL | <= DISPATCH_LEVEL |