NDIS のヘッダー バージョンのサポートの概要

多くの NDIS 構造体には、構造体のバージョン情報が含まれています。 NDIS または NDIS ドライバーは、各構造体に必要なこのような構造体のヘッダー メンバーを初期化します。 NDIS ドライバーは、構造体のメンバーにアクセスする前に、各構造体のバージョン情報をチェックする必要があります。

ヘッダー メンバーは、NDIS_OBJECT_HEADER 構造体です。 この構造体には、ヘッダー メンバーを含む構造体のリビジョン番号、型、およびサイズが含まれています。

ヘッダー メンバーを含む構造体は、次の要件を満たします。

  • 新しい NDIS バージョンのメンバー リストに新しい情報が追加された場合、構造体に新しいリビジョン値が追加されます。 たとえば、構造体の NDIS 6.1 バージョンがメンバー リストの末尾、共用体、またはビットマスクの新しいメンバーを持つ場合、NDIS 6.0 バージョンとは異なるリビジョン値になります。

  • 構造体が変更された後、構造体の後のリビジョンのサイズは、構造体の以前のリビジョンのサイズ以上にすることができますが、小さくすることはできません。 新しいサイズが以前のリビジョンのサイズより大きい場合、新しいメンバーはメンバー リストの末尾に追加されます。

  • 構造体には、以前のリビジョン情報がまだ有効で完全な場合にのみ、新しいリビジョンが含まれます。 つまり、構造体の新しいバージョンには、以前のバージョンのメンバーのスーパーセットが含まれています。 注: 上記のいずれかの条件を満たすことができない場合、NDIS は、既存の構造体の変更されたバージョンを提供する代わりに、既存の構造体を置き換える新しい名前を持つ新しい構造体を提供します。

  • NDIS ドライバーでは、常に定義済みのリビジョン値を使用する必要があります。 NDIS は、リビジョンおよびサイズメンバー (NDIS_OBJECT_HEADER) それぞれに対して、 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 値と一致している必要があります。 つまり、リビジョン メンバーに Xxx_REVISION_1 が含まれている場合、サイズ メンバー値は NDIS_SIZEOF_Xxx_REVISION_1 以上である必要があります。

NDIS バージョンの概要

NDIS バージョン情報の指定