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

NdisCmRegisterAddressFamilyEx 또는 NdisMCmRegisterAddressFamilyEx를 호출하여 NDIS에 이러한 서비스를 등록한 호출 관리자가 제공하는 신호 프로토콜 지원을 설명하는 버퍼에 대한 포인터입니다.

반환 값

없음

설명

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

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

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

예를 들어 ProtocolCoAfRegisterNotify 또는 ProtocolClOpenAfCompleteEx 는 클라이언트가 이후에 필요로 하는 SAP별, VC별 및/또는 파티별 컨텍스트 영역의 동적 할당 및 릴리스에 대비하여 NdisInitializeNPagedLookasideList 를 한 번 이상 호출할 수 있습니다.

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

예제

ProtocolCoAfRegisterNotify 함수를 정의하려면 먼저 정의하려는 함수의 형식을 식별하는 함수 선언을 제공해야 합니다. Windows 드라이버에 대한 함수 형식 집합을 제공합니다. 함수 형식을 사용하여 함수를 선언하면 드라이버, SDV(정적 드라이버 검증 도구) 및 기타 확인 도구에 대한 Code Analysis 오류를 찾을 수 있으며 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