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


Функция 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 должна проверить аргумент состояния входных 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 (include Ndis.h)
библиотеки Ndis.lib
IRQL <= DISPATCH_LEVEL
правил соответствия DDI Irql_Protocol_Driver_Function(ndis)

См. также

CO_CALL_PARAMETERS

NdisAllocateFromNPagedLookasideList

NdisCloseCall

NdisClDropParty

NdisClMakeCall

NdisCmAddPartyComplete

NdisCoCreateVc

NdisCoOidRequest

NdisCoOidRequestComplete

NdisMCmAddPartyComplete

ProtocolClAddPartyComplete

ProtocolCmAddParty