다음을 통해 공유


Client-Initiated 호출 매개 변수 변경 요청

클라이언트는 NdisClModifyCallQoS를 사용하여 활성 VC(가상 연결)에서 QoS(서비스 품질) 변경을 요청합니다.

다음 그림에서는 서비스 품질 변경을 요청하는 호출 관리자의 클라이언트를 보여줍니다.

활성 VC에서 QoS 변경을 요청하는 호출 관리자의 클라이언트를 보여 주는 다이어그램

다음 그림은 서비스 품질 변경을 요청하는 MCM 드라이버의 클라이언트를 보여줍니다.

활성 VC에서 QoS 변경을 요청하는 MCM 드라이버의 클라이언트를 보여 주는 다이어그램

NdisClModifyCallQoS 호출에서 클라이언트는 다음을 제공합니다.

  • VC 를 식별하는 NdisVcHandle 매개 변수입니다.

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

클라이언트가 QoS의 변경을 요청할 수 있는 상황은 신호 프로토콜에 의해 결정됩니다.

NdisClModifyCallQoS를 호출하면 NDIS가 호출 관리자 또는 MCM 드라이버의 ProtocolCmModifyCallQoS 함수를 호출합니다. 이 함수는 클라이언트가 NdisClModifyCallQoS에 전달하는 NdisVcHandle 및 버퍼링된 CO_CALL_PARAMETERS 구조를 입력합니다. ProtocolCmModifyQoS 는 네트워크에서 필요로 하는 네트워크 제어 디바이스 또는 기타 미디어 관련 에이전트와 통신하여 설정된 가상 연결에 대한 미디어별 호출 매개 변수를 수정합니다.

네트워크와 통신하고 변경이 성공했는지 확인하면 호출 관리자는 NdisCmActivateVc(및 MCM 드라이버는 NdisMCmActivateVc)를 호출하여 새 호출 매개 변수를 사용하여 지정된 VC를 활성화해야 합니다.

네트워크에서 새 호출 매개 변수를 수락하지 않거나 기본 미니포트 드라이버가 매개 변수를 수락할 수 없는 경우 호출 관리자 또는 MCM 드라이버는 수정을 시도하기 전에 존재했던 상태로 VC를 복원하고 NDIS_STATUS_FAILURE 반환해야 합니다.

클라이언트의 QoS 변경 요청 상태 나타내기 위해 호출 관리자는 NdisCmModifyCallQoSComplete를 호출하고 MCM 드라이버는 NdisMCmModifyCallQoSComplete를 호출합니다. 이 호출에서 호출 관리자 또는 MCM 드라이버는 다음을 전달합니다.

  • 요청의 상태 나타내는 NDIS_STATUS.

  • VC 를 식별하는 NdisVcHandle 입니다.

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

신호 프로토콜에서 허용되는 경우 호출 관리자 또는 MCM 드라이버는 수정된 호출 매개 변수를 클라이언트에 다시 전달할 수 있습니다. 이러한 수정은 네트워크와의 협상의 산물이거나 호출 관리자 또는 MCM 드라이버 자체에서 제공할 수 있습니다. 호출 관리자 또는 MCM 드라이버는 CO_CALL_PARAMETERS 구조에서 CALL_PARAMETERS_CHANGED 플래그를 설정하여 호출 매개 변수가 수정되었음을 나타내야 합니다.

Ndis(M)CmModifyCallQoSComplete를 호출하면 NDIS에서 클라이언트의 ProtocolClModifyCallQoSComplete 함수를 호출합니다. NDIS는 ProtocolClModifyCallQoSComplete에 다음을 전달합니다.

  • QoS를 변경하기 위한 클라이언트 요청의 상태 나타내는 NDIS_STATUS.

  • VC를 식별하는 ProtocolVcContext 핸들입니다.

  • 호출 관리자 또는 MCM 드라이버가 Ndis(M)CmModifyCallQoSComplete에 전달하는 호출 매개 변수를 포함하는 CO_CALL_PARAMETERS 구조체에 대한 포인터입니다.

CALL_PARAMETERS_CHANGED 플래그가 CO_CALL_PARAMETERS 구조에 설정된 경우 클라이언트는 반환된 호출 매개 변수를 검사하고 수정이 허용되는지 여부를 확인해야 합니다. 클라이언트의 NdisClModifyCallQoS 호출이 성공하면 ProtocolClModifyCallQoSComplete는 단순히 컨트롤을 반환하여 QoS 변경을 수락할 수 있습니다. 그렇지 않으면 ProtocolClModifyCallQoSComplete 는 신호 프로토콜에서 허용되는 경우 호출 관리자와 추가 협상에 참여할 수 있으며 클라이언트의 개발자가 가능한 재협상 횟수에 적절한 제한을 두는 한 가능합니다. 또는 ProtocolClModifyCallQoSComplete 는 호출 관리자가 QoS 변경 요청을 거부하고 이전에 설정된 QoS가 클라이언트에서 허용되지 않는 경우 NdisCloseCall(클라이언트 에서 시작한 통화 닫기 요청 참조)을 사용하여 단순히 호출을 해제할 수 있습니다.