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


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

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

Синтаксис

NDIS_STATUS NdisMCmCreateVc(
  [in]  NDIS_HANDLE  MiniportAdapterHandle,
  [in]  NDIS_HANDLE  NdisAfHandle,
  [in]  NDIS_HANDLE  MiniportVcContext,
  [out] PNDIS_HANDLE NdisVcHandle
);

Параметры

[in] MiniportAdapterHandle

Задает дескриптор, предоставленный NDIS, изначально входной для MiniportInitializeEx.

[in] NdisAfHandle

Указывает дескриптор, определяющий клиент, который является целевым объектом входящего вызова. Драйвер MCM получил этот дескриптор в качестве входного параметра для функции ProtocolCmOpenAf.

[in] MiniportVcContext

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

[out] NdisVcHandle

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

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

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

Возвращаемый код Описание
NDIS_STATUS_SUCCESS
NDIS успешно создал VC.
NDIS_STATUS_RESOURCES
NDIS не удалось выделить достаточно памяти для настройки VC.
NDIS_STATUS_FAILURE
Данный NdisAfHandle недопустим.
NDIS_STATUS_XXX
Клиент не удалось создать VC по какой-то причине, и NDIS распространил состояние ошибки, возвращаемое его ProtocolCoCreateVc драйверу MCM.

Замечания

Драйвер MCM создает VC с NdisMCmCreateVc для представления входящего предложения подключения с удаленного узла, направленного на SAP, которая уже зарегистрирована в драйвере MCM.

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

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

Когда драйвер MCM обрабатывает предложение входящего вызова, направленного на один из зарегистрированных SPS, он должен сначала вызывать NdisMCmCreateVc. В качестве синхронной операции NDIS вызывает функцию ProtocolCoCreateVc клиента, прежде чем NdisMCmCreateVc возвращает элемент управления. Если вызов NdisMCmCreateVc успешно выполнен, драйвер MCM может продолжить уведомление соответствующего клиента, передав возвращаемое значение по NdisVcHandle NdisMCmDispatchIncomingCall.

Модуль записи драйверов определяет, имеет ли драйвер MCM (внутреннюю) функцию MiniportCoCreateVc, вызываемую драйвером в контексте настройки подключений для исходящих и входящих вызовов.

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. NdisMCmCreateVc (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. NdisMCmCreateVc (NDIS 5.1)) в Windows XP.
целевая платформа Настольный
заголовка ndis.h (include Ndis.h)
библиотеки Ndis.lib
IRQL <= DISPATCH_LEVEL
правил соответствия DDI Irql_MCM_Function(ndis)

См. также

MiniportCoCreateVc

NdisAllocateFromNPagedLookasideList

NdisClMakeCall

NdisCoCreateVc

NdisMCmDeleteVc

NdisMCmDispatchIncomingCall

ProtocolCmRegisterSap

ProtocolCoCreateVc