次の方法で共有


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構造体を使用し、NDIS_OBJECT_HEADER構造体のメンバーを設定してNDIS_OFFLOAD_REVISION_2を示す必要があります。 ただし、ドライバーは、NDIS_OFFLOAD_REVISION_2に含まれるすべての機能をサポートする必要はありません。

  • OID セット要求を正常に処理するドライバーは、OID セット要求から戻った時点で、NDIS_OID_REQUEST構造体で SupportedRevision メンバーを設定する必要があります。 SupportedRevision メンバーは、ドライバーがサポートしたリビジョンの要求をイニシエーターに通知します。 たとえば、ミニポート ドライバーは、Xxx_REVISION_2構造体を作成し、Xxx_REVISION_1構造体に適した値を指定し、構造体の残りの部分をゼロで埋めることができます。 ミニポートドライバーはXxx_REVISION_1をSupportedRevisionメンバーに報告します。 この場合、Xxx_REVISION_2をサポートできるプロトコル ドライバーは、ミニポート ドライバーがサポートXxx_REVISION_1情報を使用します。

  • 基になるドライバーによって正常に処理された情報を確認するには、OID 要求を発行する基になるドライバーは、OID 要求が返された後、NDIS_OID_REQUEST構造体の SupportedRevision メンバーの値を確認する必要があります。

NDIS バージョンの概要

NDIS バージョン情報を指定する