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(상태)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