WdfPdoRequestEject 関数 (wdfpdo.h)
[KMDF にのみ適用]
WdfPdoRequestEject メソッドは、指定したデバイスがドッキング ステーションから取り出されようとしていることをフレームワークに通知します。
構文
void WdfPdoRequestEject(
[in] WDFDEVICE Device
);
パラメーター
[in] Device
デバイスの物理デバイス オブジェクト (PDO) を表すフレームワーク デバイス オブジェクトへのハンドル。
戻り値
なし
解説
ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。
バス ドライバーは 、WdfPdoRequestEject または WdfChildListRequestChildEject を呼び出して、列挙された子デバイスの 1 つをデバイスのドッキング ステーションから取り出そうとしたことがドライバーによって検出されたことを報告できます。 たとえば、ドライバーは、ユーザーが取り出しボタンをプッシュしたことを検出する場合があります。
デバイスの PDO のフレームワーク デバイス オブジェクトが使用可能な場合、ドライバーは WdfPdoRequestEject を呼び出すことができます。 ドライバーが動的バス列挙を使用していて、デバイスの識別の説明が使用可能な場合、ドライバーは WdfChildListRequestChildEject を呼び出すことができます。
WdfPdoRequestEject と WdfChildListRequestChildEject の詳細については、「取り出し可能なデバイスのサポート」を参照してください。
例
次のコード例では、子デバイスの一覧を検索して、指定したシリアル番号と一致するものを見つけます。 この例では、正しい子が見つかると、 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) |