NDIS 드라이버에 대한 버전 정보 요구 사항
버전 정보를 제공하는 NDIS 구조에는 NDIS_OBJECT_HEADER 구조로 정의된 헤더 멤버가 있으며 NDIS 드라이버는 이러한 버전 정보를 지원해야 합니다.
NDIS는 현재 버전의 NDIS보다 높거나 낮은 NDIS 버전을 지원하는 드라이버를 지원할 수 있습니다(즉, 컴퓨터가 실행 중인 운영 체제 버전에서 지원되는 NDIS 버전). 또한 드라이버의 등록된 NDIS 버전 (즉, 초기화 중에 드라이버가 보고한 버전)은 드라이버가 지원하는 가장 높은 버전보다 낮을 수 있습니다. 예를 들어 NDIS 5.1 드라이버 또는 NDIS 6.1 드라이버는 NDIS 6.0을 실행하는 운영 체제 버전에서 실행할 수 있습니다. NDIS 5.1 드라이버는 초기화 중에 NDIS 5.1 드라이버로 등록하기만 하면 됩니다. 그러나 NDIS 6.1 드라이버는 현재 버전의 NDIS를 검사 사용 가능한 최고 수준의 NDIS를 지원하는 드라이버로 등록해야 합니다(이 예제에서는 NDIS 6.0). 현재 NDIS 버전을 가져오는 방법에 대한 자세한 내용은 NDIS 버전 가져오기를 참조하세요.
참고 드라이버가 구조체의 이후 수정 버전에서 모든 기능을 지원할 필요는 없습니다. 예를 들어 미니포트 드라이버는 버전 2 구조를 만들고 버전 1 구조에 적합한 값을 제공할 수 있습니다.
버전 정보가 있는 구조체의 멤버에 액세스하려면 NDIS 드라이버가 다음 프로세스를 완료해야 합니다.
구조체의 멤버에 액세스하기 전에 Header.Revision 및 Header.Size 멤버를 확인합니다.
이전 버전 구조의 경우(즉, 드라이버가 지원하는 NDIS 버전과 연결된 수보다 수정 버전 수가 낮은 구조체):
- 드라이버는 Header.Size 값이 Header.Revision 값에 대해 올바른지 확인해야 합니다. 예를 들어 NDIS_SIZEOF_Xxx_REVISION_1 값은 Xxx_REVISION_1 올바르지만 Xxx_REVISION_2 너무 작습니다.
- Header.Size 값은 NDIS_SIZEOF_Xxx_REVISION_Nn 같거나 같아야 하며(여기서 Nn은 드라이버가 사용하는 구조의 수정 번호임) 드라이버는 해당 수정 버전에 적합한 대로 구조체의 정보를 올바르게 처리해야 합니다.
이후 버전 구조체(즉, 드라이버가 지원하는 NDIS 버전과 연결된 수보다 수정 번호가 더 높은 구조체)의 경우 드라이버는 구조체의 이전 수정 버전인 것처럼 구조를 사용할 수 있습니다. 상위 버전 구조는 항상 이전 버전과 호환됩니다.
드라이버는 등록된 NDIS 버전의 드라이버에 대해 구조체의 올바른 수정 버전을 사용해야 합니다. 예를 들어 NDIS 6.1 드라이버는 NDIS_OFFLOAD_REVISION_2 나타내도록 NDIS_OBJECT_HEADER 구조체의 멤버를 설정하여 NDIS_OFFLOAD 구조에서 오프로드 기능을 보고해야 합니다. 그러나 드라이버가 NDIS_OFFLOAD_REVISION_2 포함된 모든 기능을 지원할 필요는 없습니다.
OID 집합 요청을 성공적으로 처리하는 드라이버는 OID 집합 요청에서 반환될 때 NDIS_OID_REQUEST 구조에서 SupportedRevision 멤버를 설정해야 합니다. SupportedRevision 멤버는 드라이버가 지원하는 수정 요청의 초기자에게 알릴 수 있습니다. 예를 들어 미니포트 드라이버는 Xxx_REVISION_2 구조를 만들고, Xxx_REVISION_1 구조체에 적합한 값을 제공하고, 나머지 구조를 0으로 채울 수 있습니다. 미니포트 드라이버는 SupportedRevision 멤버의 Xxx_REVISION_1 보고합니다. 이 경우 Xxx_REVISION_2 지원할 수 있는 프로토콜 드라이버는 미니포트 드라이버가 지원하는 Xxx_REVISION_1 정보를 사용합니다.
기본 드라이버에서 성공적으로 처리된 정보를 확인하려면 OID 요청을 발급하는 드라이버를 과도하게 검사 OID 요청이 반환된 후 NDIS_OID_REQUEST 구조에서 SupportedRevision 멤버의 값을 검사 합니다.