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


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

Функция MiniportCoActivateVc необходима для мини-портов, ориентированных на подключение. Метод NDIS вызывает MiniportCoActivateVc, чтобы указать драйверу мини-порта, что активируется виртуальное подключение.

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

Синтаксис

MINIPORT_CO_ACTIVATE_VC MiniportCoActivateVc;

NDIS_STATUS MiniportCoActivateVc(
  [in]      NDIS_HANDLE MiniportVcContext,
  [in, out] PCO_CALL_PARAMETERS CallParameters
)
{...}

Параметры

[in] MiniportVcContext

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

[in, out] CallParameters

Указывает параметры вызова, заданные диспетчером вызовов, которые должны быть установлены для этого проверяемого удостоверения. В выходных данных драйвер мини-порта возвращает измененные параметры вызова, если в структуре CO_CALL_PARAMETERS установлены определенные флаги.

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

Код возврата Описание
NDIS_STATUS_SUCCESS
Указывает, что VC был успешно активирован.
NDIS_STATUS_PENDING
Указывает, что драйвер мини-порта выполнит запрос на асинхронную активацию VC. Когда драйвер мини-порта завершит работу со своими операциями, он должен вызвать NdisMCoActivateVcComplete.
NDIS_STATUS_INVALID_DATA
Указывает, что параметры вызова, указанные в CallParameters , недопустимы или недопустимы для типа носителя, который поддерживает этот драйвер мини-порта.
NDIS_STATUS_RESOURCES
Указывает, что драйверу мини-порта не удалось активировать VC, так как ему не удалось выделить все необходимые ресурсы, необходимые драйверу мини-порта для хранения сведений о состоянии активного виртуального удостоверения.

Комментарии

Драйвер мини-порта должен проверить параметры вызова для этого VC, как указано в CallParameters, чтобы убедиться, что адаптер может поддерживать запрошенный вызов. Если запрошенные параметры вызова не могут быть удовлетворены, драйвер мини-порта должен завершить запрос с NDIS_STATUS_INVALID_DATA.

MiniportCoActivateVc можно вызывать много раз для одного VC, чтобы изменить параметры вызова для уже активного вызова. При каждом вызове драйвер мини-порта должен проверять параметры и выполнять обработку в соответствии с требованиями адаптера для удовлетворения запроса. Однако если не удается задать заданные параметры вызова, MiniportCoActivateVc должен оставить VC в пригодном для использования состоянии, так как клиент, ориентированный на подключение, или диспетчер вызовов могут продолжать отправлять или получать данные с помощью старых параметров вызова.

Если флаги ROUND_UP_FLOW или ROUND_DOWN_FLOW заданы в структуре параметров вызова в CallParameters-MediaParameters-Flags>>, драйверу мини-порта было предложено вернуть фактическую скорость потока VC после округления скорости потока в соответствии с установленным флагом. Если драйвер мини-порта изменяет какие-либо параметры вызова, так как эти флаги установлены, он должен вернуть фактические параметры вызова, используемые для VC в CallParameters.

Если параметры вызова являются приемлемыми, MiniportCoActivateVc взаимодействует со своим адаптером по мере необходимости, чтобы подготовить адаптер к приему или передаче данных через виртуальное подключение (другими словами, программирование буферов приема).

Примеры

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

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

MINIPORT_CO_ACTIVATE_VC MyCoActivateVc;

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

_Use_decl_annotations_
NDIS_STATUS
 MyCoActivateVc(
    NDIS_HANDLE  MiniportVcContext,
    PCO_CALL_PARAMETERS  CallParameters
    )
  {...}

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

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

Требования

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

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

MiniportCoCreateVc

MiniportCoDeactivateVc

NdisMCoActivateVcComplete