// acpiioct.h
// CTL_CODE(0x0032, 0x008, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_ACPI_ENUM_CHILDREN 0x0032C020
View the official Windows Driver Kit DDI referenceNo description available.
The IOCTL_ACPI_ENUM_CHILDREN device control request can be used to enumerate the path and name of devices or named child objects in the ACPI namespace of the device to which this request is sent. A driver should call IoBuildDeviceIoControlRequest and pass the following input and output parameters to build this request.
Set the IoBuildDeviceIoControlRequest input parameters as follows:
InputBufferLength is set to the size, in bytes, of the input buffer that is supplied by InputBuffer.
Set the IoBuildDeviceIoControlRequest output parameters as follows:
OutputBufferLength supplies the size, in bytes, of the output buffer that is supplied by OutputBuffer.
If the request succeeds, IoStatusBlock->Status is set to STATUS_SUCCESS; otherwise, the Status member is set to an error code. If the output buffer is not large enough to contain the buffer header, the Status member is set to STATUS_BUFFER_TOO_SMALL. If the output buffer is large enough to contain the output buffer header, but is not large enough to contain the paths and names of all the enumerated child objects, the Status member is set to STATUS_BUFFER_OVERFLOW and OutputBuffer->NumberOfChildren is set to the required length of the output buffer.
If the request succeeds, the IoStatusBlock->Information member is set to the number of bytes that is returned in the output buffer; otherwise, the Information member is set to zero.
IOCTL_ACPI_ENUM_CHILDREN returns a variable-length ACPI_ENUM_CHILDREN_OUTPUT_BUFFER structure that contains an array of variable-length ACPI_ENUM_CHILD structures, each of which returns the fully qualified path and name of an object in the ACPI namespace of the device to which the request was sent. The objects that this request enumerates depends on the setting of the Flags member of the supplied input structure ACPI_ENUM_CHILDREN_INPUT_BUFFER, as follows:
If the output buffer that the driver allocates is not large enough to return all requested child names, the ACPI driver does not return any child names and sets the Status member of the IO_STATUS_BLOCK for the request to STATUS_BUFFER_OVERFLOW. In this case, if the size, in bytes, of the output buffer is at least sizeof(ACPI_ENUM_CHILDREN_OUTPUT_BUFFER_SIGNATURE), the ACPI driver also sets NumberOfChildren to the size, in bytes, that is required to retrieve the requested paths and names.
A driver typically would use a sequence of two IOCTL_ACPI_ENUM_CHILDREN requests to enumerate the child objects of interest. The driver sends the first request to obtain the size of the output buffer that is required to contain the path and name of all the requested objects. The driver sends the second request to return the path and name of the objects in the output buffer.
For more information about how to enumerate child devices of a device, see Enumerating Child Devices and Control Methods.
IOCTL_ACPI_ENUM_CHILDREN can be used only at IRQL< DISPATCH_LEVEL.
ACPI_ENUM_CHILDREN_INPUT_BUFFER
ACPI_ENUM_CHILDREN_OUTPUT_BUFFER