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

Функция ProtocolCmDeactivateVcComplete является обязательной. ProtocolCmDeactivateVcComplete завершает обработку инициированного диспетчером вызовов запроса на деактивацию базового драйвера miniport (и NDIS) VC, для которого NdisCmDeactivateVc ранее вернул NDIS_STATUS_PENDING.

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

Синтаксис

PROTOCOL_CM_DEACTIVATE_VC_COMPLETE ProtocolCmDeactivateVcComplete;

void ProtocolCmDeactivateVcComplete(
  [in] NDIS_STATUS Status,
  [in] NDIS_HANDLE CallMgrVcContext
)
{...}

Параметры

[in] Status

Указывает окончательное состояние деактивации.

[in] CallMgrVcContext

Указывает дескриптор для области контекста, выделенной диспетчером вызовов, в которой диспетчер вызовов сохраняет свое состояние по каждому VC. Диспетчер вызовов предоставил этот дескриптор NDIS из своей функции ProtocolCoCreateVc .

Возвращаемое значение

None

Remarks

NDIS обычно вызывает ProtocolCmDeactivateVcComplete в контексте закрытия вызова диспетчером вызовов от имени клиента, ориентированного на подключение. Диспетчер вызовов обычно вызывает NdisCmDeactivateVc из своей функции ProtocolCmCloseCall . Всякий раз, когда NdisCmDeactivateVc возвращает NDIS_STATUS_PENDING, NDIS вызывает свою функцию ProtocolCmDeactivateVcComplete .

То есть, когда базовый драйвер минипорта, ориентированный на подключение, деактивирует VC, NDIS вызывает ProtocolCmDeactivateVcComplete. Окончательное состояние деактивации находится в разделе Состояние . Возможные значения для конечного состояния:

ProtocolCmDeactivateVcComplete выполняет любую постобработку, необходимую для завершения деактивации виртуального подключения, например устанавливает флаги в области состояния, чтобы указать, что подключение неактивно, или освобождает динамически выделенные ресурсы, используемые в активном виртуальном сервере.

Завершение деактивации означает, что все параметры вызова для VC, используемые при активации, становятся недействительными. Любое дальнейшее использование VC запрещено, за исключением повторной активации его с новым набором параметров вызова.

Диспетчеры звонков должны как можно быстрее освободить все ресурсы, выделенные для активации VC и управления возвратом. Если диспетчер вызовов ранее возвращал NDIS_STATUS_PENDING из функции ProtocolCmCloseCall и все операции по закрытию вызова завершены, protocolCmDeactivateVcComplete теперь должен вызвать NdisCmCloseCallComplete.

Примеры

Чтобы определить функцию ProtocolCmDeactivateVcComplete , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить функцию ProtocolCmDeactivateVcComplete с именем MyCmDeactivateVcComplete, используйте тип PROTOCOL_CM_DEACTIVATE_VC_COMPLETE , как показано в этом примере кода:

PROTOCOL_CM_DEACTIVATE_VC_COMPLETE MyCmDeactivateVcComplete;

Затем реализуйте функцию следующим образом:

_Use_decl_annotations_
VOID
 MyCmDeactivateVcComplete(
    NDIS_STATUS  Status,
    NDIS_HANDLE  CallMgrVcContext
    )
  {...}

Тип функции PROTOCOL_CM_DEACTIVATE_VC_COMPLETE определяется в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, применяемых к типу функции PROTOCOL_CM_DEACTIVATE_VC_COMPLETE в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в разделе Объявление функций с помощью типов ролей функций для драйверов NDIS.

Сведения о Use_decl_annotations см. в статье О поведении функции.

Требования

Требование Значение
Минимальная версия клиента Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. ProtocolCmDeactivateVcComplete (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. ProtocolCmDeactivateVcComplete (NDIS 5.1)) в Windows XP.
Целевая платформа Windows
Header ndis.h (включая Ndis.h)
IRQL <= DISPATCH_LEVEL

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

MiniportCoDeactivateVc

NdisCmCloseCallComplete

NdisCmDeactivateVc

ProtocolCmCloseCall