Функция NdisCoCreateVc (ndis.h)

NdisCoCreateVc настраивает конечную точку подключения, из которой клиент может выполнять исходящие вызовы или в которой автономный диспетчер вызовов может отправлять входящие вызовы.

Синтаксис

NDIS_STATUS NdisCoCreateVc(
  [in]           NDIS_HANDLE  NdisBindingHandle,
  [in, optional] NDIS_HANDLE  NdisAfHandle,
  [in]           NDIS_HANDLE  ProtocolVcContext,
  [in, out]      PNDIS_HANDLE NdisVcHandle
);

Параметры

[in] NdisBindingHandle

Указывает дескриптор, возвращаемый NdisOpenAdapterEx , который определяет целевой сетевой адаптер или виртуальный адаптер следующего ниже драйвера, к которому привязан вызывающий объект.

[in, optional] NdisAfHandle

Указывает дескриптор, возвращаемый NdisClOpenAddressFamilyEx , если вызывающий объект является клиентом. Диспетчер вызовов задает этому параметру значение NULL , если он создает VC для себя, например VC для сетевого коммутатора. При создании VC для уведомлений о входящих звонках диспетчер вызовов передает дескриптор AF, сохраненный в состоянии для каждого af, заданном CallMgrAfContext , который был передан в качестве входного параметра в его Функция ProtocolCmRegisterSap .

[in] ProtocolVcContext

Задает дескриптор для предоставляемой вызывающей абонентской области контекста, в которой вызывающий объект сохраняет состояние для этого VC. NDIS передает этот дескриптор обратно создателю VC во всех последующих вызовах, относящихся к этой конечной точке, если вызов NdisCoCreateVc завершается успешно.

[in, out] NdisVcHandle

Указатель на переменную, предоставленную вызывающим лицом, которая должна быть инициализирована значением NULL при вызове NdisCoCreateVc . При возвращении из успешного вызова это указывает на переменную, которую NDIS установила для своего дескриптора для вновь созданного VC. Вызывающий объект должен сохранить этот дескриптор для последующих вызовов функций Ndis Xxx , ориентированных на подключение.

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

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

Код возврата Описание
NDIS_STATUS_SUCCESS
NDIS успешно создал VC.
NDIS_STATUS_RESOURCES
NDIS не удалось выделить достаточный объем памяти для настройки VC.
NDIS_STATUS_FAILURE
Указан недопустимый объект NdisAfHandle .
NDIS_STATUS_ XXX
Базовому драйверу минипорта не удалось создать VC по определенной драйвером минипорта причине, которую NDIS распространил на вызывающий объект.

Комментарии

Клиент или автономный диспетчер вызовов создает VC с NdisCoCreateVc в зависимости от того, представляет ли VC исходящий или входящий вызов соответственно.

В процессе создания VC NDIS предоставляет клиенту, диспетчеру вызовов и драйверу минипорта, к которому привязаны оба драйвера протокола, NdisVcHandle . Этот дескриптор идентифицирует виртуальный канал для клиента, диспетчера вызовов и драйвера мини-порта, к которому направляются последующие запросы, касающиеся заданного VC. Каждый драйвер должен рассматривать этот дескриптор VC как непрозрачную переменную, передавая его без изменений и не интерпретированных в последующих вызовах определенных функций библиотеки NDIS, ориентированных на подключение.

Обычно вызывающие методы NdisCoCreateVc хранят возвращенный объект NdisVcHandle в области состояния, выделенной вызывающим объектом, в ProtocolVcContext . NDIS передает этот дескриптор в качестве входного параметра в функции ProtocolCoCreateVc и MiniportCoCreateVc двух других драйверов, участвующих в каждом создании VC.

Чтобы выполнить исходящий вызов, клиент должен сначала вызвать NdisCoCreateVc . В качестве синхронной операции NDIS вызывает функцию MiniportCoCreateVc базового драйвера минипорта и функцию ProtocolCoCreateVc диспетчера вызовов, прежде чем NdisCoCreateVc вернет управление. Если вызов NdisCoCreateVc завершается успешно, клиент может выполнить исходящий вызов, передав возвращенный NdisVcHandle в NdisClMakeCall.

Когда егоФункция ProtocolCoReceiveNetBufferLists обрабатывает предложение входящего вызова, направленного в один из зарегистрированных SSP. Диспетчер вызовов должен сначала вызвать NdisCoCreateVc. В качестве синхронной операции NDIS вызывает функцию MiniportCoCreateVc базового драйвера минипорта и функцию ProtocolCoCreateVc клиента, прежде чем NdisCoCreateVc вернет управление. Если вызов NdisCoCreateVc завершается успешно, диспетчер вызовов может уведомить соответствующего клиента, передав возвращаемое значение в NdisVcHandle в NdisCmDispatchIncomingCall.

Автономные диспетчеры вызовов, которые регистрируют себя в NDIS в качестве драйверов протоколов, могут вызывать NdisCoCreateVc. Драйверы мини-портов, ориентированные на подключение, которые обеспечивают встроенную поддержку управления звонками, вызывают вместо этого NdisMCmCreateVc.

Требования

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

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

MiniportCoCreateVc

NdisAllocateFromNPagedLookasideList

NdisClMakeCall

NdisCmDispatchIncomingCall

NdisCoDeleteVc

NdisMCmCreateVc

ProtocolCmRegisterSap

ProtocolCoCreateVc

ProtocolCoReceiveNetBufferLists