次の方法で共有


WdfPdoRequestEject 関数 (wdfpdo.h)

[KMDF にのみ適用]

WdfPdoRequestEject メソッドは、指定したデバイスがドッキング ステーションから取り出されようとしていることをフレームワークに通知します。

構文

void WdfPdoRequestEject(
  [in] WDFDEVICE Device
);

パラメーター

[in] Device

デバイスの物理デバイス オブジェクト (PDO) を表すフレームワーク デバイス オブジェクトへのハンドル。

戻り値

なし

解説

ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。

バス ドライバーは 、WdfPdoRequestEject または WdfChildListRequestChildEject を呼び出して、列挙された子デバイスの 1 つをデバイスのドッキング ステーションから取り出そうとしたことがドライバーによって検出されたことを報告できます。 たとえば、ドライバーは、ユーザーが取り出しボタンをプッシュしたことを検出する場合があります。

デバイスの PDO のフレームワーク デバイス オブジェクトが使用可能な場合、ドライバーは WdfPdoRequestEject を呼び出すことができます。 ドライバーが動的バス列挙を使用していて、デバイスの識別の説明が使用可能な場合、ドライバーは WdfChildListRequestChildEject を呼び出すことができます。

WdfPdoRequestEjectWdfChildListRequestChildEject の詳細については、「取り出し可能なデバイスのサポート」を参照してください。

次のコード例では、子デバイスの一覧を検索して、指定したシリアル番号と一致するものを見つけます。 この例では、正しい子が見つかると、 WdfPdoRequestEject を呼び出して、子が取り出されていることを示します。 この例は 、トースター サンプル バス ドライバーから取得され、簡略化されています。

WDFDEVICE  hChild = NULL;
NTSTATUS  status = STATUS_INVALID_PARAMETER;
PPDO_DEVICE_DATA  pdoData;

WdfFdoLockStaticChildListForIteration(Device);

while ((hChild = WdfFdoRetrieveNextStaticChild(
                                               Device, 
                                               hChild,
                                               WdfRetrieveAddedChildren
                                               )) != NULL) {
    //
    // Obtain device object context space, and check the
    // stored serial number.
    //
    pdoData = PdoGetData(hChild);
    if (SerialNo == pdoData->SerialNo) {
        status = STATUS_SUCCESS;
        WdfPdoRequestEject(hChild);
    }
}
WdfFdoUnlockStaticChildListFromIteration(Device);

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
Header wdfpdo.h (Wdf.h を含む)
Library Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 DriverCreate(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf)

こちらもご覧ください

WdfFdoLockStaticChildListForIteration

WdfFdoRetrieveNextStaticChild

WdfFdoUnlockStaticChildListFromIteration