PROTOCOL_CO_AF_REGISTER_NOTIFY 콜백 함수(ndis.h)

ProtocolCoAfRegisterNotify 함수는 연결 지향 NDIS 클라이언트에서 사용됩니다. 모든 연결 지향 NDIS 클라이언트에는 완벽하게 작동하는 ProtocolCoAfRegisterNotify 함수가 있어야 합니다. 독립 실행형 연결 지향 호출 관리자는 단순히 제어를 반환하는 ProtocolCoAfRegisterNotify 함수를 등록했습니다.

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

구문

PROTOCOL_CO_AF_REGISTER_NOTIFY ProtocolCoAfRegisterNotify;

VOID() ProtocolCoAfRegisterNotify(
  [in] NDIS_HANDLE ProtocolBindingContext,
  [in] PCO_ADDRESS_FAMILY AddressFamily
)
{...}

매개 변수

[in] ProtocolBindingContext

클라이언트 프로토콜이 바인딩당 런타임 상태를 유지하는 클라이언트 할당 컨텍스트 영역에 대한 핸들을 지정합니다. 클라이언트의 ProtocolBindAdapterEx 함수는 NdisOpenAdapterEx를 호출할 때 이 핸들을 제공했습니다.

[in] AddressFamily

호출을 통해 NDIS에 이러한 서비스를 등록한 호출 관리자가 제공하는 signaling-protocol 지원을 설명하는 버퍼에 대한 포인터 NdisCmRegisterAddressFamilyEx 또는 NdisMCmRegisterAddressFamilyEx.

반환 값

없음

설명

ProtocolCoAfRegisterNotify 호출은 클라이언트가 바인딩된 기본 연결 지향 NIC에 특정 호출 관리자 또는 MCM 드라이버의 호출 관리 서비스를 보급합니다.

ProtocolCoAfRegisterNotifyAddressFamily 의 데이터를 검사하여 클라이언트가 이 특정 호출 관리자의 서비스를 사용할 수 있는지 여부를 확인합니다. 클라이언트가 AddressFamily 에서 (M)CM 제공 데이터를 수정할 수 있는지 여부는 호출 관리자의 특정 신호 프로토콜 지원에 따라 달라집니다.

클라이언트가 제공된 호출 관리 서비스를 허용할 수 없다고 판단하면 ProtocolCoAfRegisterNotify는 컨트롤을 반환하고, NDIS는 동일한 ProtocolBindingContext 핸들 및 이 또는 다른 호출 관리자가 제공한 AF 사양을 사용하여 ProtocolCoAfRegisterNotify를 다시 호출할 수 있습니다. 그렇지 않으면 ProtocolAfRegisterNotify는 클라이언트에 대한 AF별 컨텍스트 영역을 할당하고 AddressFamily 포인터를 사용하여 NdisClOpenAddressFamilyEx를 호출합니다. 이 호출이 성공하면 클라이언트는 이 호출 관리자의 서비스를 사용하여 후속 연결 지향 작업을 위해 ProtocolClXxx 함수를 NDIS에 등록했습니다.

예를 들어 ProtocolCoAfRegisterNotify 또는 ProtocolClOpenAfCompleteEx 가 호출할 수 있습니다. NdisInitializeNPagedLookasideS SAP당, VC당 및/또는 클라이언트가 나중에 필요로 하는 파티별 컨텍스트 영역의 동적 할당 및 릴리스를 준비하기 위해 한 번 이상 목록을 만듭니다.

들어오는 호출을 수락하는 경우 클라이언트의 ProtocolCoAfRegisterNotify 또는 ProtocolClOpenAfCompleteEx 함수는 일반적으로 하나 이상의 SAP를 호출 관리자에 등록합니다. 해당 호출 관리자의 AF를 연 후 클라이언트는 SAP별 상태 영역을 할당하고 NdisClOpenAddressFamilyEx에서 가져온 NdisAfHandle을 사용하여 NdisClRegisterSap를 한 번 이상 호출할 수 있습니다. 발신 호출을 하는 경우 클라이언트는 VC별 상태 영역을 할당하고 자체 클라이언트 중 하나에서 들어오는 요청을 예상하여 NdisCoCreateVc 를 사용하여 VC를 만들어 원격 노드에 나가는 호출을 할 수 있습니다.

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

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

PROTOCOL_CO_AF_REGISTER_NOTIFY MyCoAfRegisterNotify;

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

_Use_decl_annotations_
VOID
 MyCoAfRegisterNotify(
    NDIS_HANDLE  ProtocolBindingContext,
    PCO_ADDRESS_FAMILY  AddressFamily
    )
  {...}

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

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

요구 사항

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

추가 정보

CO_ADDRESS_FAMILY

NdisClOpenAddressFamilyEx

NdisClRegisterSap

NdisCmRegisterAddressFamilyEx

NdisCoCreateVc

NdisInitializeNPagedLookasideList NdisMCmRegisterAddressFamilyEx

NdisOpenAdapterEx

ProtocolBindAdapterEx

ProtocolClOpenAfCompleteEx