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

Функция ProtocolClCloseCallComplete используется клиентами NDIS, ориентированными на подключение. Все клиенты NDIS, ориентированные на подключение, должны иметь функции ProtocolClCloseCallComplete для выполнения асинхронных операций, которые они инициируют с помощью.

NdisClCloseCall.

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

Синтаксис

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.
Если VC был создан диспетчером вызовов, клиент должен считать NdisVcHandle недопустимым при вызове ProtocolClCloseCallComplete . Клиент не должен выполнять дальнейшие вызовы NdisCl/CoXxx с помощью этого NdisVcHandle . После того как ProtocolClCloseCallComplete вернет управление, диспетчер вызовов может удалить свой VC, что вызовет функцию ProtocolCoDeleteVc клиента. Диспетчер вызовов может даже отправить еще один входящий вызов в созданном им VC, что приводит к вызову клиента. Функция ProtocolClIncomingCall .

Примеры

Чтобы определить функцию 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

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

NdisClCloseCall

NdisClMakeCall

NdisCmCloseCallComplete

NdisCoDeleteVc

NdisMCmCloseCallComplete

ProtocolClIncomingCall

ProtocolCmCloseCall

ProtocolCoDeleteVc