다음을 통해 공유


IOCTL_ACPI_ENUM_CHILDREN IOCTL(acpiioct.h)

IOCTL_ACPI_ENUM_CHILDREN 디바이스 제어 요청을 사용하여 이 요청이 전송되는 디바이스의 ACPI 네임스페이스에 있는 디바이스 또는 명명된 자식 개체의 경로와 이름을 열거할 수 있습니다. 드라이버는 IoBuildDeviceIoControlRequest를 호출하고 다음 입력 및 출력 매개 변수를 전달하여 이 요청을 빌드해야 합니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

다음과 같이 IoBuildDeviceIoControlRequest 입력 매개 변수를 설정합니다.

  • IoControlCode 는 IOCTL_ACPI_ENUM_CHILDREN 설정됩니다.
  • DeviceObject 는 디바이스의 PDO(물리적 디바이스 개체)에 대한 포인터로 설정됩니다.
  • InputBuffer 는 가변 길이 ACPI_ENUM_CHILDREN_INPUT_BUFFER 구조체에 대한 포인터로 설정됩니다.
  • InputBufferLengthInputBuffer에서 제공하는 입력 버퍼의 크기(바이트)로 설정됩니다.
  • OutputBufferLengthOutputBuffer에서 제공하는 출력 버퍼의 크기(바이트)를 제공합니다.
  • InternalDeviceIoControlFALSE로 설정됩니다.
  • 이벤트는 호출자가 할당하고 초기화된 이벤트 개체에 대한 포인터로 설정됩니다.

입력 버퍼 길이

InputBufferLengthInputBuffer에서 제공하는 입력 버퍼의 크기(바이트)로 설정됩니다.

출력 버퍼

다음과 같이 IoBuildDeviceIoControlRequest 출력 매개 변수를 설정합니다.

  • OutputBuffer 는 ACPI 드라이버가 열거된 자식 디바이스의 경로와 이름을 반환하는 가변 길이 ACPI_ENUM_CHILDREN_OUTPUT_BUFFER 구조체에 대한 포인터를 제공합니다.
  • IoStatusBlockIO_STATUS_BLOCK 구조체로 설정됩니다.

출력 버퍼 길이

OutputBufferLengthOutputBuffer에서 제공하는 출력 버퍼의 크기(바이트)를 제공합니다.

상태 블록

요청이 성공하면 IoStatusBlock-Status>가 STATUS_SUCCESS 설정되고, 그렇지 않으면 Status 멤버가 오류 코드로 설정됩니다. 출력 버퍼가 버퍼 헤더를 포함할 만큼 충분히 크지 않으면 Status 멤버가 STATUS_BUFFER_TOO_SMALL 설정됩니다. 출력 버퍼가 출력 버퍼 헤더를 포함할 만큼 충분히 크지만 열거된 모든 자식 개체의 경로와 이름을 포함할 만큼 크지 않은 경우 Status 멤버는 STATUS_BUFFER_OVERFLOW 설정되고 OutputBuffer-NumberOfChildren>는 출력 버퍼의 필요한 길이로 설정됩니다.

요청이 성공하면 IoStatusBlock-Information> 멤버가 출력 버퍼에 반환되는 바이트 수로 설정되고, 그렇지 않으면 정보 멤버가 0으로 설정됩니다.

설명

IOCTL_ACPI_ENUM_CHILDREN 가변 길이 ACPI_ENUM_CHILD 구조의 배열을 포함하는 가변 길이 ACPI_ENUM_CHILDREN_OUTPUT_BUFFER 구조를 반환하며, 각 구조체는 요청이 전송된 디바이스의 ACPI 네임스페이스에 있는 개체의 정규화된 경로와 이름을 반환합니다. 이 요청이 열거하는 개체는 다음과 같이 제공된 입력 구조 ACPI_ENUM_CHILDREN_INPUT_BUFFER Flags 멤버의 설정에 따라 달라집니다.

드라이버가 할당하는 출력 버퍼가 요청된 모든 자식 이름을 반환할 만큼 크지 않은 경우 ACPI 드라이버는 자식 이름을 반환하지 않고 요청이 STATUS_BUFFER_OVERFLOW IO_STATUS_BLOCK Status 멤버를 설정합니다. 이 경우 출력 버퍼의 크기(바이트)가 최소 sizeof(ACPI_ENUM_CHILDREN_OUTPUT_BUFFER_SIGNATURE)인 경우 ACPI 드라이버는 NumberOfChildren 를 요청된 경로 및 이름을 검색하는 데 필요한 크기(바이트)로 설정합니다.

일반적으로 드라이버는 두 개의 IOCTL_ACPI_ENUM_CHILDREN 요청 시퀀스를 사용하여 관심 있는 자식 개체를 열거합니다. 드라이버는 요청된 모든 개체의 경로와 이름을 포함하는 데 필요한 출력 버퍼의 크기를 가져오기 위해 첫 번째 요청을 보냅니다. 드라이버는 출력 버퍼에 있는 개체의 경로와 이름을 반환하는 두 번째 요청을 보냅니다.

디바이스의 자식 디바이스를 열거하는 방법에 대한 자세한 내용은 자식 디바이스 열거 및 제어 메서드를 참조하세요.

IOCTL_ACPI_ENUM_CHILDREN IRQL< DISPATCH_LEVEL만 사용할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 버전의 Windows.
머리글 acpiioct.h(Acpiioct.h 포함)

추가 정보

ACPI_ENUM_CHILD

ACPI_ENUM_CHILDREN_INPUT_BUFFER

ACPI_ENUM_CHILDREN_OUTPUT_BUFFER