функция обратного вызова PROTOCOL_CM_ADD_PARTY (ndis.h)

Функция ProtocolCmAddParty является обязательной функцией. ProtocolCmAddParty настраивает параметры мультимедиа для добавления участника в существующий многоточечный вызов, сохраняет данные о состоянии для новой стороны и вызывает добавление стороны в вызов.

Примечание Функцию необходимо объявить с помощью типа PROTOCOL_CM_ADD_PARTY . Дополнительные сведения см. в следующем разделе Примеры.
 

Синтаксис

PROTOCOL_CM_ADD_PARTY ProtocolCmAddParty;

NDIS_STATUS ProtocolCmAddParty(
  [in]      NDIS_HANDLE CallMgrVcContext,
  [in, out] PCO_CALL_PARAMETERS CallParameters,
  [in]      NDIS_HANDLE NdisPartyHandle,
  [out]     PNDIS_HANDLE CallMgrPartyContext
)
{...}

Параметры

[in] CallMgrVcContext

Указывает дескриптор для области контекста, выделенной диспетчером вызовов, в которой диспетчер вызовов сохраняет свое состояние для каждого VC. Диспетчер вызовов предоставил этот дескриптор NDIS из функции ProtocolCoCreateVc .

[in, out] CallParameters

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

[in] NdisPartyHandle

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

[out] CallMgrPartyContext

Указывает при возврате дескриптор области контекста, предоставленной диспетчером вызовов, в которой диспетчер вызовов сохраняет состояние об этой стороне для многоточечных вызовов.

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

ProtocolCmAddParty возвращает состояние своих операций как одно из следующих:

Код возврата Описание
NDIS_STATUS_SUCCESS
Указывает, что диспетчер звонков успешно выделил необходимые ресурсы для поддержания состояния о стороне и успешно добавил сторону в вызов.
NDIS_STATUS_PENDING
Указывает, что диспетчер вызовов выполнит запрос на добавление стороны асинхронно. Когда диспетчер вызовов завершил все операции по добавлению стороны, он должен вызвать NdisCmAddPartyComplete , чтобы сообщить NDIS о завершении этой операции.
NDIS_STATUS_RESOURCES
Указывает, что диспетчеру вызовов не удалось выделить и (или) инициализировать свои ресурсы для добавления стороны в соединение.
NDIS_STATUS_NOT_SUPPORTED
Указывает, что диспетчеру вызовов не удалось добавить сторону в многоточечный вызов, так как вызывающий запросил недопустимые или недоступные функции в параметрах вызова в CallParameters или что тип мультимедиа, поддерживаемый этим диспетчером вызовов, не поддерживает многоточечные вызовы.

Комментарии

ProtocolCmAddParty выполняет все необходимые выделения динамических ресурсов и структур, необходимых диспетчеру вызовов для хранения сведений о состоянии стороны, указанной NdisPartyHandle, для добавления в многоточечный вызов. Такие ресурсы могут включать, помимо прочего, буферы памяти, структуры данных, события и другие аналогичные ресурсы. Диспетчеры звонков также должны инициализировать соответствующие структуры для отдельных сторон в этой функции.

В области состояния для отдельных сторон, которую выделяет диспетчер звонков, диспетчер вызовов должен хранить дескриптор, заданный NdisPartyHandle , для использования в будущих вызовах. После того как диспетчер вызовов выделяет и завершает инициализацию области состояния для отдельных сторон, адрес буфера состояний следует задать в качестве дескриптора CallMgrPartyContext , прежде чем возвращать управление в NDIS. Для этого разыменуйте дескриптор и сохраните указатель на буфер состояния в качестве значения дескриптора. Пример:

*CallMgrPartyContext = SomeBuffer;

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

Примеры

Чтобы определить функцию ProtocolCmAddParty , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить функцию ProtocolCmAddParty с именем MyCmAddParty, используйте тип PROTOCOL_CM_ADD_PARTY , как показано в следующем примере кода:

MINIPORT_ADD_DEVICE MyCmAddParty;

Затем реализуйте функцию следующим образом:

_Use_decl_annotations_
NDIS_STATUS
 MyCmAddParty(
    NDIS_HANDLE  CallMgrVcContext,
    PCO_CALL_PARAMETERS  CallParameters,
    NDIS_HANDLE  NdisPartyHandle,
    PNDIS_HANDLE  CallMgrPartyContext
    )
  {...}

Тип функции PROTOCOL_CM_ADD_PARTY определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции PROTOCOL_CM_ADD_PARTY в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов NDIS.

Сведения о Use_decl_annotations см. в статье Поведение функции с заметками.

Требования

Требование Значение
Минимальная версия клиента Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. ProtocolCmAddParty (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. ProtocolCmAddParty (NDIS 5.1)) в Windows XP.
Целевая платформа Windows
Header ndis.h (включая Ndis.h)
IRQL <= DISPATCH_LEVEL

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

NdisClAddParty

ProtocolClAddPartyComplete