WdfChildListCreate 関数 (wdfchildlist.h)

[KMDF にのみ適用]

WdfChildListCreate メソッドは、指定された親デバイスの子リストを作成します。

構文

NTSTATUS WdfChildListCreate(
  [in]           WDFDEVICE              Device,
  [in]           PWDF_CHILD_LIST_CONFIG Config,
  [in, optional] PWDF_OBJECT_ATTRIBUTES ChildListAttributes,
  [out]          WDFCHILDLIST           *ChildList
);

パラメーター

[in] Device

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

[in] Config

子リストのドライバー指定の構成情報を含む WDF_CHILD_LIST_CONFIG 構造体へのポインター。

[in, optional] ChildListAttributes

フレームワークの子リスト オブジェクトのドライバー指定のオブジェクト属性を含む WDF_OBJECT_ATTRIBUTES構造体への ポインター。 (構造体の ParentObject メンバーは NULL である必要があります)。

[out] ChildList

フレームワークの子リスト オブジェクトへのハンドルを受け取る呼び出し元によって割り当てられた場所へのポインター。

戻り値

WdfChildListCreate は、STATUS_SUCCESS、または操作が成功した場合 、NT_SUCCESS(status)TRUE に等しい別の状態値を返します。 それ以外の場合、このメソッドは次のいずれかの値を返す可能性があります。

リターン コード 説明
STATUS_INVALID_PARAMETER
入力パラメーターが無効です。
STATUS_INSUFFICIENT_RESOURCES
オブジェクトを割り当てませんでした。
 

このメソッドは、他の NTSTATUS 値も返す場合があります。

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

注釈

フレームワークは、機能デバイス オブジェクト (FDO) を表す各フレームワーク デバイス オブジェクトの既定の子リストを作成します。 既定の子リストを使用するために、ドライバーは WdfFdoGetDefaultChildList を呼び出します。 ドライバーで追加の子リストが必要な場合は、 WdfChildListCreate を呼び出して作成できます。

各子リスト オブジェクトの親は、デバイスのフレームワーク デバイス オブジェクトです。 ドライバーはこの親を変更できません。 ParentObject メンバーまたは WDF_OBJECT_ATTRIBUTES 構造体は NULL である必要があります。

ドライバーは 、WdfChildListCreate によって作成される子リスト オブジェクトを削除できません。 フレームワークは、適切なタイミングでオブジェクトを削除します。

子リストの詳細については、「 動的列挙」を参照してください。

次のコード例では、 WDF_CHILD_LIST_CONFIG 構造体を初期化し、 WdfChildListCreate を呼び出します。

WDF_CHILD_LIST_CONFIG listConfig;

WDF_CHILD_LIST_CONFIG_INIT(
                           &listConfig,
                           sizeof(PDO_IDENTIFICATION_DESCRIPTION),
                           My_EvtDeviceListCreatePdo
                           );

listConfig.AddressDescriptionSize = sizeof(PDO_ADDRESS_DESCRIPTION);

listConfig.EvtChildListScanForChildren = My_EvtChildListScanForChildren;

listConfig.EvtChildListIdentificationDescriptionDuplicate = My_EvtChildListIdentificationDescriptionDuplicate;
listConfig.EvtChildListIdentificationDescriptionCompare = My_EvtChildListIdentificationDescriptionCompare;
listConfig.EvtChildListIdentificationDescriptionCleanup = My_EvtChildListIdentificationDescriptionCleanup;

status = WdfChildListCreate(
                            device,
                            &listConfig,
                            WDF_NO_OBJECT_ATTRIBUTES,
                            &ParentDeviceContext->ChildList
                            );
if (!NT_SUCCESS(status)) {
    return status;
}

要件

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

こちらもご覧ください

WDF_CHILD_LIST_CONFIG

WDF_CHILD_LIST_CONFIG_INIT

WdfFdoGetDefaultChildList