Функция 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 успешно создал VC. |
|
NDIS не удалось выделить достаточный объем памяти для настройки VC. |
|
Указан недопустимый объект NdisAfHandle . |
|
Базовому драйверу минипорта не удалось создать 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) |