Поделиться через


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

Требуется функция ProtocolCoDeleteVc . Эта функция удаляет состояние клиента или диспетчера вызовов для установленного виртуального подключения, которое закрывается первоначальным создателем этого VC.

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

Синтаксис

PROTOCOL_CO_DELETE_VC ProtocolCoDeleteVc;

NDIS_STATUS ProtocolCoDeleteVc(
  [in] NDIS_HANDLE ProtocolVcContext
)
{...}

Параметры

[in] ProtocolVcContext

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

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

ProtocolCoDeleteVc может возвращать одно из следующих данных:

Код возврата Описание
NDIS_STATUS_SUCCESS
Протокол выпустил или подготовился к повторному использованию всех ресурсов, которые он изначально выделил для VC.
NDIS_STATUS_NOT_ACCEPTED
VC по-прежнему активен, и протокол имеет незавершенные операции в VC, поэтому его не удалось уничтожить.
NDIS_STATUS_XXX
Протоколу не удалось удалить VC по причине, определенной драйвером.

Комментарии

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

Когда ProtocolCoDeleteVc возвращает элемент управления с NDIS_STATUS_SUCCESS, NdisVcHandle , который его функция ProtocolCoCreateVc , хранящуюся в области в ProtocolVcContext, становится недопустимой.

ProtocolCoDeleteVc может вернуть любой определяемый драйвером NDIS_STATUS_XXX , чтобы не удалось удалить VC, но не может вернуть NDIS_STATUS_PENDING. Вызовы ProtocolCoDeleteVc по своей природе являются синхронными.

Примеры

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

Например, чтобы определить функцию ProtocolCoDeleteVc с именем MyCoDeleteVc, используйте тип PROTOCOL_CO_DELETE_VC , как показано в следующем примере кода:

PROTOCOL_CO_DELETE_VC MyCoDeleteVc;

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

_Use_decl_annotations_
NDIS_STATUS
 MyCoDeleteVc(
    NDIS_HANDLE  ProtocolVcContext
    )
  {...}

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

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

Требования

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

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

NdisClCloseCall

NdisCmDispatchIncomingCloseCall

NdisCoCreateVc

NdisCoDeleteVc

ProtocolCoCreateVc