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


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

NdisClAddParty добавляет сторону в мультиточенном VC клиента.

Синтаксис

NDIS_STATUS NdisClAddParty(
  [in]      NDIS_HANDLE         NdisVcHandle,
  [in]      NDIS_HANDLE         ProtocolPartyContext,
  [in, out] PCO_CALL_PARAMETERS CallParameters,
  [out]     PNDIS_HANDLE        NdisPartyHandle
);

Параметры

[in] NdisVcHandle

Указатель на дескриптор VC, возвращенный NdisCoCreateVc.

[in] ProtocolPartyContext

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

[in, out] CallParameters

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

[out] NdisPartyHandle

Указатель на переменную, задаваемую с помощью NDIS, если операция надстройки выполнена успешно.

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

Когда NdisClAddParty возвращает что-либо, кроме NDIS_STATUS_PENDING, клиент должен выполнить внутренний вызов к его Функция ProtocolClAddPartyComplete . В противном случае NDIS вызывает функцию ProtocolClAddPartyComplete клиента после завершения этой операции.

Комментарии

Перед вызовом NdisClAddParty клиент должен настроить многоточечные подключения к VC с NdisClMakeCall, а также выделить и инициализировать область контекста для добавляемой стороны. Клиенты обычно передают указатель на такую контекстную область, как ProtocolPartyContext, и указатель на переменную в этой области контекста в качестве параметров NdisPartyHandle при вызове NdisClAddParty.

Вызов NdisClAddParty приводит к тому, что NDIS перенаправит этот запрос в функцию ProtocolCmAddParty диспетчера вызовов, с которым клиент использует указанный объект NdisVcHandle . Диспетчер вызовов возвращает состояние ошибки немедленно или, как правило, NDIS_STATUS_PENDING, если он пытается удовлетворить этот запрос. Если ее попытка отклоняется в удаленной конечной точке или базовом драйвере мини-порта, диспетчер вызовов возвращает окончательное состояние ошибки, например NDIS_STATUS_FAILURE, при вызове NdisCmAddPartyComplete или NdisMCmAddPartyComplete. КлиентскаяФункция ProtocolClAddPartyComplete должна проверка входной аргумент Status для NDIS_STATUS_SUCCESS, прежде чем продолжить.

Базовый сетевой носитель определяет, может ли клиент указать параметры трафика для стороннего трафика в многоточелетней виртуальной системе.

Если базовый сетевой носитель не поддерживает параметры трафика для отдельных сторон в многоточечных виртуальных машинах, диспетчер вызовов может выполнить одно из следующих действий, когда клиент пытается добавить сторону со спецификацией в CallParameters , которая не соответствует уже установленным параметрам трафика для этого VC:

  • Отклонить запрос на добавление новой стороны.
  • Сбросьте параметры трафика до тех, которые уже установлены для многоточечных VC, при успешном добавлении стороны в этот VC.
  • Измените параметры трафика для каждой стороны, уже включенной в VC, при успешном добавлении новой стороны.
Если операция надстройки завершается успешно, переменная в NdisPartyHandle была задана NDIS как допустимый дескриптор, совместно используемый NDIS, клиентом и диспетчером вызовов. Клиент должен рассматривать этот дескриптор, предоставленный NDIS, как непрозрачную переменную, которая будет передана, не изменена и не интерпретирована в последующих вызовах функций NdisCl/CoXxx относительно новой добавленной стороны.

В свою очередь, NDIS передает предоставленный клиентом дескриптор ProtocolPartyContext в последующих вызовах функций Клиента ProtocolClXxx , которые относятся к этой добавленной стороне, включая вызов ProtocolClAddPartyComplete.

Разрешает ли многоточечный вызов передачу в обоих направлениях и /или передачи по стороне с параметрами трафика для отдельных сторон, зависит от среды базового драйвера минипорта, к которому привязан клиент. NdisPartyHandle представляет только определенную сторону, добавленную при успешном вызове NdisClAddParty, а не многоточенное VC. Следовательно, клиент может использовать свою область ProtocolPartyContext только для последующих запросов на управление вызовами, зависящих от конкретной стороны. Для передачи данных через сетевой носитель, который не поддерживает передачу по стороне или параметры трафика, клиент должен использовать вместо этого NdisVcHandle .

Требования

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

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

CO_CALL_PARAMETERS

NdisAllocateFromNPagedLookasideList

NdisClCloseCall

NdisClDropParty

NdisClMakeCall

NdisCmAddPartyComplete

NdisCoCreateVc

NdisCoOidRequest

NdisCoOidRequestComplete

NdisMCmAddPartyComplete

ProtocolClAddPartyComplete

ProtocolCmAddParty