Compartilhar via


Função EnumSystemFirmwareTables (sysinfoapi.h)

Enumera todas as tabelas de firmware do sistema do tipo especificado.

Sintaxe

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

Parâmetros

[in] FirmwareTableProviderSignature

O identificador do provedor de tabela de firmware para o qual a consulta deve ser direcionada. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
'ACPI' O provedor de tabela de firmware ACPI.
'FIRM' O provedor de tabela de firmware bruto. Sem suporte para sistemas UEFI; em vez disso, use 'RSMB'.
'RSMB' O provedor de tabela de firmware SMBIOS bruto.

[out] pFirmwareTableEnumBuffer

Um ponteiro para um buffer que recebe a lista de tabelas de firmware. Se esse parâmetro for NULL, o valor retornado será o tamanho do buffer necessário.

Para obter mais informações sobre o conteúdo desse buffer, consulte a seção Comentários.

[in] BufferSize

O tamanho do buffer pFirmwareTableBuffer , em bytes.

Retornar valor

Se a função for bem-sucedida, o valor retornado será o número de bytes gravados no buffer. Esse valor sempre será menor ou igual a BufferSize.

Se a função falhar porque o buffer não é grande o suficiente, o valor retornado será o tamanho do buffer necessário, em bytes. Esse valor é sempre maior que BufferSize.

Se a função falhar por qualquer outro motivo, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.

Comentários

A partir do Windows 10, versão 1803, os aplicativos Universais do Windows podem acessar as informações do SMBIOS (System Management BIOS) declarando a funcionalidade restrita smbios no manifesto do aplicativo. Confira Acessar informações do SMBIOS de um aplicativo Universal do Windows para obter detalhes. Somente tabelas de firmware RSMB (SMBIOS bruto) podem ser acessadas de um aplicativo Universal do Windows.

A partir do Windows Server 2003 com Service Pack 1 (SP1), os aplicativos não podem acessar o objeto \Device\PhysicalMemory. O acesso a esse objeto é limitado a drivers no modo kernel. Essa alteração afeta os aplicativos que leem o SMBIOS (System Management BIOS) ou outros dados do BIOS armazenados no menor 1 MB de memória física. Os aplicativos têm as seguintes alternativas para ler dados de memória física baixa:

  • Recupere as propriedades SMBIOS usando WMI. Muitas propriedades individuais estão contidas nas classes Win32. Você também pode recuperar os dados brutos do SMBIOS em um único buffer usando a classe MSSMBios_RawSMBiosTables .
  • Use a função GetSystemFirmwareTable para ler a tabela de firmware SMBIOS bruta.
Não há como os aplicativos gravarem em memória física baixa.

O provedor de tabela SMBIOS bruto ('RSMB') atualmente retorna um único identificador de tabela, 0x0000. Isso corresponde à tabela de firmware SMBIOS bruta.

O provedor de tabela de firmware bruto ('FIRM') retorna uma lista de identificadores de tabela DWORD . Cada identificador corresponde ao início de um intervalo de endereços físicos. Atualmente, esse provedor retorna 'C0000' e 'E0000'. Esses valores correspondem à memória física de 0xC0000 a 0xDFFFF e 0xE0000 a 0xFFFFF, respectivamente.

O provedor de tabela ACPI ('ACPI') retorna uma lista de identificadores de tabela DWORD . Cada identificador retornado corresponde ao campo Assinatura da estrutura DESCRIPTION_HEADER para uma tabela ACPI atualmente no namespace ACPI do sistema.

Para ACPI, se o sistema contiver várias tabelas com o mesmo nome, todas elas serão enumeradas com EnumSystemFirmwareTables. No entanto, GetSystemFirmwareTable recupera apenas a primeira tabela na lista com esse nome.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista, Windows XP Professional x64 Edition [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008, Windows Server 2003 com SP1 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho sysinfoapi.h (inclua Windows.h)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

Acessar informações do SMBIOS de um aplicativo Universal do Windows

GetSystemFirmwareTable

Funções de informações do sistema