다음을 통해 공유


Client-Initiated 통화 닫기 요청

클라이언트가 둘 이상의 파티가 여전히 연결된 멀티포인트 호출을 닫는 경우 먼저 NdisClDropParty 를 필요한 만큼 여러 번 호출하여 통화에서 마지막 파티를 제외한 모든 당사자를 삭제해야 합니다( 다중 포인트 호출에서 파티 삭제 참조).

클라이언트는 NdisCloseCall을 사용하여 통화 종료를 시작합니다. 다음 그림에서는 호출 관리자를 통해 통화 종료를 시작하는 클라이언트를 보여줍니다.

호출 관리자를 통해 통화 종료를 시작하는 클라이언트를 보여 주는 다이어그램

다음 그림에서는 MCM 드라이버를 통해 호출 종료를 시작하는 클라이언트를 보여 줍니다.

mcm 드라이버를 통한 호출 종료를 시작하는 클라이언트를 보여 주는 다이어그램

연결 지향 클라이언트는 일반적으로 다음 상황 중 하나에서 NdisCloseCall 을 호출합니다.

클라이언트가 NdisCloseCall을 호출하면 NDIS가 호출 관리자 또는 MCM 드라이버의 ProtocolCmCloseCall 함수를 호출합니다. ProtocolCmCloseCall은 로컬 노드와 원격 노드 간의 연결을 종료하기 위해 네트워크 제어 디바이스와 통신해야 합니다.

ProtocolCmCloseCall이 명시적 CallMgrPartyContext에 전달되면 종료되는 호출은 다중 포인트 호출입니다. 호출 관리자 또는 MCM 드라이버는 멀티포인트 호출로 호출을 종료하려면 해당 미디어 유형에 맞게 네트워킹 하드웨어와 필요한 네트워크 통신을 수행해야 합니다.

NDIS는 ProtocolCmCloseCallNdisClose 호출에서 클라이언트가 제공한 데이터를 포함하는 버퍼에 대한 포인터를 전달할 수 있습니다. 이 데이터는 호출이 닫힌 이유 또는 신호 프로토콜에 필요한 기타 데이터를 나타내는 진단 데이터일 수 있습니다. ProtocolCmCloseCall은 호출 종료를 완료하기 전에 네트워크를 통해 이러한 데이터를 보내야 합니다. 연결이 종료되는 데이터 동시 전송이 지원되지 않는 경우 호출 관리자 또는 MCM 드라이버는 NDIS_STATUS_INVALID_DATA 반환해야 합니다.

ProtocolCmCloseCallNdisCmCloseCallComplete(호출 관리자의 경우) 또는 NdisMCmCloseCallComplete(MCM 드라이버의 경우)를 사용하여 동기적으로 또는 비동 적으로 완료할 수 있습니다. Ndis(M)CmCloseCallComplete를 호출하면 NDIS가 클라이언트의 ProtocolCloseCallComplete 함수를 호출합니다.

그런 다음 호출 관리자 또는 MCM 드라이버는 각각 NdisCmDeactivateVc 또는 NdisMCmDeactivateVc를 호출하여 호출에 사용되는 VC의 비활성화를 시작해야 합니다(VC 비활성화 참조). VC(클라이언트, 호출 관리자 또는 MCM 드라이버)의 작성자는 필요에 따라 VC 삭제를 시작할 수 있습니다( VC 삭제 참조).