PROTOCOL_CL_INCOMING_CALL 콜백 함수(ndis.h)

ProtocolClIncomingCall 함수는 들어오는 호출을 수락하는 연결 지향 클라이언트에서 사용됩니다. 이러한 클라이언트에는 ProtocolClIncomingCall 함수가 있어야 합니다. 그렇지 않으면 이러한 프로토콜 드라이버의 등록된 ProtocolClIncomingCall 함수는 단순히 NDIS_STATUS_NOT_SUPPORTED 반환할 수 있습니다.

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

구문

PROTOCOL_CL_INCOMING_CALL ProtocolClIncomingCall;

NDIS_STATUS ProtocolClIncomingCall(
  [in]      NDIS_HANDLE ProtocolSapContext,
  [in]      NDIS_HANDLE ProtocolVcContext,
  [in, out] PCO_CALL_PARAMETERS CallParameters
)
{...}

매개 변수

[in] ProtocolSapContext

호출 관리자가 들어오는 호출 제안과 일치하는 SAP를 등록할 때 클라이언트가 원래 제공한 핸들을 지정합니다.

[in] ProtocolVcContext

이전에 ProtocolCoCreateVc 함수에 의해 NDIS로 반환된 클라이언트의 VC별 컨텍스트 영역에 대한 핸들을 지정합니다.

[in, out] CallParameters

제공된 이 호출에 대한 호출 매개 변수를 포함하는 CO_CALL_PARAMETERS 구조체로 형식이 지정된 버퍼에 대한 포인터입니다.

반환 값

ProtocolClIncomingCall 은 다음 상태 코드 중 하나를 반환할 수 있습니다.

반환 코드 설명
NDIS_STATUS_SUCCESS
클라이언트가 들어오는 호출 제안을 수락했습니다.
NDIS_STATUS_PENDING
클라이언트는 이 요청을 비동기적으로 처리하며닫기 작업이 완료되면 NdisClIncomingCallComplete 함수입니다.
NDIS_STATUS_XXX
클라이언트는 드라이버로 결정된 이유로 들어오는 호출 제안을 거부했습니다.

설명

ProtocolClIncomingCall에 대한 호출은 호출 관리자가 이 클라이언트와의 연결을 설정하기 위해 신호 피어로부터 네트워크를 통해 요청을 수신했음을 나타냅니다. 즉, 이러한 연결을 설정하는 요청은 이전에 이 클라이언트에서 호출 관리자에 등록된 SAP로 전달되었습니다.

호출 관리자가 지원하는 신호 프로토콜에 따라 ProtocolClIncomingCall 은 들어오는 호출 제안의 수용을 협상하는 프로세스의 일부로 트래픽 매개 변수를 수정하거나 호출 관리자가 QoS를 지원하는 경우 CallParameters 의 서비스 품질 사양을 수정할 수 있습니다. 클라이언트는 제공된 호출을 수락하는 경우 이 버퍼링된 구조에서 이후에 필요한 모든 정보를 복사해야 합니다.

호출 관리자가 클라이언트의 수정 사항을 찾은 경우 허용되는 경우 NDIS는 원래 호출 제안을 시작한 원격 노드의 클라이언트에 대한 연결을 나타내는 활성 VC에서 전송이 발생할 수 있게 되면 클라이언트의 ProtocolClIncomingCallConnected 함수를 호출합니다. 클라이언트가 허용되지 않는 수정된 호출 매개 변수를 반환하는 경우 호출 관리자는 이 제품에 대해 만든 VC를 삭제하여 클라이언트에 대한 호출을 발생시킬 수 있습니다. ProtocolClIncomingCloseCallProtocolCoDeleteVc 함수를 대신 사용합니다.

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

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

PROTOCOL_CL_INCOMING_CALL MyClIncomingCall;

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

_Use_decl_annotations_
NDIS_STATUS
 MyClIncomingCall(
    NDIS_HANDLE  ProtocolSapContext,
    NDIS_HANDLE  ProtocolVcContext,
    PCO_CALL_PARAMETERS  CallParameters
    )
  {...}

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

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

요구 사항

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

참고 항목

CO_CALL_PARAMETERS

NdisClIncomingCallComplete

NdisClRegisterSap

NdisCmDispatchIncomingCall

NdisMCmDispatchIncomingCall

ProtocolClCallConnected

ProtocolClIncomingCloseCall

ProtocolCoCreateVc

ProtocolCoDeleteVc