次の方法で共有


OID_PNP_SET_POWER

OID_PNP_SET_POWER OID は、基になるネットワーク アダプターが InformationBuffer で指定されたデバイスの電源状態に遷移することをミニポート ドライバーに通知します。 デバイスの電源状態は、次 の NDIS_DEVICE_POWER_STATE 値のいずれかとして指定されます。

  • NdisDeviceStateD0
  • NdisDeviceStateD1
  • NdisDeviceStateD2
  • NdisDeviceStateD3

OID_PNP_SET_POWER 要求の前に、OID_PNP_QUERY_POWER 要求を指定できます。

NDIS 6.30 以降では、NDIS は、次の条件に該当する場合、電源状態の遷移中にドライバー スタック内の NDIS ドライバーを一時停止および再起動しません。

  • 基になるミニポート ドライバーは、NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 構造体の NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND フラグを設定します。 ドライバーは、NdisMSetMiniportAttributes 関数への呼び出しで、この構造体へのポインターを渡します。

  • ミニポート ドライバーにアタッチされているすべての上部のフィルター ドライバーは、NDIS 6.30 以降のバージョンの NDIS をサポートします。

  • ミニポート ドライバーにバインドされているすべての上部のプロトコル ドライバーは、NDIS 6.30 以降のバージョンの NDIS をサポートします。

低電力状態への移行 (D1-D3)

ミニポート ドライバーは、低電力状態に移行する OID_PNP_SET_POWER のセット要求を処理するとき、次の操作を行う必要があります。

  • 指定されたネットワーク デバイスの電源状態に合わせて、ネットワーク アダプターを完全に準備します。 これを実現するためにミニポート ドライバーによって実行されるタスクは、デバイスに依存します。

  • NdisMIndicateReceiveNetBufferLists 関数の 呼び出しが返されるのを待ちます。

  • ネットワーク アダプターによって処理された送信要求が完了するまで待ちます。 完了したら、ミニポート ドライバーは NdisMSendNetBufferListsComplete 関数を呼び出す必要があります。 ドライバーは、各 NET_BUFFER_LIST 構造体の Status メンバーを適切な NDIS_STATUS_Xxx 値に設定する必要があります。

  • NdisMSendNetBufferListsComplete 関数を呼び出して、保留中のすべての送信要求を完了します。 ドライバーは、各 NET_BUFFER_LIST 構造体の Status メンバーを NDIS_STATUS_LOW_POWER_STATE に設定する必要があります。

  • NdisMSendNetBufferListsComplete 関数を呼び出すことによって、MiniportSendNetBufferLists 関数に対して行われたすべての新しい送信要求をすぐに拒否します。 ドライバーは、各 NET_BUFFER_LIST 構造体の Status メンバーを NDIS_STATUS_LOW_POWER_STATE に設定する必要があります。

NDIS 6.30 以降のバージョンの NDIS をサポートするミニポート ドライバーも、次の操作を行う必要があります。

  • MiniportReturnNetBufferLists 関数の呼び出しを通じて、保留中の受信通知の完了を待つ必要はありません。 また、ミニポート ドライバーは、完了を待機しているパケットの NET_BUFFER_LIST 構造またはデータを変更しないでください。

  • OID_PNP_SET_POWER 要求を処理して、一時停止または実行中のアダプター状態から低電力状態にします。 これらの状態の詳細については、「ミニポート アダプターの状態と操作」を参照してください。

ネットワーク アダプターが D3 状態に移行する前に、ミニポート ドライバーは、次のタスクを実行してミニポート ドライバーの制御下のすべてのものをオフにする必要があります。

  • ネットワーク アダプターで割り込みと DMA エンジンを無効にします。

  • ネットワーク アダプターで受信エンジンを停止します。

  • 保留中の受信通知に関連付けられている受信記述子とパケット バッファーは、割り当てを解除したり、変更しないでください。

  • すべての NDIS タイマーを取り消します。

ミニポート ドライバーは、バス ドライバーによってネットワーク アダプターが D3 状態に移行された後は、ネットワーク アダプターにアクセスできなくなります。

フルパワー状態への移行 (D0)

ミニポート ドライバーは、フルパワー状態に移行する OID_PNP_SET_POWER のセット要求を処理するとき、アダプターが低電力状態に移行する前に、受信エンジンと同じ状態にネットワーク アダプターの受信エンジンを復元する必要があります。

ミニポート ドライバーは、保留中の受信指示に関連付けられている受信バッファーにアクセスしたり、変更したりすることはできません。

NDIS は、低電力状態に移行する前にドライバーの MiniportPause 関数を呼び出した場合にのみ、フルパワー状態への移行後にミニポート ドライバーの MiniportRestart 関数を呼び出します。

中間ドライバーは、常に OID_PNP_SET_POWER のクエリに NDIS_STATUS_SUCCESS を返す必要があります。 中間ドライバーは、基になるミニポート ドライバーに OID_PNP_SET_POWER 要求を伝達できません。

状態コードを返す

ミニポート ドライバーの MiniportOidRequest 関数は、この要求に対して次のいずれかの値を返します。

用語 説明

NDIS_STATUS_SUCCESS

ミニポート ドライバーが要求を正常に完了しました。

NDIS_STATUS_PENDING

ミニポート ドライバーは、非同期的に要求を完了します。 ミニポート ドライバーは、すべての処理を完了した後、NdisMOidRequestComplete 関数を呼び出して要求を成功させ、Status パラメーターの NDIS_STATUS_SUCCESS を渡す必要があります。

NDIS_STATUS_NOT_ACCEPTED

ミニポート ドライバーがリセット中です。

要件

バージョン

NDIS 5.1 および NDIS 6.0 以降でサポートされています。

ヘッダー

Ntddndis.h (Ndis.h を含む)

関連項目


MiniportInitializeEx

MiniportPause

MiniportRestart

MiniportReturnNetBufferLists

MiniportSendNetBufferLists

NDIS_DEVICE_POWER_STATE

NdisMIndicateReceiveNetBufferLists

NdisMSendNetBufferListsComplete

NET_BUFFER_LIST