PROTOCOL_CM_MAKE_CALL 콜백 함수(ndis.h)

ProtocolCmMakeCall 함수는 VC(가상 연결)에 대한 미디어별 매개 변수를 설정하고 가상 연결을 활성화하는 필수 함수입니다.

참고PROTOCOL_CM_MAKE_CALL 형식을 사용하여 함수를 선언해야 합니다. 자세한 내용은 다음 예제 섹션을 참조하세요.
 

구문

PROTOCOL_CM_MAKE_CALL ProtocolCmMakeCall;

NDIS_STATUS ProtocolCmMakeCall(
  [in]            NDIS_HANDLE CallMgrVcContext,
  [in, out]       PCO_CALL_PARAMETERS CallParameters,
  [in, optional]  NDIS_HANDLE NdisPartyHandle,
  [out, optional] PNDIS_HANDLE CallMgrPartyContext
)
{...}

매개 변수

[in] CallMgrVcContext

호출 관리자가 VC별 상태를 유지하는 호출 관리자 할당 컨텍스트 영역에 대한 핸들을 지정합니다. 호출 관리자는 ProtocolCoCreateVc 함수에서 이 핸들을 NDIS에 제공했습니다.

[in, out] CallParameters

이 나가는 호출에 대해 연결 지향 클라이언트에서 지정한 매개 변수를 포함하는 CO_CALL_PARAMETERS 구조체에 대한 포인터입니다.

[in, optional] NdisPartyHandle

멀티포인트 가상 연결에서 초기 파티를 고유하게 식별하는 NDIS에서 제공하는 핸들을 지정합니다. 이 핸들은 호출 관리자에 대해 불투명하며 NDIS 라이브러리 사용을 위해 예약되어 있습니다. 클라이언트가 나가는 멀티포인트 호출을 설정하지 않는 경우 이 핸들은 NULL 입니다.

[out, optional] CallMgrPartyContext

반환 시 호출 관리자가 다중 포인트 호출의 초기 당사자에 대한 상태를 유지하는 호출 관리자 제공 컨텍스트 영역에 대한 핸들을 지정합니다. NdisPartyHandleNULL이면 이 핸들을 NULL로 설정해야 합니다.

반환 값

ProtocolCmMakeCall은 작업의 상태 다음 값 중 하나로 반환합니다.

반환 코드 설명
NDIS_STATUS_SUCCESS
호출 관리자가 호출에 필요한 리소스를 성공적으로 할당했으며 미니포트 드라이버로 가상 연결을 활성화할 수 있음을 나타냅니다.
NDIS_STATUS_PENDING
호출 관리자가 비동기적으로 호출하기 위한 요청을 완료했음을 나타냅니다. 호출 관리자가 호출에 대한 모든 작업을 완료한 경우 NdisCmMakeCallComplete 를 호출하여 이 호출이 완료되었음을 NDIS에 신호를 보내야 합니다.
NDIS_STATUS_RESOURCES
호출 관리자가 클라이언트의 요청에 따라 가상 연결을 활성화하기 위해 리소스를 할당 및/또는 초기화할 수 없음을 나타냅니다.
NDIS_STATUS_NOT_SUPPORTED
호출자가 CallParameters 에 지정된 호출 매개 변수에서 유효하지 않거나 사용할 수 없는 기능을 요청했기 때문에 호출 관리자가 가상 연결을 활성화할 수 없음을 나타냅니다.

설명

ProtocolCmMakeCall에 명시적 NdisPartyHandle이 제공되면 이 VC는 클라이언트가 다중 포인트 호출을 위해 만들었습니다. 호출 관리자는 상태 정보를 유지하고 다중 포인트 호출을 제어하는 데 필요한 모든 리소스를 할당하고 초기화해야 합니다. 이러한 리소스에는 메모리 버퍼, 데이터 구조, 이벤트 및 기타 유사한 리소스가 포함되지만 이에 국한되지는 않습니다. 호출 관리자가 해당 상태 영역에 필요한 리소스를 할당하거나 초기화할 수 없는 경우 NDIS_STATUS_RESOURCES 사용하여 NDIS에 제어권을 반환해야 합니다.

ProtocolCmMakeCall은 필요에 따라 네트워크 제어 디바이스 또는 기타 미디어 관련 행위자와 통신하여 CallParameters 에 지정된 호출 매개 변수를 기반으로 로컬 노드와 원격 노드 간에 연결합니다. 이러한 작업에는 하드웨어 전환과의 통신, 네트워크 제어 스테이션과의 통신 또는 네트워크 매체에 적합한 기타 작업이 포함될 수 있지만 이에 국한되지는 않습니다.

호출 관리자가 네트워킹 하드웨어(예: 네트워킹 스위치)와 통신해야 하는 경우 ProtocolBindAdapterEx 함수에서 설정한 네트워크 제어 디바이스에 대한 가상 연결을 사용해야 합니다. 호출 관리자는 NdisCoSendNetBufferLists를 호출하여 미니포트 드라이버를 통해 네트워크 하드웨어와 통신합니다. 통합 통화 관리 지원을 사용하는 미니포트 드라이버는 NdisCoSendNetBufferLists를 호출하지 않고 데이터 자체를 전송합니다.

통화 관리자가 해당 매체에서 요구하는 대로 네트워킹 하드웨어와 필요한 모든 통신을 수행한 후 호출 관리자는 NdisCmActivateVc를 호출해야 합니다.

이 호출이 다중 포인트 호출인 경우 호출 관리자가 네트워킹 하드웨어와 통신하고, 확인된 호출 매개 변수를 사용하고, 해당 파티별 상태 데이터를 할당하고 초기화한 후에는 제어를 NDIS로 반환하기 전에 해당 상태 블록의 주소를 CallMgrPartyContext 핸들에 설정해야 합니다. 핸들은 핸들을 역참조하고 상태 블록에 대한 포인터를 핸들 값으로 저장하여 설정합니다. 예를 들면 다음과 같습니다.

*CallMgrPartyContext = SomeBuffer ;

ProtocolCmMakeCall이 네트워크에 필요한 작업을 완료하고 VC가 NdisCmActivateVc를 통해 성공적으로 활성화된 경우 ProtocolCmMakeCall은 STATUS_SUCCESS 상태 가능한 한 빨리 제어를 반환해야 합니다.

ProtocolCmMakeCall이 컨트롤을 NDIS로 반환한 후 호출 관리자는 이 호출에 대해 추가 작업을 수행하지 않고 설정해야 합니다. ProtocolCmMakeCall 은 클라이언트가 이 VC의 네트워크를 통해 데이터를 전송할 수 있도록 연결을 설정하는 역할을 담당합니다. 그러나 이후에 호출 관리자를 호출하여 호출의 서비스 품질을 수정하고, 다중 지점 VC인 경우 당사자를 추가하거나 삭제하고, 결국 이 호출을 종료할 수 있습니다.

ProtocolCmMakeCall 함수를 정의하려면 먼저 정의 중인 함수의 형식을 식별하는 함수 선언을 제공해야 합니다. Windows는 드라이버에 대한 함수 형식 집합을 제공합니다. 함수 형식을 사용하여 함수를 선언하면 드라이버에 대한 코드 분석, SDV( 정적 드라이버 검증 도구 ) 및 기타 확인 도구에서 오류를 찾는 데 도움이 되며 Windows 운영 체제용 드라이버를 작성하기 위한 요구 사항입니다.

예를 들어 " MyCmMakeCall"이라는 ProtocolCmMakeCall 함수를 정의하려면 다음 코드 예제와 같이 PROTOCOL_CM_MAKE_CALL 형식을 사용합니다.

PROTOCOL_CM_MAKE_CALL MyCmMakeCall;

그런 다음 다음과 같이 함수를 구현합니다.

_Use_decl_annotations_
NDIS_STATUS
 MyCmMakeCall(
    NDIS_HANDLE  CallMgrVcContext,
    PCO_CALL_PARAMETERS  CallParameters,
    NDIS_HANDLE  NdisPartyHandle,
    PNDIS_HANDLE  CallMgrPartyContext
    )
  {...}

PROTOCOL_CM_MAKE_CALL 함수 형식은 Ndis.h 헤더 파일에 정의되어 있습니다. 코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 Use_decl_annotations 주석을 추가해야 합니다. Use_decl_annotations 주석은 헤더 파일의 PROTOCOL_CM_MAKE_CALL 함수 형식에 적용되는 주석이 사용되도록 합니다. 함수 선언 요구 사항에 대한 자세한 내용은 NDIS 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요.

Use_decl_annotations 대한 자세한 내용은 함수 동작에 주석을 추가를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista에서 NDIS 6.0 및 NDIS 5.1 드라이버(ProtocolCmMakeCall(NDIS 5.1 참조))에 대해 지원됩니다. Windows XP에서 NDIS 5.1 드라이버(ProtocolCmMakeCall(NDIS 5.1 참조))에 대해 지원됩니다.
대상 플랫폼 Windows
헤더 ndis.h(Ndis.h 포함)
IRQL <= DISPATCH_LEVEL

추가 정보

NdisClMakeCall

NdisCmActivateVc

NdisCmMakeCallComplete

ProtocolCoCreateVc