IOCTL_ACPI_GET_DEVICE_INFORMATION IOCTL (acpiioct.h)

Un controlador para un dispositivo puede usar la solicitud de control de dispositivo IOCTL_ACPI_GET_DEVICE_INFORMATION para obtener información de identificación específica sobre su dispositivo. Normalmente, los controladores que admiten varias versiones o revisiones de un dispositivo usan este IOCTL y necesitan examinar las partes de componente que componen la cadena de identificador de HW del dispositivo para identificar el dispositivo exacto. El 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_GET_DEVICE_INFORMATION.
  • 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 búfer de entrada que depende del tipo de argumentos de entrada que se van a pasar al método de control. Para obtener más información sobre el tipo de argumentos de entrada que admite este IOCTL, vea la sección Comentarios más adelante en este tema.
  • 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 NULL.

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:

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 de salida, 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 todos los argumentos de salida del método de control, el miembro Status se establece en STATUS_BUFFER_OVERFLOW y OutputBuffer-Length> 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

Un controlador para un dispositivo puede usar IOCTL_ACPI_GET_DEVICE_INFORMATION para obtener información de identificación específica sobre su dispositivo. Este IOCTL se usa normalmente con controladores que admiten varias versiones de hardware o revisiones de un dispositivo, y deben examinar las partes de componente que componen la cadena de identificador de HW del dispositivo para identificar el dispositivo exacto. Por ejemplo, un controlador puede admitir diferentes revisiones del mismo dispositivo, en las que algún aspecto de la interfaz de programación o el comportamiento del dispositivo es diferente. El controlador puede identificar exactamente en qué revisión se está ejecutando.

Los argumentos de salida de la solicitud se devuelven en la estructura ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER de longitud variable proporcionada por el puntero OutBuffer . El ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER incluye una matriz de matrices de longitud variable, cada una de las cuales devuelve un argumento de salida que representa la cadena de identificador del subsistema, la cadena de identificador de proveedor y la cadena de identificador de instancia, respectivamente.

IOCTL_ACPI_GET_DEVICE_INFORMATION solo se puede usar en IRQL <= DISPATCH_LEVEL.

Requisitos

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

Consulte también

ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER