통화를 닫기 위한 수신 요청

원격 클라이언트가 통화를 닫으면 로컬 호출 관리자 또는 MCM 드라이버가 로컬 클라이언트에 들어오는 요청을 표시해야 합니다. 이러한 요청을 나타내기 위해 호출 관리자는 CloseStatus가 NDIS_STATUS_SUCCESS 설정된 NdisCmDispatchIncomingCloseCall을 호출합니다(다음 그림 참조).

통화 관리자를 통해 통화를 닫기 위한 들어오는 요청을 보여 주는 다이어그램

MCM 드라이버는 NdisMCmDispatchIncomingCloseCall 을 호출하여 호출을 닫기 위한 들어오는 요청을 나타냅니다(다음 그림 참조).

MCM 드라이버를 통해 호출을 닫기 위한 들어오는 요청을 보여 주는 다이어그램

호출 관리자 또는 MCM 드라이버는 Ndis(M)CmDispatchIncomingCloseCall을 호출할 수도 있습니다.

  • ProtocolCmIncomingCallComplete 함수에서 연결 지향 클라이언트가 호출 관리자 또는 MCM 드라이버가 이전에 표시한 수신 호출에 대한 응답으로 호출 매개 변수의 허용되지 않는 변경을 요청하는 것으로 확인되면(호출 매개 변수 변경 요청 참조)

  • 비정상적인 네트워크 조건으로 인해 호출 관리자가 활성 호출을 중단하도록 강제하는 경우

Ndis(M)CmDispatchIncomingCloseCall을 호출하면 NDIS가 해당 연결에서 연결 지향 클라이언트의 ProtocolClIncomingCloseCall 함수를 호출합니다. ProtocolClIncomingCloseCall 은 자체 클라이언트 또는 클라이언트에 연결이 끊어지고 있음을 알리는 것과 같이 프로토콜 결정 작업을 수행해야 합니다. 닫을 호출이 클라이언트에서 만든 멀티포인트 VC인 경우 ProtocolClIncomingCloseCall 은 단일 파티만 VC에 남아 있을 때까지 NdisClDropParty 를 한 번 이상 호출해야 합니다( 멀티포인트 호출에서 파티 삭제 참조).

그런 다음 ProtocolClIncomingCloseCallNdisCloseCall(VC가 클라이언트에서 만든 다중 포인트 VC인 경우 VC의 마지막 당사자에 대한 핸들 포함)을 호출하여 클라이언트가 더 이상 이 특정 VC에 대한 데이터를 보내거나 받을 것으로 기대하지 않음을 인정해야 합니다. 호출 관리자 또는 MCM 드라이버가 이 VC를 만든 경우 ProtocolClIncomingCloseCallNdisCloseCall을 호출한 후 제어권을 반환해야 합니다. 호출 관리자 또는 MCM 드라이버도 VC를 비활성화해야 합니다( VC 비활성화 참조).

클라이언트가 발신 호출에 대해 이 VC를 처음 만들고 CloseStatus 가 NDIS_STATUS_SUCCESS 경우 ProtocolClIncomingCloseCall 은 필요에 따라 NdisCoDeleteVc( VC 삭제 참조)를 사용하여 VC를 중단하거나 다른 호출에 VC를 다시 사용할 수 있습니다. CloseStatus가 NDIS_STATUS_SUCCESS가 아니면 ProtocolClIncomingCloseCallNdisCoDeleteVc를 호출해야 합니다.

호출 관리자 또는 MCM 드라이버가 원래 들어오는 호출에 대해 이 VC를 만든 경우 호출 관리자 또는 MCM 드라이버는 각각 NdisCoDeleteVc 또는 NdisMCmDeleteVc를 호출하여 VC를 선택적으로 삭제할 수 있습니다.