Condividi tramite


Funzione AuxKlibGetSystemFirmwareTable (aux_klib.h)

La routine AuxKlibGetSystemFirmwareTable recupera la tabella del firmware specificata dal provider di tabelle firmware.

Sintassi

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

Parametri

[in] FirmwareTableProviderSignature

Identificatore del provider di tabelle del firmware a cui deve essere indirizzata la query. Questo parametro può essere uno dei valori seguenti.

Valore Significato
'ACPI' Provider di tabelle del firmware ACPI.
'FIRM' Provider di tabelle del firmware non elaborato.
'RSMB' Provider di tabelle del firmware SMBIOS non elaborato.

[in] FirmwareTableID

Identificatore della tabella del firmware. I caratteri nell'identificatore sono in ordine little-endian.

Ad esempio, FACP è il nome di una tabella fornita da ACPI. La tabella FACP è identificata dal valore a 4 byte 'PCAF' (0x50434146) nel campo Firma della struttura DESCRIPTION_HEADER all'inizio della tabella. Nell'esempio di codice seguente viene illustrato come specificare FACP in un chiamata AuxKlibGetSystemFirmwareTable:

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

In questo esempio, pBuffer punta al buffer allocato dal chiamante, BUFSIZE è la dimensione in byte di questo buffer e dataSize è una variabile in cui la routine scrive il numero di byte scritti nel buffer. Per altre informazioni sulla struttura DESCRIPTION_HEADER, vedere Advanced Configuration and Power Interface Specification (Configurazione avanzata e specifica dell'interfaccia power) nel sito Web Advanced Configuration and Power Interface.For more information about the DESCRIPTION_HEADER structure, see the Advanced Configuration and Power Interface Specification at the Advanced Configuration and Power Interface website.

[out, optional] FirmwareTableBuffer

Puntatore a un buffer allocato dal chiamante che riceve l'elenco delle tabelle del firmware. Se questo parametro è NULL, il valore scritto in *ReturnLength è la dimensione del buffer richiesta. Per altre informazioni sul contenuto di questo buffer, vedere la sezione Osservazioni.

[in] BufferLength

Dimensioni, in byte, del buffer a cui punta FirmwareTableBuffer.

[out, optional] ReturnLength

Puntatore a una posizione in cui la routine scrive il numero di byte di dati scritti nel buffer a cui punta FirmwareTableBuffer.

Valore restituito

AuxKlibGetSystemFirmwareTable restituisce STATUS_SUCCESS se la chiamata ha esito positivo. I valori restituiti possibili includono i codici di errore seguenti.

Codice restituito Descrizione
STATUS_INVALID_PARAMETER
È stato fornito un parametro non valido alla routine.
STATUS_BUFFER_TOO_SMALL
Il buffer allocato dal chiamante è troppo piccolo, ma le dimensioni necessarie del buffer sono state scritte nel parametro di output ReturnLength.

Osservazioni

Il provider di tabelle SMBIOS non elaborato ('RSMB') recupera il contenuto della tabella del firmware SMBIOS non elaborato. I dati scritti nel buffer FirmwareTableBuffer iniziano con la struttura seguente:

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

Il provider di tabelle del firmware non elaborato ('FIRM') recupera il contenuto dell'intervallo di indirizzi fisici specificato. Il valore scritto in *ReturnLength è la dimensione dell'intervallo di indirizzi.

Il provider di tabelle ACPI ('ACPI') recupera il contenuto della tabella ACPI specificata. Poiché gli OEM possono includere tabelle del firmware ACPI non elencate nella specifica ACPI, è necessario chiamare prima di tutto AuxKlibEnumerateSystemFirmwareTables per enumerare tutte le tabelle ACPI attualmente disponibili dal firmware di sistema.

Per ACPI, se il firmware di sistema contiene più tabelle con lo stesso nome, AuxKlibEnumerateSystemFirmwareTables li enumera tutti. Tuttavia, AuxKlibGetSystemFirmwareTable recupera solo la prima tabella nell'elenco con questo nome.

AuxKlibGetSystemFirmwareTable è l'equivalente in modalità kernel della funzione GetSystemFirmwareTable win32.

I driver devono chiamare AuxKlibInitialize prima di chiamare AuxKlibGetSystemFirmwareTable.

AuxKlibGetSystemFirmwareTable è definito nel file di intestazione Aux_klib.h incluso in WDK per Windows 8 e versioni successive di Windows. Per usare questa routine, i driver devono essere collegati alla versione di Aux_klib.lib inclusa in WDK per Windows 8 e versioni successive di Windows. L'implementazione di AuxKlibGetSystemFirmwareTable in queste versioni di WDK può essere usata nelle versioni di Windows a partire da Windows Vista.

Fabbisogno

Requisito Valore
client minimo supportato Supportato a partire da Windows Vista.
piattaforma di destinazione Universale
intestazione aux_klib.h (includere Aux_klib.h)
libreria Aux_Klib.lib
IRQL PASSIVE_LEVEL

Vedere anche

AuxKlibEnumerateSystemFirmwareTables

AuxKlibInitialize

GetSystemFirmwareTable