다음을 통해 공유


PROTOCOL_CM_REG_SAP 콜백 함수(ndis.h)

ProtocolCmRegisterSap 함수는 호출 관리자가 연결 지향 클라이언트를 대신하여 SAP(서비스 액세스 지점)를 등록하도록 요청하기 위해 NDIS에서 호출하는 필수 함수입니다.

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

통사론

PROTOCOL_CM_REG_SAP ProtocolCmRegSap;

NDIS_STATUS ProtocolCmRegSap(
  [in]  NDIS_HANDLE CallMgrAfContext,
  [in]  PCO_SAP Sap,
  [in]  NDIS_HANDLE NdisSapHandle,
  [out] PNDIS_HANDLE CallMgrSapContext
)
{...}

매개 변수

[in] CallMgrAfContext

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

[in] Sap

연결 지향 클라이언트가 등록하는 특정 SAP를 포함하는 미디어별 CO_SAP 구조체에 대한 포인터입니다.

[in] NdisSapHandle

이 SAP를 고유하게 식별하는 NDIS에서 제공하는 핸들을 지정합니다. 이 핸들은 호출 관리자에게 불투명하며 NDIS 라이브러리 사용을 위해 예약됩니다.

[out] CallMgrSapContext

반환 시 호출 관리자가 이 SAP에 대한 상태를 유지하는 호출 관리자 제공 컨텍스트 영역에 대한 핸들을 지정합니다.

반환 값

ProtocolCmRegisterSap 작업 상태를 다음 중 하나로 반환합니다.

반환 코드 묘사
NDIS_STATUS_SUCCESS
호출 관리자가 SAP를 등록하고 유지 관리하는 데 필요한 리소스를 성공적으로 할당 및/또는 초기화했음을 나타냅니다. 또한 호출 관리자가 지원하는 네트워크 미디어에서 요구하는 대로 SAP가 성공적으로 등록되었음을 나타냅니다.
NDIS_STATUS_PENDING
호출 관리자가 이 요청의 처리를 비동기적으로 완료했음을 나타냅니다. 통화 관리자가 호출해야 합니다. NdisCmRegisterSapComplete는 등록이 완료되었음을 NDIS에 알리기 위해 모든 처리가 완료되면.
NDIS_STATUS_RESOURCES
호출 관리자가 연결 지향 클라이언트를 대신하여 SAP를 등록하는 데 필요한 리소스를 할당하거나 초기화할 수 없음을 나타냅니다.
NDIS_STATUS_INVALID_DATA
Sap 제공된 사양이 잘못되었거나 지원될 수 없음을 나타냅니다.
NDIS_STATUS_XXX
연결 지향 클라이언트에 SAP를 등록하려고 할 때 호출 관리자가 오류가 발생했음을 나타냅니다. 반환 코드는 오류에 적합하며 다른 NDIS 라이브러리 함수에서 전파된 반환 코드일 수 있습니다.

발언

ProtocolCmMakeCall 필요에 따라 네트워크 제어 디바이스 또는 기타 미디어 특정 에이전트와 통신하여 연결 지향 클라이언트에 대해 Sap지정된 대로 SAP를 등록합니다. 이러한 작업에는 하드웨어 전환, 네트워크 제어 스테이션과의 통신 또는 네트워크 매체에 적합한 기타 작업과 통신하는 작업이 포함될 수 있지만 이에 국한되지는 않습니다.

호출 관리자가 네트워킹 제어 에이전트(즉, 네트워크 스위치)와 통신해야 하는 경우 ProtocolBindAdapterEx 함수에서 설정한 네트워크 제어 에이전트에 대한 가상 연결을 사용해야 합니다. 독립 실행형 통화 관리자는 NdisCoSendNetBufferLists호출하여 기본 미니포트 드라이버를 통해 통신합니다. 통합된 통화 관리 지원을 사용하는 미니포트 드라이버는 NdisCoSendNetBufferLists호출하지 않습니다. 대신 네트워크를 통해 직접 데이터를 전송합니다.

또한 ProtocolCmRegisterSap 호출 관리자가 연결 지향 클라이언트를 대신하여 SAP에 대한 상태 정보를 유지 관리하는 데 필요한 동적 리소스 및 구조의 필요한 할당을 수행해야 합니다. 이러한 리소스는 메모리 버퍼, 데이터 구조, 이벤트 및 기타 유사한 리소스를 포함하지만 이에 국한되지 않습니다. 또한 호출 관리자는 컨트롤을 NDIS로 반환하기 전에 할당하는 모든 리소스를 초기화해야 합니다. 통화 관리자는 나중에 사용할 컨텍스트 영역에 NdisSapHandle제공된 SAP를 식별하는 NDIS 제공 핸들을 저장해야 합니다.

ProtocolCmRegisterSap NDIS_STATUS_SUCCESS 반환하는 경우 SAP별 상태 영역을 할당한 후 NDIS로 제어를 반환하기 전에 CallMgrSapContext 이 상태 영역의 주소를 설정해야 합니다. 이렇게 하려면 CallMgrSapContext 역참조하고 데이터 영역에 대한 포인터를 핸들 값으로 저장합니다. 예를 들어:

*CallMgrSapContext = SomeBuffer ;

다른 연결 지향 클라이언트에서 이미 등록된 지정된 SAP인 경우 호출 관리자가 요청을 실패하고 NDIS_STATUS_INVALID_DATA 반환해야 합니다.

통화 관리자가 연결 지향 클라이언트를 대신하여 SAP를 등록한 후 호출을 통해 수신 통화 제안의 클라이언트에 해당 SAP로 전달되었음을 알 수 있습니다. NdisCmDispatchIncomingCall.

예제

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

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

PROTOCOL_CM_REG_SAP MyCmRegisterSap;

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

_Use_decl_annotations_
NDIS_STATUS
 MyCmRegisterSap(
    NDIS_HANDLE  CallMgrAfContext,
    PCO_SAP  Sap,
    NDIS_HANDLE  NdisSapHandle,
    PNDIS_HANDLE  CallMgrSapContext
    )
  {...}

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

Use_decl_annotations대한 자세한 내용은 함수 동작 주석참조하세요.

요구 사항

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

참고 항목

NdisCmDispatchIncomingCall

NdisCmRegisterSapComplete

NdisCoSendNetBufferLists

ProtocolCmDeregisterSap

ProtocolCmOpenAf