다음을 통해 공유


멀티포인트 호출에 파티 추가

클라이언트는 NdisClAddParty를 사용하여 멀티포인트 호출에 파티를 추가하도록 요청합니다. 클라이언트는 기존 멀티포인트 호출에만 파티를 추가할 수 있습니다. 즉, 클라이언트가 ProtocolPartyContextNdisClMakeCall에 제공한 호출입니다( 호출 참조).

다음 그림에서는 멀티포인트 호출에 파티 추가를 요청하는 통화 관리자의 클라이언트를 보여 있습니다.

다중 포인트 호출에 파티 추가를 요청하는 통화 관리자의 클라이언트를 보여 주는 다이어그램

다음 그림에서는 멀티포인트 호출에 파티 추가를 요청하는 MCM 드라이버의 클라이언트를 보여 줍니다.

멀티포인트 호출에 파티 추가를 요청하는 MCM 드라이버의 클라이언트를 보여 주는 다이어그램

NdisClAddParty를 호출하기 전에 클라이언트는 파티가 추가될 컨텍스트 영역을 할당하고 초기화해야 합니다. 클라이언트는 일반적으로 ProtocolPartyContext와 같은 컨텍스트 영역에 대한 포인터와 해당 컨텍스트 영역 내의 변수에 대한 포인터를 NdisClAddParty를 호출할 때 NdisPartyHandle 매개 변수로 전달합니다.

클라이언트는 NdisVcHandleProtocolPartyContext 외에도 호출 매개 변수(버퍼링된 CO_CALL_PARAMETERS 구조)를 NdisClAddParty에 전달합니다. 기본 네트워크 매체는 클라이언트가 멀티포인트 VC에서 파티별 트래픽 매개 변수를 지정할 수 있는지 여부를 결정합니다.

NdisClAddParty를 호출하면 NDIS가 이 요청을 호출 관리자 또는 클라이언트가 지정된 NdisVcHandle 을 공유하는 MCM 드라이버의 ProtocolCmAddParty 함수로 전달합니다. NDIS는 ProtocolCmAddParty에 다음을 전달합니다.

  • 호출에 대한 VC를 나타내는 CallMgrVcContext 입니다.

  • 클라이언트가 NdisClAddParty에 전달하는 호출 매개 변수를 포함하는 CO_CALL_PARAMETERS 구조체에 대한 포인터입니다.

  • 추가할 파티를 식별하는 NdisPartyHandle 입니다.

ProtocolCmAddParty 는 호출에 추가되는 파티에 필요한 동적 리소스를 할당하고 초기화합니다. ProtocolCmAddParty에서 호출 관리자 또는 MCM 드라이버는 필요에 따라 네트워크 제어 디바이스 또는 기타 미디어 관련 에이전트와 통신하여 지정된 당사자를 멀티포인트 호출에 추가합니다.

클라이언트가 다중 포인트 VC에 대해 이미 설정된 것과 일치하지 않는 호출 매개 변수를 전달한 경우 호출 관리자 또는 MCM 드라이버는 다음과 같이 할 수 있습니다.

  • 기본 네트워크 매체가 다중 포인트 VC에서 이 기능을 지원하는 경우 파티별 트래픽 매개 변수를 설정합니다.

  • 클라이언트에서 제공한 트래픽 매개 변수를 VC에 대해 원래 설정된 매개 변수로 다시 설정합니다.

  • VC 및 현재 연결된 모든 당사자에 대한 호출 매개 변수를 변경합니다.

  • 파티를 추가하려는 클라이언트의 시도에 실패합니다.

ProtocolCmAddParty 는 MCM 드라이버의 경우 호출 관리자 또는 NdisMCmAddPartyComplete의 경우 NdisCmAddPartyComplete를 사용하여 동기적으로 또는 비동 적으로 완료할 수 있습니다. 호출 관리자 또는 MCM 드라이버가 동기적으로 또는 비동기적으로 작업을 완료하는지 여부에 관계없이 버퍼링된 호출 매개 변수를 NDIS에 전달합니다.

Ndis(M)CmAddPartyComplete를 호출하면 NDIS가 클라이언트의 ProtocolClAddPartyComplete 함수를 호출합니다. 클라이언트의 파티 추가 요청이 성공하고 신호 프로토콜이 호출 관리자 또는 MCM 드라이버가 호출 매개 변수를 수정할 수 있도록 허용하는 경우 ProtocolClAddPartyComplete 는 버퍼링된 CO_CALL_PARAMETERS 구조에서 CALL_PARAMETERS_CHANGED 플래그를 테스트하여 호출 매개 변수가 수정되었는지 여부를 확인해야 합니다. 신호 프로토콜은 CO_CALL_PARAMETERS 허용되지 않는 수정 사항을 발견한 경우 클라이언트가 수행할 수 있는 작업을 결정합니다. 일반적으로 클라이언트는 이 경우 NdisClDropParty 를 호출합니다( 멀티포인트 호출에서 파티 삭제 참조).