次の方法で共有


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
ヘッダー wdfchildlist.h (Wdf.h を含む)
ライブラリ Wdf01000.sys (フレームワーク ライブラリのバージョン管理を参照)。
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 する DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

関連項目

WDF_CHILD_LIST_CONFIG

WDF_CHILD_LIST_CONFIG_INIT

WdfFdoGetDefaultChildList