Compartir a través de


Función AuxKlibGetSystemFirmwareTable (aux_klib.h)

La rutina AuxKlibGetSystemFirmwareTable recupera la tabla de firmware especificada del proveedor de tablas de firmware.

Sintaxis

NTSTATUS AuxKlibGetSystemFirmwareTable(
  [in]            ULONG  FirmwareTableProviderSignature,
  [in]            ULONG  FirmwareTableID,
  [out, optional] PVOID  FirmwareTableBuffer,
  [in]            ULONG  BufferLength,
  [out, optional] PULONG ReturnLength
);

Parámetros

[in] FirmwareTableProviderSignature

Identificador del proveedor de tabla de firmware al que se dirigirá la consulta. Este parámetro puede ser uno de los siguientes valores.

Valor Significado
'ACPI' Proveedor de tabla de firmware ACPI.
'FIRM' Proveedor de tabla de firmware sin procesar.
'RSMB' Proveedor de tabla de firmware SMBIOS sin procesar.

[in] FirmwareTableID

Identificador de la tabla de firmware. Los caracteres del identificador están en orden little-endian.

Por ejemplo, FACP es el nombre de una tabla proporcionada por ACPI. La tabla FACP se identifica mediante el valor de 4 bytes "PCAF" (0x50434146) en el campo firma de de la estructura de DESCRIPTION_HEADER al principio de la tabla. En el ejemplo de código siguiente se muestra cómo especificar FACP en un llamada AuxKlibGetSystemFirmwareTable:

status = AuxKlibGetSystemFirmwareTable('ACPI', 'PCAF', pBuffer, BUFSIZE, &dataSize);

En este ejemplo, pBuffer apunta al búfer asignado por el autor de la llamada, BUFSIZE es el tamaño en bytes de este búfer y dataSize es una variable a la que la rutina escribe el número de bytes escritos en el búfer. Para obtener más información sobre la estructura de DESCRIPTION_HEADER, consulte la Especificación avanzada de configuración e interfaz de energía en el sitio web de Configuración avanzada e Interfaz de energía.

[out, optional] FirmwareTableBuffer

Puntero a un búfer asignado por el autor de la llamada que recibe la lista de tablas de firmware. Si este parámetro es NULL, el valor escrito en *returnLength es el tamaño de búfer necesario. Para obtener más información sobre el contenido de este búfer, vea la sección Comentarios.

[in] BufferLength

Tamaño, en bytes, del búfer al que apunta FirmwareTableBuffer.

[out, optional] ReturnLength

Puntero a una ubicación a la que la rutina escribe el número de bytes de datos escritos en el búfer al que apunta FirmwareTableBuffer.

Valor devuelto

AuxKlibGetSystemFirmwareTable devuelve STATUS_SUCCESS si la llamada se realiza correctamente. Los valores devueltos posibles incluyen los siguientes códigos de error.

Código devuelto Descripción
STATUS_INVALID_PARAMETER
Se proporcionó un parámetro no válido a la rutina.
STATUS_BUFFER_TOO_SMALL
El búfer asignado por el autor de la llamada es demasiado pequeño, pero el tamaño de búfer necesario se ha escrito en el parámetro de salida ReturnLength.

Observaciones

El proveedor de tablas SMBIOS sin procesar ("RSMB") recupera el contenido de la tabla de firmware SMBIOS sin procesar. Los datos escritos en el búfer FirmwareTableBuffer comienzan con la estructura siguiente:

struct RawSMBIOSData
{
  BYTE  Used20CallingMethod;
  BYTE  SMBIOSMajorVersion;
  BYTE  SMBIOSMinorVersion;
  BYTE  DmiRevision;
  DWORD  Length;
  BYTE  SMBIOSTableData[];
};

El proveedor de tabla de firmware sin procesar ("FIRM") recupera el contenido del intervalo de direcciones físicos especificado. El valor escrito en *returnLength es el tamaño del intervalo de direcciones.

El proveedor de tabla ACPI ("ACPI") recupera el contenido de la tabla ACPI especificada. Dado que los OEM pueden incluir tablas de firmware ACPI que no aparecen en la especificación ACPI, primero debe llamar a AuxKlibEnumerateSystemFirmwareTables para enumerar todas las tablas ACPI que están disponibles actualmente desde el firmware del sistema.

Para ACPI, si el firmware del sistema contiene varias tablas con el mismo nombre, AuxKlibEnumerateSystemFirmwareTables enumera todas ellas. Sin embargo, AuxKlibGetSystemFirmwareTable recupera solo la primera tabla de la lista que tiene este nombre.

AuxKlibGetSystemFirmwareTable es el equivalente en modo kernel de la función GetSystemFirmwareTable Win32.

Los controladores deben llamar a AuxKlibInitialize antes de llamar a AuxKlibGetSystemFirmwareTable.

AuxKlibGetSystemFirmwareTable se define en el archivo de encabezado Aux_klib.h que se incluye en WDK para Windows 8 y versiones posteriores de Windows. Para usar esta rutina, los controladores deben vincularse a la versión de Aux_klib.lib que se incluye en WDK para Windows 8 y versiones posteriores de Windows. La implementación de AuxKlibGetSystemFirmwareTable en estas versiones del WDK se puede usar en versiones de Windows a partir de Windows Vista.

Requisitos

Requisito Valor
cliente mínimo admitido Se admite a partir de Windows Vista.
de la plataforma de destino de Universal
encabezado de aux_klib.h (incluya Aux_klib.h)
biblioteca de Aux_Klib.lib
irQL PASSIVE_LEVEL

Consulte también

AuxKlibEnumerateSystemFirmwareTables

AuxKlibInitialize

GetSystemFirmwareTable