WdfFdoRetrieveNextStaticChild 関数 (wdffdo.h)
[KMDF にのみ適用]
WdfFdoRetrieveNextStaticChild メソッドは、子デバイスの一覧内の次のフレームワーク デバイス オブジェクトへのハンドルを取得します。
構文
WDFDEVICE WdfFdoRetrieveNextStaticChild(
[in] WDFDEVICE Fdo,
[in, optional] WDFDEVICE PreviousChild,
[in] ULONG Flags
);
パラメーター
[in] Fdo
親デバイスを表すフレームワーク デバイス オブジェクトへのハンドル。
[in, optional] PreviousChild
WdfFdoRetrieveNextStaticChild の以前の呼び出しによって返された子デバイスを表すフレームワーク デバイス オブジェクトへのハンドル。 WdfFdoRetrieveNextStaticChild の最初の呼び出しでは、この値は NULL である必要があります。
[in] Flags
メソッド が取得する必要がある子デバイスの種類を識別する、WDF_RETRIEVE_CHILD_FLAGS型指定された列挙子値。 このパラメーターを 0 にすることはできません。
戻り値
操作が成功した場合、メソッドはフレームワーク デバイス オブジェクトへのハンドルを返します。 それ以外の場合は NULL を返します。
ドライバーが無効なオブジェクト ハンドルを提供すると、システム バグ チェックが発生します。
注釈
静的バス列挙を使用するバス ドライバーは 、WdfFdoRetrieveNextStaticChild を呼び出すことができます。
子デバイスの一覧内の項目を取得するには、ドライバーは次の手順を実行する必要があります。
- WdfFdoLockStaticChildListForIteration を呼び出して、子リストをロックします。
- メソッドが NULL を返すまで、WdfFdoRetrieveNextStaticChild を繰り返し呼び出して、リスト内の項目を一度に 1 つずつ取得します。
- WdfFdoUnlockStaticChildListFromIteration を呼び出して、子リストのロックを解除します。
例
次のコード例では、特定の値に一致するシリアル番号を持つ子デバイスが見つかるまで、静的な子リストを検索します。 WdfFdoRetrieveNextStaticChild のその他の使用例については、トースター サンプル バス ドライバーに関するページを参照してください。
PPDO_DEVICE_DATA pdoData;
WDFDEVICE hChild;
NTSTATUS status = STATUS_INVALID_PARAMETER;
WdfFdoLockStaticChildListForIteration(Device);
while ((hChild = WdfFdoRetrieveNextStaticChild(
Device,
hChild,
WdfRetrieveAddedChildren
)) != NULL) {
//
// Obtain device object context data and check the
// stored serial number.
//
pdoData = PdoGetData(hChild);
if (SerialNo == pdoData->SerialNo) {
status = STATUS_SUCCESS;
WdfPdoRequestEject(hChild);
break;
}
}
WdfFdoUnlockStaticChildListFromIteration(Device);
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.0 |
Header | wdffdo.h (Wdf.h を含む) |
Library | Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。 |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 | DriverCreate(kmdf)、 KmdfIrql(kmdf)、 KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf)、 PdoDeviceInitAPI(kmdf) |