다음을 통해 공유


통화를 닫기 위한 수신 요청

원격 클라이언트가 통화를 닫을 때 로컬 호출 관리자 또는 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를 선택적으로 삭제할 수 있습니다.