PROTOCOL_CL_REGISTER_SAP_COMPLETE 콜백 함수(ndis.h)
들어오는 호출을 수락하는 연결 지향 NDIS 클라이언트에는 NdisClRegisterSap으로 시작하는 비동기 작업을 완료하는 ProtocolClRegisterSapComplete 함수가 있어야 합니다. 그렇지 않으면 이러한 프로토콜 드라이버의 등록된 ProtocolClRegisterSapComplete 함수가 컨트롤을 반환할 수 있습니다.
구문
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와 호출 관리자 모두에 등록되었으며, 그러면 지정된 SAP로 전달되는 수신 호출 제안을 받을 때마다 NdisCmDispatchIncomingCall 을 호출하여 NDIS가 클라이언트의 ProtocolClIncomingCall 함수를 호출하게 됩니다.
NDIS_STATUS_RESOURCES
NDIS 또는 호출 관리자가 SAP를 등록하고 유지 관리하는 데 필요한 리소스를 할당 및/또는 초기화할 수 없습니다.
NDIS_STATUS_INVALID_DATA
클라이언트는 Sap 에서 NDIS에 잘못된 사양을 제공했으며, 이 사양은 유효성 검사를 위해 호출 관리자의 ProtocolCmRegisterSap 함수로 전달되었습니다.
NDIS_STATUS_XXX
호출 관리자가 지정된 SAP를 등록하는 동안 오류가 발생했고 NDIS가 이 CM 결정 실패 상태를 클라이언트에 전파했습니다.
[in] ProtocolSapContext
클라이언트가 NdisClRegisterSap를 호출할 때 원래 NDIS에 제공한 클라이언트의 SAP별 컨텍스트 영역에 대한 핸들을 지정합니다. 등록에 성공하면 NDIS는 이 컨텍스트 핸들을 유지하고 이후에 이 SAP와 관련된 클라이언트의 ProtocolClIncomingCall 함수를 호출할 때 사용합니다.
[in] Sap
열려는 SAP에 대한 사양을 포함하는 클라이언트 할당 버퍼에 대한 포인터입니다. 클라이언트는 원래 이 포인터를 NdisClRegisterSap에 전달했습니다.
[in] NdisSapHandle
상태가 NDIS_STATUS_SUCCESS 경우 이 등록된 SAP에 대한 NDIS 제공 유효한 핸들을 지정합니다. 클라이언트와 클라이언트가 지정한 SAP에 대한 특정 호출 관리자 간에 NDIS로 설정된 연결입니다. 그렇지 않으면 이 매개 변수는 NULL입니다. 클라이언트는 NdisClDeregisterSap에 대한 최종 호출을 위해 해당 ProtocolSapContext 영역에 유효한 핸들을 저장해야 합니다.
반환 값
없음
설명
NDIS는 ProtocolClRegisterSapComplete를 호출하여 NdisClRegisterSap에 대한 클라이언트의 이전 호출이 NDIS에 의해 처리되었음을 나타내고, NDIS가 호출에 실패하지 않은 경우 클라이언트가 NdisClRegisterSap에 전달한 NdisAfHandle을 공유하는 호출 관리자에 의해 처리되었음을 나타냅니다.
연결 지향 NIC를 통해 들어오는 호출을 수신하기 위해 클라이언트의 ProtocolCoAfRegisterNotify 또는 ProtocolClOpenAfCompleteEx 함수는 일반적으로 하나 이상의 SAP를 호출 관리자에 등록합니다.
각 SAP를 등록하기 위해 클라이언트는 NdisClRegisterSap를 호출하고, 클라이언트가 들어오는 호출 알림을 수신하려는 호출 관리자를 식별하는 NdisAfHandle을 전달하고, NDIS는 클라이언트의 NdisClRegisterSap 호출이 성공하면 등록된 SAP에 NdisSapHandle을 반환합니다. ProtocolClRegisterSapComplete 는 각 유효한 NdisSapHandle을 저장해야 하며, 일반적으로 클라이언트당 SAP ProtocolSapContext 영역에 저장해야 나중에 NdisClDeregisterSap을 사용하여 SAP를 릴리스할 수 있습니다.
SAP의 형식은 호출 관리자에 따라 다릅니다. 호출 관리자가 클라이언트가 등록하려는 SAP를 인식하지 못하거나 지정된 SAP가 이미 사용 중인 경우 호출 관리자가 SAP 등록에 실패할 수 있습니다.
ProtocolClRegisterSapComplete 는 추가로 프로시전하기 전에 NDIS_STATUS_SUCCESS 대한 입력 상태를 확인해야 합니다. SAP 등록 시도가 실패한 경우
ProtocolClRegisterSapComplete 는 클라이언트가 할당한 SAP 의 SAP별 컨텍스트 영역 및 버퍼를 해제하거나 NdisClRegisterSap에 대한 다른 호출에서 다시 사용할 수 있도록 준비할 수 있습니다.
클라이언트는 SAP 등록이 보류 중인 동안, 즉 ProtocolClRegisterSapComplete 함수가 호출되기 전에 SAP에서 들어오는 호출을 받을 수 있습니다.
예제
ProtocolClRegisterSapComplete 함수를 정의하려면 먼저 정의하는 함수의 형식을 식별하는 함수 선언을 제공해야 합니다. Windows 드라이버에 대한 함수 형식 집합을 제공합니다. 함수 형식을 사용하여 함수를 선언하면 드라이버, SDV(정적 드라이버 검증 도구) 및 기타 확인 도구에 대한 Code Analysis 오류를 찾는 데 도움이 되며 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 |
참고 항목
피드백
다음에 대한 사용자 의견 제출 및 보기