Compartir a través de


IOCTL_ACPI_ENUM_CHILDREN IOCTL (acpiioct.h)

La solicitud de control de dispositivo 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 manera siguiente:

  • IoControlCode está establecido 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 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 está establecido en FALSE.
  • Event 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 manera siguiente:

  • 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 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:>Estado se establece en STATUS_SUCCESS; De lo contrario, el miembro estado de 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 estado de 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 IoStatusBlock>Information se establece en el número de bytes que se devuelven en el búfer de salida; De lo contrario, el miembro Information está establecido en cero.

Observaciones

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 de la Flags miembro 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 Estado miembro 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, que es 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 Valor
cliente mínimo admitido Windows Vista y versiones posteriores de Windows.
encabezado de acpiioct.h (include Acpiioct.h)

Consulte también

ACPI_ENUM_CHILD

ACPI_ENUM_CHILDREN_INPUT_BUFFER

ACPI_ENUM_CHILDREN_OUTPUT_BUFFER