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