헤더 버전에 대한 NDIS 지원 개요

많은 NDIS 구조체에는 구조체 버전 정보가 포함됩니다. NDIS 또는 NDIS 드라이버는 각 구조체에 필요한 구조체에서 헤더 멤버를 초기화합니다. NDIS 드라이버는 구조체 멤버에 액세스하기 전에 각 구조체에서 버전 정보를 검사 합니다.

Header 멤버는 NDIS_OBJECT_HEADER 구조체입니다. 이 구조체에는 Header 멤버를 포함하는 구조체의 수정 번호, 형식 및 크기가 포함됩니다.

Header 멤버를 포함하는 구조체는 다음 요구 사항을 충족합니다.

  • 새 NDIS 버전의 멤버 목록에 새 정보가 추가되면 구조체에 새 수정 버전 값이 있습니다. 예를 들어 구조체의 NDIS 6.1 버전에 멤버 목록 끝, 공용 구조체 또는 비트 마스크에 새 멤버가 있는 경우 NDIS 6.0 버전과 다른 수정 버전 값이 있습니다.

  • 구조체가 변경된 후 구조체의 이후 수정 버전 크기는 구조체의 이전 수정 버전 크기보다 크거나 같을 수 있지만 더 작지는 않습니다. 새 크기가 이전 수정 버전의 크기보다 크면 멤버 목록의 끝에 새 멤버가 추가됩니다.

  • 이전 수정 버전 정보가 여전히 유효하고 완료된 경우에만 구조체에 새 수정 버전이 있습니다. 즉, 구조체의 새 버전에는 이전 버전 멤버의 상위 집합이 포함됩니다. 참고 이전 조건을 충족할 수 없는 경우 NDIS는 기존 구조체의 수정된 버전을 제공하는 대신 기존 구조를 대체하는 새 이름의 새 구조를 제공합니다.

  • NDIS 드라이버는 항상 미리 정의된 수정 값을 사용해야 합니다. NDIS는 각각 NDIS_OBJECT_HEADER RevisionSize 멤버에 대해 Xxx_REVISION_Nn 및 NDIS_SIZEOF_Xxx_REVISION_Nn 형식으로 이러한 정의를 제공합니다. 또한 Xxx는 구조체의 이름을 나타내고 Nn은 수정 번호입니다. 예를 들어 NDIS_FILTER_PARTIAL_CHARACTERISTICS 구조체 의 첫 번째 수정 버전에 대한 수정 버전과 크기는 각각 NDIS_FILTER_PARTIAL_CHARACTERISTICS_REVISION_1 NDIS_SIZEOF_FILTER_PARTIAL_CHARACTERISTICS_REVISION_1.

  • Header.Size 값은 Header.Revision 값과 일치해야 합니다. 즉, Revision 멤버에 Xxx_REVISION_1 포함된 경우 Size 멤버 값은 NDIS_SIZEOF_Xxx_REVISION_1 같거나 커야 합니다.

NDIS 버전 개요

NDIS 버전 정보 지정