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 を呼び出す前に、ドライバーは id の説明を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 |
Header | wdfchildlist.h (Wdf.h を含む) |
Library | Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。 |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 | DriverCreate(kmdf)、 KmdfIrql(kmdf)、 KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf) |