次の方法で共有


WdfPdoInitRemovePowerDependencyOnParent 関数 (wdfpdo.h)

WdfPdoInitRemovePowerDependencyOnParent メソッドは、「解説」セクションで説明されている電源の依存関係を削除します。

構文

void WdfPdoInitRemovePowerDependencyOnParent(
  PWDFDEVICE_INIT DeviceInit
);

パラメーター

DeviceInit

WDFDEVICE_INIT構造体へのポインター。

戻り値

なし

解説

一般に、フレームワークでは、子デバイスが D0 に入る前に、親バス ドライバーが D0 デバイスの電源状態に入る必要があります。同様に、親が D0 を離れる前に子デバイスが D0 を終了する必要があります。

ただし、特に子デバイスが実際のハードウェアを表さない仮想デバイスである場合は、この動作は望ましくない場合があります。 S0 アイドル電源ダウン時に、子デバイスの電源状態が親に関連しない可能性があります。 実際、子デバイスに S0 アイドル検出を実行する理由がない可能性があります。 この場合、親デバイスは、子デバイスの電源状態に依存するのではなく、I/O アクティビティに基づいて D0 と Dx の間で遷移することをお勧めします。

電源の依存関係を削除すると、バス ドライバーに次の影響があります。

  • 親デバイスが Dx にある間、PDO PnP/Power コールバックが実行される可能性があります。
  • 親デバイスが Dx にある間、PDO enable/disable-wake-at-bus コールバックが実行される可能性があります。
  • バス ドライバーが Dx にある間に、PDO の電源管理キューから (PDO が電源ポリシー所有者であると仮定して) FDO 上の非電源管理キューに転送される要求がディスパッチされる可能性があります。
  • 子スタックは、親スタックとは別に電源状態遷移を実行します。 これには、子スタックが S-IRP を受信し、親スタックが独自の D-IRP の処理を終了する前に D-IRP の処理を完了する可能性がある高速再開などのシナリオが含まれます。

電源の依存関係を削除するために、バス ドライバーは、子デバイスの PDO を作成するときに WdfPdoInitRemovePowerDependencyOnParent を呼び出すことができます。

親バス ドライバーが親デバイス スタックの電源ポリシー所有者でない場合、この関数は何も実行しません。

要件

要件
サポートされている最小のクライアント Windows 10 バージョン 2004
最小 KMDF バージョン 1.29
Header wdfpdo.h (Wdf.h を含む)
Library Wdf01000.sys (KMDF)
IRQL PASSIVE_LEVEL