WdfChildListRetrievePdo 関数 (wdfchildlist.h)
[KMDF にのみ適用]
WdfChildListRetrievePdo メソッドは、子リスト内の指定された子の説明に関連付けられているフレームワーク デバイス オブジェクトへのハンドルを返します。
構文
WDFDEVICE WdfChildListRetrievePdo(
[in] WDFCHILDLIST ChildList,
[in, out] PWDF_CHILD_RETRIEVE_INFO RetrieveInfo
);
パラメーター
[in] ChildList
子リスト オブジェクトへのハンドル。
[in, out] RetrieveInfo
取得する子の 識別記述 を使用してドライバーが初期化する、ドライバーによって割り当てられた WDF_CHILD_RETRIEVE_INFO 構造体へのポインター。
戻り値
WdfChildListRetrievePdo は、指定された子デバイスが子リストに存在する場合、フレームワーク デバイス オブジェクトが子デバイスに存在する場合、およびフレームワークが PnP マネージャーにデバイスの存在を報告した場合に、フレームワーク デバイス オブジェクトへのハンドルを返します。 それ以外の場合、メソッドは NULL 返します。 フレームワークは、WDF_CHILD_RETRIEVE_INFO 構造体の Status メンバーに追加の状態情報を返します。
ドライバーが無効なオブジェクト ハンドルを提供すると、システム バグ チェックが発生します。
備考
WdfChildListRetrievePdoを呼び出す前に、ドライバーは WDF_CHILD_RETRIEVE_INFO 構造体に識別の説明を配置する必要があります。
WdfChildListRetrievePdo メソッドは、指定した子リストを走査し、ドライバーがWDF_CHILD_RETRIEVE_INFO構造体で指定したものと一致する識別記述を持つ子を探します。 フレームワークが一致するものを見つけ、子が アドレスの説明を持っている場合、フレームワークは構造体のアドレスの説明を入力します。
この呼び出しを WdfChildListBeginIteration でラップし、WdfChildListEndIterationをして、呼び出し元が別のスレッドで PDO を突然 PnP から削除するのを防ぐ必要があります。
例
次のコード例では、子リストを検索して、指定したシリアル番号を含む識別の説明を持つ子デバイスを検索し、子デバイスを表すデバイス オブジェクトへのハンドルを取得します。
WDF_CHILD_LIST_ITERATOR iterator;
PDO_IDENTIFICATION_DESCRIPTION description;
WDF_CHILD_RETRIEVE_INFO info;
WDFDEVICE hChild;
WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER_INIT(
&description.Header,
sizeof(description)
);
description.SerialNo = DeviceSerialNumber;
WDF_CHILD_RETRIEVE_INFO_INIT(
&info,
&description.Header
);
WDF_CHILD_LIST_ITERATOR_INIT(&iterator, WdfRetrieveAllChildren);
WdfChildListBeginIteration(childList, &iterator);
hChild = WdfChildListRetrievePdo(
childList,
&info
);
... access hChild ...
WdfChildListEndIteration(childList, &iterator);
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 万国 |
最小 KMDF バージョン | 1.0 |
ヘッダー | wdfchildlist.h (Wdf.h を含む) |
ライブラリ | Wdf01000.sys (フレームワーク ライブラリのバージョン管理を参照)。 |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 を する | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |