Compartir a través de


IOCTL_ACPI_ENUM_CHILDREN IOCTL (acpiioct.h)

La solicitud de control de dispositivos IOCTL_ACPI_ENUM_CHILDREN se puede usar para enumerar la ruta de acceso y el nombre de los dispositivos o objetos secundarios con nombre en el espacio de nombres ACPI del dispositivo al que se envía esta solicitud. Un controlador debe llamar a IoBuildDeviceIoControlRequest y pasar los siguientes parámetros de entrada y salida para compilar esta solicitud.

Código principal

IRP_MJ_DEVICE_CONTROL

Búfer de entrada

Establezca los parámetros de entrada IoBuildDeviceIoControlRequest de la siguiente manera:

  • IoControlCode se establece en IOCTL_ACPI_ENUM_CHILDREN.
  • DeviceObject se establece en un puntero al objeto de dispositivo físico (PDO) del dispositivo.
  • InputBuffer se establece en un puntero a una estructura de ACPI_ENUM_CHILDREN_INPUT_BUFFER de longitud variable.
  • InputBufferLength se establece en el tamaño, en bytes, del búfer de entrada proporcionado por InputBuffer.
  • OutputBufferLength proporciona el tamaño, en bytes, del búfer de salida proporcionado por OutputBuffer.
  • InternalDeviceIoControl se establece en FALSE.
  • El evento se establece en un puntero a un objeto de evento asignado por el autor de la llamada e inicializado.

Longitud del búfer de entrada

InputBufferLength se establece en el tamaño, en bytes, del búfer de entrada proporcionado por InputBuffer.

Búfer de salida

Establezca los parámetros de salida IoBuildDeviceIoControlRequest de la siguiente manera:

  • OutputBuffer proporciona un puntero a una estructura ACPI_ENUM_CHILDREN_OUTPUT_BUFFER de longitud variable en la que el controlador ACPI devuelve la ruta de acceso y el nombre de los dispositivos secundarios enumerados.
  • IoStatusBlock se establece en una estructura de IO_STATUS_BLOCK .

Longitud del búfer de salida

OutputBufferLength proporciona el tamaño, en bytes, del búfer de salida proporcionado por OutputBuffer.

Bloque de estado

Si la solicitud se realiza correctamente, IoStatusBlock-Status> se establece en STATUS_SUCCESS; de lo contrario, el miembro Status se establece en un código de error. Si el búfer de salida no es lo suficientemente grande como para contener el encabezado del búfer, el miembro Status se establece en STATUS_BUFFER_TOO_SMALL. Si el búfer de salida es lo suficientemente grande como para contener el encabezado del búfer de salida, pero no es lo suficientemente grande como para contener las rutas de acceso y los nombres de todos los objetos secundarios enumerados, el miembro Status se establece en STATUS_BUFFER_OVERFLOW y OutputBuffer-NumberOfChildren> se establece en la longitud necesaria del búfer de salida.

Si la solicitud se realiza correctamente, el miembro IoStatusBlock-Information> se establece en el número de bytes devueltos en el búfer de salida; de lo contrario, el miembro Information se establece en cero.

Comentarios

IOCTL_ACPI_ENUM_CHILDREN devuelve una estructura ACPI_ENUM_CHILDREN_OUTPUT_BUFFER de longitud variable que contiene una matriz de estructuras ACPI_ENUM_CHILD de longitud variable, cada una de las cuales devuelve la ruta de acceso completa y el nombre de un objeto en el espacio de nombres ACPI del dispositivo al que se envió la solicitud. Los objetos que enumera esta solicitud dependen del valor del miembro Flags de la estructura de entrada proporcionada ACPI_ENUM_CHILDREN_INPUT_BUFFER, como se indica a continuación:

Si el búfer de salida que asigna el controlador no es lo suficientemente grande como para devolver todos los nombres secundarios solicitados, el controlador ACPI no devuelve ningún nombre secundario y establece el miembro Status del IO_STATUS_BLOCK para que la solicitud STATUS_BUFFER_OVERFLOW. En este caso, si el tamaño, en bytes, del búfer de salida es al menos sizeof(ACPI_ENUM_CHILDREN_OUTPUT_BUFFER_SIGNATURE), el controlador ACPI también establece NumberOfChildren en el tamaño, en bytes, necesario para recuperar las rutas de acceso y los nombres solicitados.

Normalmente, un controlador usaría una secuencia de dos solicitudes de IOCTL_ACPI_ENUM_CHILDREN para enumerar los objetos secundarios de interés. El controlador envía la primera solicitud para obtener el tamaño del búfer de salida necesario para contener la ruta de acceso y el nombre de todos los objetos solicitados. El controlador envía la segunda solicitud para devolver la ruta de acceso y el nombre de los objetos en el búfer de salida.

Para obtener más información sobre cómo enumerar dispositivos secundarios de un dispositivo, vea Enumerar dispositivos secundarios y métodos de control.

IOCTL_ACPI_ENUM_CHILDREN solo se puede usar en irQL< DISPATCH_LEVEL.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista y versiones posteriores de Windows.
Encabezado acpiioct.h (include Acpiioct.h)

Consulte también

ACPI_ENUM_CHILD

ACPI_ENUM_CHILDREN_INPUT_BUFFER

ACPI_ENUM_CHILDREN_OUTPUT_BUFFER