OID_PNP_Xxx クエリと設定の処理
中間ドライバーの仮想ミニポートは、MiniportOidRequest 関数をエクスポートする必要があります。 NDIS は、中間ドライバーの仮想ミニポートにバインドされている上位ドライバーが情報オブジェクト (OID_Xxx) をクエリまたは設定するために NdisOidRequest を呼び出すと、中間ドライバーの MiniportOidRequest 関数を呼び出します。 NDIS は、自身のために MiniportOidRequest を呼び出すこともできます。 情報オブジェクトに対する設定とクエリのミニポート ドライバーの処理の詳細については、「ミニポート ドライバー情報の取得と設定」および「WMI の NDIS サポート」を参照してください。
中間ドライバーは、ProtocolBindAdapterEx 関数で受信する基になるミニポート アダプターの機能に関する情報を保持する必要があります。 ミニポート アダプターが電源管理に対応していない場合、NDIS は、NDIS_BIND_PARAMETERS の PowerManagementCapabilities メンバーを NULL に設定します。
中間ドライバーは、基になるミニポート ドライバーが保持する OID_Xxx をクエリまたは設定できます。 これは、NdisOidRequest(中間ドライバーにコネクションレスの下端がある場合)、または NdisCoOidRequest(中間ドライバーにコネクション型の下端がある場合) を使用して行います。
中間ドライバーは、次のようにクエリと設定を処理する必要があります:
-
この OID クエリに応答して、中間ドライバーは、基になる物理ミニポート アダプターの PnP 機能を報告する必要があります。 物理デバイスのミニポート アダプターは、この OID クエリを受信しないことに注意してください。
中間ドライバーは、バインド パラメーターで基になるミニポート アダプターの PnP 機能を受け取ります。 中間ドライバーの使用目的に応じて、上位ドライバーに渡す必要があります。 中間ドライバーとミニポート ドライバーは、ミニポート アダプター属性の PnP 機能を報告します。 中間ドライバーは、基になるミニポート ドライバーに OID_PNP_CAPABILITIES 要求を発行しません。 基になるミニポート アダプターが電源管理に対応している場合、仮想ミニポート属性の NDIS_PM_WAKE_UP_CAPABILITIES 構造では、中間ドライバーは、各ウェイクアップ機能の NdisDeviceStateUnspecified のデバイスの電源状態を指定する必要があります:
- MinMagicPacketWakeUp
- MinPatternWakeUp
- MinLinkChangeWakeUp
このような設定は、中間ドライバーが電源管理に対応しているが、システムを起動できないことを示します。
OID_PNP_QUERY_POWER と OID_PNP_SET_POWER
中間ドライバーは、常に OID_PNP_QUERY_POWER のクエリまたは OID_PNP_SET_POWER の設定に NDIS_STATUS_SUCCESS を返す必要があります。 中間ドライバーは、基になるミニポート ドライバーにこれらの OID 要求のいずれかを伝達することは決してできません。
"ウェイクアップ OID"
基になる NIC が電源管理に対応している場合、中間ドライバーは基になるミニポート ドライバーに、 (NdisOidRequest または NdisCoOidRequest を呼び出すことによって) ウェイクアップ イベントに関連する次の OID_PNP_Xxx を渡す必要があります。
中間ドライバーは、基になるミニポート ドライバーのこれらの OID への応答を、上位のプロトコル ドライバーにも伝達する必要があります。
基になるミニポート アダプターが電源管理に対応していない場合、ミニポート ドライバーは、NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES の PowerManagementCapabilities メンバーを NULL に設定し、NDIS は NDIS_BIND_PARAMETERS の PowerManagementCapabilities メンバーを NULL に設定します。
基になるミニポート アダプターが電源管理に対応していない場合、中間ドライバーは、これらの OID のクエリまたは設定に応答して NDIS_STATUS_NOT_SUPPORTED を返す必要があります。