PROTOCOL_CL_REGISTER_SAP_COMPLETE 콜백 함수(ndis.h)

들어오는 호출을 수락하는 연결 지향 NDIS 클라이언트에는 NdisClRegisterSap으로 시작하는 비동기 작업을 완료하기 위한 ProtocolClRegisterSapComplete 함수가 있어야 합니다. 그렇지 않으면 이러한 프로토콜 드라이버의 등록된 ProtocolClRegisterSapComplete 함수는 컨트롤을 반환할 수 있습니다.

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

구문

PROTOCOL_CL_REGISTER_SAP_COMPLETE ProtocolClRegisterSapComplete;

void ProtocolClRegisterSapComplete(
  [in] NDIS_STATUS Status,
  [in] NDIS_HANDLE ProtocolSapContext,
  [in] PCO_SAP Sap,
  [in] NDIS_HANDLE NdisSapHandle
)
{...}

매개 변수

[in] Status

다음 중 하나일 수 있는 NdisClRegisterSap에 대한 클라이언트 호출의 최종 상태 지정합니다.

NDIS_STATUS_SUCCESS

SAP는 NDIS와 통화 관리자 모두에 등록되었으며, 이후에 호출됩니다. NdisCmDispatchIncomingCall 은 지정된 SAP로 전달되는 수신 호출 제안을 받을 때마다 NDIS가 클라이언트를 호출하게 합니다. ProtocolClIncomingCall 함수입니다.

NDIS_STATUS_RESOURCES

NDIS 또는 호출 관리자가 SAP를 등록하고 유지 관리하는 데 필요한 리소스를 할당 및/또는 초기화할 수 없습니다.

NDIS_STATUS_INVALID_DATA

클라이언트는 유효성 검사를 위해 호출 관리자의 ProtocolCmRegisterSap 함수로 전달된 Sap의 잘못된 사양을 NDIS에 제공했습니다.

NDIS_STATUS_XXX

호출 관리자가 지정된 SAP 및 NDIS를 등록하려고 할 때 오류가 발생하여 이 CM 결정 실패 상태 클라이언트에 전파되었습니다.

[in] ProtocolSapContext

클라이언트가 NdisClRegisterSap을 호출할 때 원래 NDIS에 제공한 클라이언트의 SAP별 컨텍스트 영역에 대한 핸들을 지정합니다. 등록에 성공하면 NDIS는 이 컨텍스트 핸들을 유지하고 이후에 이 SAP와 관련된 클라이언트의 ProtocolClIncomingCall 함수 호출에서 사용합니다.

[in] Sap

열려는 SAP에 대한 사양을 포함하는 클라이언트 할당 버퍼에 대한 포인터입니다. 클라이언트는 원래 이 포인터를 NdisClRegisterSap에 전달했습니다.

[in] NdisSapHandle

Status가 NDIS_STATUS_SUCCESS 경우 이 등록된 SAP에 대한 NDIS 제공 유효한 핸들을 지정합니다. 이는 클라이언트와 클라이언트가 지정한 SAP의 특정 호출 관리자 간에 NDIS와 효과적으로 연결됩니다. 그렇지 않으면 이 매개 변수는 NULL입니다. 클라이언트는 NdisClDeregisterSap에 대한 최종 호출을 위해 프로토콜SapContext 영역에 유효한 핸들을 저장해야 합니다.

반환 값

없음

설명

NDIS는 ProtocolClRegisterSapComplete를 호출하여 NdisClRegisterSap에 대한 클라이언트의 이전 호출이 NDIS에 의해 처리되었음을 나타내고, NDIS가 호출에 실패하지 않은 경우 클라이언트가 NdisClRegisterSap에 전달한 NdisAfHandle을 공유하는 호출 관리자에 의해 처리되었음을 나타냅니다.

연결 지향 NIC를 통해 들어오는 호출을 수신하려면 클라이언트의 ProtocolCoAfRegisterNotify 또는 ProtocolClOpenAfCompleteEx 함수는 일반적으로 하나 이상의 SAP를 호출 관리자에 등록합니다.

각 SAP를 등록하기 위해 클라이언트는 NdisClRegisterSap을 호출하고, NdisClRegisterSap에 대한 클라이언트의 호출이 성공하면 클라이언트가 들어오는 호출 알림을 수신하려는 호출 관리자를 식별하는 NdisAfHandle을 전달하고, NDIS는 클라이언트가 등록된 SAP에 NdisSapHandle을 반환합니다. ProtocolClRegisterSapComplete는 일반적으로 클라이언트의 SAP별 ProtocolSapContext 영역에 유효한 각 NdisSapHandle을 저장해야 하므로 나중에 NdisClDeregisterSap을 사용하여 SAP를 릴리스할 수 있습니다.

SAP 형식은 호출 관리자와 관련이 있습니다. 호출 관리자가 클라이언트가 등록하려는 SAP를 인식하지 못하거나 지정된 SAP가 이미 사용 중인 경우 호출 관리자가 SAP 등록에 실패할 수 있습니다. ProtocolClRegisterSapComplete는 추가로 프로시전하기 전에 NDIS_STATUS_SUCCESS 대한 입력 상태를 검사 합니다. SAP 등록 시도가 실패한 경우
ProtocolClRegisterSapComplete 는 클라이언트가 할당한 Sap 에서 SAP별 컨텍스트 영역 및 버퍼를 해제하거나 NdisClRegisterSap에 대한 다른 호출에서 다시 사용할 수 있도록 준비할 수 있습니다.

클라이언트는 SAP 등록이 보류 중인 동안, 즉 ProtocolClRegisterSapComplete 함수가 호출되기 전에 SAP에서 들어오는 호출을 받을 수 있습니다.

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

예를 들어 이름이 " MyClRegisterSapComplete"인 ProtocolClRegisterSapComplete 함수를 정의하려면 이 코드 예제와 같이 PROTOCOL_CL_REGISTER_SAP_COMPLETE 형식을 사용합니다.

PROTOCOL_CL_REGISTER_SAP_COMPLETE MyClRegisterSapComplete;

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

_Use_decl_annotations_
VOID
 MyClRegisterSapComplete(
    NDIS_STATUS  Status,
    NDIS_HANDLE  ProtocolSapContext,
    PCO_SAP  Sap,
    NDIS_HANDLE  NdisSapHandle
    )
  {...}

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

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

요구 사항

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

추가 정보

NdisClDeregisterSap

NdisClRegisterSap

NdisCmDispatchIncomingCall

NdisCmRegisterSapComplete

NdisFreeMemory

NdisFreeToNPagedLookasideList

NdisMCmDispatchIncomingCall

NdisMCmRegisterSapComplete

ProtocolClIncomingCall

ProtocolClOpenAfCompleteEx

ProtocolCmRegisterSap

ProtocolCoAfRegisterNotify