다음을 통해 공유


수신 전화 표시

호출 관리자 또는 MCM 드라이버는 네트워크에서 메시지를 신호로 전송하여 들어오는 호출에 대한 경고를 받습니다. 이러한 신호 메시지에서 호출 관리자 또는 MCM 드라이버는 들어오는 호출의 주소가 지정된 SAP를 포함하여 호출에 대한 호출 매개 변수를 추출합니다.

다음 그림에서는 들어오는 호출을 나타내는 MCM 드라이버를 보여줍니다.

수신 전화를 나타내는 MCM 드라이버를 보여 주는 다이어그램입니다.

다음 그림은 수신 전화를 나타내고 있는 호출 관리자를 보여줍니다.

들어오는 호출을 나타내는 호출 관리자를 보여 주는 다이어그램입니다.

들어오는 호출 매개 변수가 호출 관리자 또는 MCM 드라이버에 허용되지 않는 경우 신호 프로토콜에서 이러한 협상을 허용하는 경우 원격 당사자와 이러한 매개 변수의 변경을 협상하려고 시도할 수 있습니다. 또는 호출 관리자 또는 MCM 드라이버에서 호출 표시를 받은 후 들어오는 호출이 전달되는 클라이언트에서 호출 매개 변수 협상을 시도할 수 있습니다(Client-Initiated 통화 매개 변수 변경 요청참조). 호출 관리자 또는 MCM 드라이버가 원격 당사자와 통화에 대해 허용되는 호출 매개 변수를 협상할 수 없는 경우 호출을 거부할 수 있습니다. 신호 프로토콜은 이러한 경우에 가능한 것을 결정합니다.

클라이언트에 들어오는 호출을 나타내기 전에 호출 관리자 또는 MCM 드라이버는 호출이 전달되는 SAP를 식별해야 합니다. SAP는 이전에 클라이언트에 의해 등록된이어야 합니다. 또한 호출 관리자 또는 MCM 드라이버는 VC 을(를) 생성하고 이 VC 을(를) 활성화해야 합니다.

그런 다음 호출 관리자 또는 MCM 드라이버는 들어오는 호출이 전달되는 SAP를 등록한 클라이언트에 대한 수신 호출을 나타냅니다. 호출 관리자는 NdisCmDispatchIncomingCall으로 들어오는 호출을 나타냅니다. MCM 드라이버는 , NdisMCmDispatchIncomingCall을(를) 통해 들어오는 호출을 나타냅니다.

Ndis(M)CmDispatchIncomingCall호출에서 호출 관리자 또는 MCM 드라이버는 다음을 전달합니다.

  • 들어오는 호출이 처리되는 SAP를 식별하는 NdisSapHandle.

  • 들어오는 호출에 대한 가상 회로를 식별하는 NdisVcHandle.

  • 호출에 대한 호출 매개 변수를 포함하는 CO_CALL_PARAMETERS형식의 구조에 대한 포인터입니다.

Ndis(M)CmDispatchIncomingCall 호출하면 NDIS가 클라이언트의 ProtocolClIncomingCall 함수를 호출합니다. 이 함수는 클라이언트가 요청된 연결을 수락하거나 거부합니다. ProtocolClIncomingCall SAP, VC 및 호출 매개 변수의 유효성을 검사해야 합니다.

ProtocolClIncomingCall 동기적으로 완료하거나 NdisClIncomingCallComplete사용하여 NDIS_STATUS_PENDING 반환하고 비동기적으로 완료할 수 있습니다. NdisClIncomingCallComplete 호출하면 NDIS가 호출 관리자 또는 MCM 드라이버의 ProtocolCmIncomingCallComplete 함수를 호출합니다.

ProtocolClIncomingCall 동기 완료에 의해 반환되거나 NdisClIncomingCallComplete 제공된 NDIS_STATUS 코드는 클라이언트가 들어오는 호출을 수락하거나 거부했음을 나타냅니다. 또한 클라이언트는 버퍼링된 CO_CALL_PARAMETERS 구조에서 호출에 대한 호출 매개 변수를 반환합니다. 클라이언트가 호출 매개 변수를 허용할 수 없는 경우 신호 프로토콜에서 허용되는 경우 CALL_PARAMETERS_CHANGED 사용하여 CO_CALL_PARAMETERS 구조에서 Flags 멤버를 설정하고 버퍼링된 CO_CALL_PARAMETERS 구조에 수정된 호출 매개 변수를 제공하여 호출 매개 변수의 변경을 요청할 수 있습니다.

클라이언트가 수신 전화를 수락하는 경우 호출 관리자 또는 MCM 드라이버는 호출이 수락되었음을 나타내는 신호 메시지를 호출 엔터티에 보내야 합니다. 그렇지 않으면 호출 관리자 또는 MCM 드라이버는 통화가 거부되었음을 나타내는 신호 메시지를 보내야 합니다. 클라이언트가 호출 매개 변수 변경을 요청하는 경우 호출 관리자 또는 MCM 드라이버는 호출 매개 변수 변경을 요청하기 위해 신호 메시지를 보냅니다.

클라이언트가 호출을 수락하거나 원격 당사자가 클라이언트의 요청된 호출 매개 변수 변경을 수락한 경우 호출 관리자는 NdisCmDispatchCallConnected호출하고 MCM 드라이버는 NdisMCmDispatchCallConnected호출합니다. Ndis(M)CmDispatchCallConnected 호출하면 NDIS에서 클라이언트의 ProtocolClCallConnected 함수를 호출합니다.

클라이언트가 호출을 거부했고 호출 관리자 또는 MCM 드라이버가 수신 호출에 대한 VC를 이미 활성화한 경우 호출 관리자 또는 MCM 드라이버는 Ndis(M)CmDeactivateVc 호출하여 VC가 활성화된 경우 VC를 비활성화합니다. 호출 관리자 또는 MCM 드라이버는 호출 관리자의 경우 NdisCoDeleteVc 호출하거나 MCM 드라이버의 경우 NdisMCmDeleteVc 호출하여 VC 삭제를 시작할 수 있습니다.

클라이언트가 통화를 수락했지만 엔드투엔드 연결이 성공적으로 설정되지 않은 경우(예: 원격 당사자가 호출을 중단했기 때문에) 호출 관리자 또는 MCM 드라이버는 Ndis(M)CmDispatchCallConnected호출하지 않습니다. 대신 Ndis(M)CmDispatchIncomingCloseCall호출하므로 NDIS는 클라이언트의 ProtocolClIncomingCloseCall 함수를 호출합니다. 그런 다음 클라이언트는 NdisCloseCall 호출하여 호출의 중단을 완료해야 합니다. 그런 다음 호출 관리자 또는 MCM 드라이버는 Ndis(M)CmDeactivateVC 호출하여 들어오는 호출에 대해 만든 VC 비활성화할 있습니다. 호출 관리자 또는 MCM 드라이버는 호출 관리자의 경우 NdisCoDeleteVc 호출하거나 MCM 드라이버의 경우 NdisMCmDeleteVc 호출하여 VC 삭제를 시작할 수 있습니다.