IOCTL_ACPI_ENUM_CHILDREN IOCTL(acpiioct.h)
IOCTL_ACPI_ENUM_CHILDREN 디바이스 제어 요청을 사용하여 이 요청이 전송되는 디바이스의 ACPI 네임스페이스에 있는 디바이스 또는 명명된 자식 개체의 경로와 이름을 열거할 수 있습니다. 드라이버는 IoBuildDeviceIoControlRequest를 호출하고 다음 입력 및 출력 매개 변수를 전달하여 이 요청을 빌드해야 합니다.
주 코드
입력 버퍼
다음과 같이 IoBuildDeviceIoControlRequest 입력 매개 변수를 설정합니다.
- IoControlCode 는 IOCTL_ACPI_ENUM_CHILDREN 설정됩니다.
- DeviceObject 는 디바이스의 PDO(물리적 디바이스 개체)에 대한 포인터로 설정됩니다.
- InputBuffer 는 가변 길이 ACPI_ENUM_CHILDREN_INPUT_BUFFER 구조체에 대한 포인터로 설정됩니다.
- InputBufferLength 는 InputBuffer에서 제공하는 입력 버퍼의 크기(바이트)로 설정됩니다.
- OutputBufferLength 는 OutputBuffer에서 제공하는 출력 버퍼의 크기(바이트)를 제공합니다.
- InternalDeviceIoControl 이 FALSE로 설정됩니다.
- 이벤트는 호출자가 할당하고 초기화된 이벤트 개체에 대한 포인터로 설정됩니다.
입력 버퍼 길이
InputBufferLength 는 InputBuffer에서 제공하는 입력 버퍼의 크기(바이트)로 설정됩니다.
출력 버퍼
다음과 같이 IoBuildDeviceIoControlRequest 출력 매개 변수를 설정합니다.
- OutputBuffer 는 ACPI 드라이버가 열거된 자식 디바이스의 경로와 이름을 반환하는 가변 길이 ACPI_ENUM_CHILDREN_OUTPUT_BUFFER 구조체에 대한 포인터를 제공합니다.
- IoStatusBlock 은 IO_STATUS_BLOCK 구조체로 설정됩니다.
출력 버퍼 길이
OutputBufferLength 는 OutputBuffer에서 제공하는 출력 버퍼의 크기(바이트)를 제공합니다.
상태 블록
요청이 성공하면 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 포함) |