PROTOCOL_CL_OPEN_AF_COMPLETE_EX 콜백 함수(ndis.h)

ProtocolClOpenAfCompleteEx 함수는 CoNDIS 클라이언트가 NdisClOpenAddressFamilyEx 함수를 호출할 때 시작된 AF(주소 패밀리)의 열기를 완료합니다.

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

구문

PROTOCOL_CL_OPEN_AF_COMPLETE_EX ProtocolClOpenAfCompleteEx;

void ProtocolClOpenAfCompleteEx(
  [in] NDIS_HANDLE ProtocolAfContext,
  [in] NDIS_HANDLE NdisAfHandle,
  [in] NDIS_STATUS Status
)
{...}

매개 변수

[in] ProtocolAfContext

주소 AF에 대한 컨텍스트 영역에 대한 클라이언트 제공 핸들입니다. 클라이언트는 이 컨텍스트 영역을 할당하고 에 대한 호출에서 이 핸들을 NDIS에 전달했습니다. NdisClOpenAddressFamilyEx 함수입니다.

[in] NdisAfHandle

상태가 NDIS_STATUS_SUCCESS 경우 AF에 대한 NDIS 제공 핸들입니다. 그렇지 않으면 이 매개 변수는 NULL입니다. 이 핸들은 클라이언트와 CoNDIS 미니포트 어댑터에 바인딩된 호출 관리자 간에 NDIS가 설정한 연결을 나타냅니다. 핸들이 NULL이 아닌 경우 클라이언트는 NdisClXxx 및 NdisCoXxx 함수에 대한 후속 호출에 사용할 핸들을 저장해야 합니다.

[in] Status

NdisClOpenAddressFamilyEx에 대한 클라이언트 호출의 마지막 상태, 다음 중 한 가지가 될 수 있습니다.

NDIS_STATUS_SUCCESS

AF가 열렸으므로 클라이언트는 ProtocolAfContext에서 상태를 초기화하고 NdisClXxxNdisCoXxx 함수(예: NdisCoOidRequest)에 대한 후속 호출에서 NdisAfHandle에서 반환된 핸들을 사용할 수 있습니다.

NDIS_STATUS_RESOURCES

NDIS 또는 호출 관리자가 충분한 메모리를 할당하거나 ProtocolAfContext 가 지정하는 AF의 클라이언트 열기를 추적하는 데 사용하는 상태를 초기화할 수 없어 요청된 작업이 실패했습니다.

NDIS_STATUS_FAILURE

NDIS가 다음 이유 중 하나로 인해 호출에 실패했습니다.

  • 지정된 AF는 호출자가 바인딩된 기본 미니포트 드라이버에 대해 등록된 AF와 일치하지 않습니다.
  • 호출자의 어댑터 바인딩이 닫힙니다.
  • 지정된 AF를 등록한 호출 관리자가 기본 미니포트 어댑터에 대한 바인딩을 닫고 있습니다.

반환 값

없음

설명

CoNDIS 클라이언트에는 ProtocolClOpenAfCompleteEx 함수가 필요합니다. CoNDIS 클라이언트는 ProtocolClOpenAfCompleteEx 를 제공하여 클라이언트가 를 호출하여 시작하는 비동기 작업을 완료해야 합니다. NdisClOpenAddressFamilyEx 함수입니다.

NDIS는 ProtocolClOpenAfCompleteEx 를 호출하여 다음 중 일부 또는 전부가 발생했음을 나타냅니다.

  • 클라이언트의 모든 매개 변수인 경우NdisClOpenAddressFamilyEx 함수에 전달된 ProtocolCoAfRegisterNotify 함수는 유효했으며, NDIS는 지정된 AF를 NDIS에 등록한 호출 관리자의 ProtocolCmOpenAf 함수라고 했습니다.
  • 호출 관리자는 AddressFamily 매개 변수에서 클라이언트의 ProtocolCoAfRegisterNotify 함수가 NdisClOpenAddressFamilyEx에 전달된 사양을 검사하고 이 호출 관리자가 NDIS에 유효한지 여부를 반환했습니다.
클라이언트의 AF 열기 시도가 실패하면 NDIS는 ProtocolClOpenAfCompleteEx를 호출하기 전에 저장된 상태를 정리합니다. 이 경우 ProtocolClOpenAfCompleteEx 는 클라이언트가 NdisClOpenAddressFamilyEx 호출에 할당한 리소스를 해제하거나 재사용을 준비할 수 있습니다.

그렇지 않으면 ProtocolClOpenAfCompleteEx 는 클라이언트가 새로 연 AF에 대한 후속 작업에 필요한 클라이언트 결정 상태를 설정해야 합니다. 특히 클라이언트는 일반적으로 클라이언트의 ProtocolAfContext 컨텍스트 영역에 있는 NdisAfHandle 매개 변수에서 핸들을 저장해야 합니다.

클라이언트가 들어오는 호출을 수락하는 경우 SAP(서비스별 액세스 지점) 상태 영역을 할당하고 NdisClRegisterSap 함수를 호출할 수 있습니다. 클라이언트가 나가는 호출을 하는 경우 VC(가상 연결당) 상태 영역을 할당하고 NdisCoCreateVc 함수를 사용하여 VC를 만들어 클라이언트의 자체 클라이언트 중 하나에서 들어오는 요청을 준비하여 원격 노드로 나가는 호출을 할 수 있습니다.

NDIS는 IRQL = PASSIVE_LEVEL ProtocolClOpenAfCompleteEx 를 호출합니다.

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

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

PROTOCOL_CL_OPEN_AF_COMPLETE_EX MyClOpenAfCompleteEx;

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

_Use_decl_annotations_
VOID
 MyClOpenAfCompleteEx(
    NDIS_HANDLE  ProtocolAfContext,
    NDIS_HANDLE  NdisAfHandle,
    NDIS_STATUS  Status
    )
  {...}

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

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

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.0 이상에서 지원됩니다.
대상 플랫폼 Windows
헤더 ndis.h(Ndis.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

NdisClOpenAddressFamilyEx

NdisClRegisterSap

NdisCoCreateVc

NdisCoOidRequest

ProtocolCmOpenAf

ProtocolCoAfRegisterNotify