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_ATTRIBUTES_NO_PAUSE_ON_SUSPEND構造体にNDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTESします。 ドライバーは、 NdisMSetMiniportAttributes 関数の呼び出しでこの構造体へのポインターを渡します。

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

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

新しい状態Low-Power移行 (D1-D3)

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

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

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

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

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

  • NdisMSendNetBufferListsComplete 関数を呼び出して、ミニポートSendNetBufferLists 関数に対して行われたすべての新しい送信要求を直ちに拒否します。 ドライバーは、各システム構造 の Statusメンバー をNET_BUFFER_LIST に設定NDIS_STATUS_LOW_POWER_STATE

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

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

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

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

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

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

  • 保留中の受信インジケーターに関連付けられている受信記述子とパケット バッファーの割り当てや変更を行う必要はありません。

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

メモ バス ドライバーがネットワーク アダプターを D3 状態に移行した後、ミニポート ドライバーはネットワーク アダプターにアクセスできません。

Full-Power状態 (D0) への移行

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

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

NDIS は、NDIS が低電力状態に移行する前にドライバーのミニポートPause 関数を呼び出した場合にのみ、ミニポート ドライバーのミニポートRestart 関数を呼び出します。

メモ 中間ドライバーは、 常に NDIS_STATUS_SUCCESS クエリに返す必要OID_PNP_SET_POWER。 中間ドライバーは、基になるミニポート ドライバーにOID_PNP_SET_POWER要求を伝達しなきことを行う必要があります。

戻り値の状態コード

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

項目 説明

NDIS_STATUS_SUCCESS

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

NDIS_STATUS_PENDING

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

NDIS_STATUS_NOT_ACCEPTED

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

必要条件

Version

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

ヘッダー

Ntddndis.h (Ndis.h を含む)

関連項目


ミニポートInitializeEx

MiniportPause

ミニポートの開始

ミニポートReturnNetBufferLists

ミニポートSendNetBufferLists

NDIS_DEVICE_POWER_STATE

NdisMIndicateReceiveNetBufferLists

NdisMSendNetBufferListsComplete

NET_BUFFER_LIST