Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция ProtocolCmDeactivateVcComplete является обязательной. ProtocolCmDeactivateVcComplete завершает обработку инициированного диспетчером вызовов запроса на деактивацию базового драйвера miniport (и NDIS) VC, для которого NdisCmDeactivateVc ранее вернул NDIS_STATUS_PENDING.
Синтаксис
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 |