Compartir a través de


Función EnumSystemFirmwareTables (sysinfoapi.h)

Enumera todas las tablas de firmware del sistema del tipo especificado.

Sintaxis

UINT EnumSystemFirmwareTables(
  [in]  DWORD FirmwareTableProviderSignature,
  [out] PVOID pFirmwareTableEnumBuffer,
  [in]  DWORD BufferSize
);

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 valores siguientes.

Valor Significado
'ACPI' Proveedor de tabla de firmware ACPI.
'FIRM' Proveedor de tabla de firmware sin procesar. No compatible con sistemas UEFI; use "RSMB" en su lugar.
"RSMB" Proveedor de tabla de firmware SMBIOS sin procesar.

[out] pFirmwareTableEnumBuffer

Puntero a un búfer que recibe la lista de tablas de firmware. Si este parámetro es NULL, el valor devuelto 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] BufferSize

Tamaño del búfer de pFirmwareTableBuffer , en bytes.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es el número de bytes escritos en el búfer. Este valor siempre será menor o igual que BufferSize.

Si se produce un error en la función porque el búfer no es lo suficientemente grande, el valor devuelto es el tamaño de búfer necesario, en bytes. Este valor siempre es mayor que BufferSize.

Si se produce un error en la función por cualquier otro motivo, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

A partir de Windows 10, versión 1803, las aplicaciones universales de Windows pueden acceder a la información del BIOS de administración del sistema (SMBIOS) declarando la funcionalidad restringida smbios en el manifiesto de la aplicación. Consulta Obtener acceso a la información de SMBIOS desde una aplicación universal de Windows para obtener más información. Solo se puede acceder a las tablas de firmware SMBIOS (RSMB) sin procesar desde una aplicación universal de Windows.

A partir de Windows Server 2003 con Service Pack 1 (SP1), las aplicaciones no pueden acceder al objeto \Device\PhysicalMemory. El acceso a este objeto se limita a los controladores en modo kernel. Este cambio afecta a las aplicaciones que leen el BIOS de administración del sistema (SMBIOS) u otros datos del BIOS almacenados en los 1 MB de memoria física más bajos. Las aplicaciones tienen las siguientes alternativas para leer datos de memoria física baja:

  • Recupere las propiedades de SMBIOS mediante WMI. Muchas propiedades individuales se encuentran en las clases Win32. También puede recuperar los datos SMBIOS sin procesar en un único búfer mediante la clase MSSMBios_RawSMBiosTables .
  • Use la función GetSystemFirmwareTable para leer la tabla de firmware SMBIOS sin procesar.
No hay ninguna manera de que las aplicaciones escriban en memoria física baja.

El proveedor de tablas SMBIOS sin procesar ("RSMB") devuelve actualmente un identificador de tabla único, 0x0000. Esto corresponde a la tabla de firmware SMBIOS sin procesar.

El proveedor de tablas de firmware sin procesar ("FIRM") devuelve una lista de identificadores de tabla DWORD . Cada identificador corresponde al principio de un intervalo de direcciones físicos. Actualmente, este proveedor devuelve "C0000" y "E0000". Estos valores corresponden a la memoria física de 0xC0000 a 0xDFFFF y 0xE0000 a 0xFFFFF, respectivamente.

El proveedor de tablas ACPI ("ACPI") devuelve una lista de identificadores de tabla DWORD . Cada identificador devuelto corresponde al campo Firma de la estructura DESCRIPTION_HEADER de una tabla ACPI actualmente en el espacio de nombres ACPI del sistema.

Para ACPI, si el sistema contiene varias tablas con el mismo nombre, todas se enumeran con EnumSystemFirmwareTables. Sin embargo, GetSystemFirmwareTable recupera solo la primera tabla de la lista con este nombre.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista, Windows XP Professional x64 Edition [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008, Windows Server 2003 con SP1 [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado sysinfoapi.h (incluya Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

Obtener acceso a la información de SMBIOS desde una aplicación universal de Windows

GetSystemFirmwareTable

Funciones de información del sistema