NdisCmMakeCallComplete 함수(ndis.h)

NdisCmMakeCallComplete 는 호출 관리자가 이전에 NDIS_STATUS_PENDING 반환한 클라이언트 요청의 최종 상태를 반환하여 발신 전화를 걸 수 있습니다.

구문

void NdisCmMakeCallComplete(
  [in]           NDIS_STATUS         Status,
  [in]           NDIS_HANDLE         NdisVcHandle,
  [in, optional] NDIS_HANDLE         NdisPartyHandle,
  [in, optional] NDIS_HANDLE         CallMgrPartyContext,
  [in]           PCO_CALL_PARAMETERS CallParameters
);

매개 변수

[in] Status

NDIS_STATUS_PENDING 제외하고 NDIS_STATUS_SUCCESS 또는 CM 결정 NDIS_STATUS_ XXX 를 연결하려는 시도의 최종 상태를 지정합니다.

[in] NdisVcHandle

호출 관리자가 원래 ProtocolCoCreateVc 함수에 대한 입력 매개 변수로 가져온 클라이언트에서 만든 VC에 대한 핸들을 지정합니다. 최근에 CM은 ProtocolCmMakeCall 함수에 전달된 CallMgrVcContext에 의해 지정된 VC별 상태에서 이 핸들을 얻었습니다.

[in, optional] NdisPartyHandle

호출 관리자가 ProtocolCmMakeCall 함수에 대한 입력 매개 변수로 가져온 클라이언트에서 만든 다중 포인트 VC의 초기 파티에 대한 핸들을 지정합니다. 지정된 NdisVcHandle 이 지점 간 VC를 나타내는 경우 이 매개 변수는 NULL입니다.

[in, optional] CallMgrPartyContext

CM이 파티별 상태 정보를 유지 관리하는 호출자 할당 상주 컨텍스트 영역에 대한 CM 제공 핸들을 지정하고, NdisPartyHandleNULL인 경우 NULL을 지정합니다. 다중 포인트 VC의 경우 NDIS는 이 파티와 관련된 ProtocolCmXxx 함수에 대한 모든 후속 호출에서 이 CM 제공 CallManagerPartyContext 핸들을 전달합니다. 그렇지 않으면 NDIS는 이 매개 변수를 무시합니다.

[in] CallParameters

상태가 NDIS_STATUS_SUCCESS 경우 이 연결에 대해 설정된 호출 매개 변수를 지정하는 형식 CO_CALL_PARAMETERS 구조에 대한 포인터입니다.

반환 값

없음

설명

독립 실행형 호출 관리자는 기본 미니포트 드라이버가 VC에서 데이터 전송을 수행할 준비가 된 경우에만 NDIS_STATUS_SUCCESS NdisMCmMakeCallComplete 를 호출해야 합니다. 즉, 호출 관리자는 네트워크와 협상하여 VC에 대한 호출 매개 변수를 설정하고 NdisCmActivateVc 를 성공적으로 호출했습니다.

독립 실행형 호출 관리자는 ProtocolCmMakeCall 함수가 이전에 지정된 NdisVcHandle에 대한 NDIS_STATUS_PENDING 반환한 경우 NdisCmMakeCallComplete를 호출해야 합니다. 보류 중인 나가는 호출을 시작한 클라이언트는 CM이 NDIS_STATUS_SUCCESS NdisCmMakeCallComplete 를 호출할 때까지 VC를 사용하여 전송할 수 없습니다.

실패한 연결이 실패하더라도 CM이 NdisCmMakeCallComplete 를 호출하여 해당 클라이언트의 ProtocolClMakeCallComplete 함수를 호출할 때까지 NDIS나 클라이언트는 상태를 유지하기 위해 할당한 리소스를 해제할 수 없습니다. 실제로 이러한 연결을 설정하지 못한 경우 NdisCmMakeCallComplete 를 호출하지 않으면 호출 관리자에서도 메모리 누수가 발생합니다. 클라이언트가 실패한 나가는 호출에 대해 만든 VC를 중단하지 않도록 하므로 해당 VC에 할당된 리소스를 해제하기 위해 CM이 호출되지 않습니다.

CM이 상태의 NDIS_STATUS_FAILURE 같은 오류를 전달하는 경우 NdisCmMakeCallComplete를 호출하는 즉시 잘못된 NdisPartyHandle(있는 경우)을 고려해야 합니다. CM은 NdisCmMakeCallComplete 가 컨트롤을 반환할 때 지정된 파티의 상태를 유지하기 위해 할당된 모든 리소스를 해제(또는 재사용을 위해 다시 초기화)할 수 있습니다. CM의 ProtocolCoDeleteVc 함수는 CM이 NdisCmMakeCallComplete에 오류 상태를 전달할 때마다 클라이언트에서 만든 VC의 상태를 추적하기 위해 CM이 할당한 모든 리소스를 해제하기 위해 호출됩니다.

클라이언트에서 시작한 발신 호출을 설정하는 과정에서 CM은 원래 ProtocolCmMakeCall 함수에 전달된 클라이언트 제공 호출 매개 변수를 수정할 수 있습니다. 이 경우 CM은 NdisCmMakeCallComplete를 호출할 때 CallParameters의 버퍼에서 수정 사항을 전달해야 합니다. 클라이언트가 이러한 수정된 호출 매개 변수를 허용할 수 없다고 판단되면 호출이 중단되며, 이로 인해 CM의 ProtocolCoDeleteVc 함수도 호출됩니다.

NDIS를 프로토콜 드라이버로 등록하는 독립 실행형 통화 관리자만 NdisCmMakeCallComplete를 호출할 수 있습니다. 통합 통화 관리 지원을 제공하는 미니포트 드라이버는 대신 NdisMCmMakeCallComplete 를 호출합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows Vista에서 NDIS 6.0 및 NDIS 5.1 드라이버(NdisCmMakeCallComplete(NDIS 5.1) 참조)에 대해 지원됩니다. Windows XP에서 NDIS 5.1 드라이버(NdisCmMakeCallComplete(NDIS 5.1) 참조)에 대해 지원됩니다.
대상 플랫폼 데스크톱
머리글 ndis.h(Ndis.h 포함)
라이브러리 Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 규정 준수 규칙 Irql_CallManager_Function(ndis)

참고 항목

CO_CALL_PARAMETERS

NdisAllocateFromNPagedLookasideList

NdisClMakeCall

NdisMCmMakeCallComplete

ProtocolClMakeCallComplete

ProtocolCmMakeCall

ProtocolCoDeleteVc