Condividi tramite


Funzione AuxKlibGetSystemFirmwareTable (aux_klib.h)

La routine AuxKlibGetSystemFirmwareTable recupera la tabella del firmware specificata dal provider di tabelle del 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ò avere 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. L'esempio di codice seguente illustra come specificare FACP in una chiamata AuxKlibGetSystemFirmwareTable :

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

In questo esempio punta pBuffer al buffer allocato dal chiamante, BUFSIZE è la dimensione in byte di questo buffer ed 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 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 di tabelle del firmware. Se questo parametro è NULL, il valore scritto in *ReturnLength è la dimensione del buffer necessaria. 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
Alla routine è stato fornito un parametro non valido.
STATUS_BUFFER_TOO_SMALL
Il buffer allocato dal chiamante è troppo piccolo, ma le dimensioni del buffer necessarie sono state scritte nel parametro di output ReturnLength .

Commenti

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 fisico 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 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 nel 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.

Requisiti

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

Vedi anche

AuxKlibEnumerateSystemFirmwareTables

AuxKlibInitialize

GetSystemFirmwareTable