AuxKlibGetSystemFirmwareTable 関数 (aux_klib.h)
AuxKlibGetSystemFirmwareTable ルーチンは、ファームウェア テーブル プロバイダーから指定されたファームウェア テーブルを取得します。
構文
NTSTATUS AuxKlibGetSystemFirmwareTable(
[in] ULONG FirmwareTableProviderSignature,
[in] ULONG FirmwareTableID,
[out, optional] PVOID FirmwareTableBuffer,
[in] ULONG BufferLength,
[out, optional] PULONG ReturnLength
);
パラメーター
[in] FirmwareTableProviderSignature
クエリの転送先となるファームウェア テーブル プロバイダーの識別子。 このパラメーターには、次の値のいずれかを指定できます。
値 | 意味 |
---|---|
'ACPI' | ACPI ファームウェア テーブル プロバイダー。 |
'FIRM' | 生ファームウェア テーブル プロバイダー。 |
'RSMB' | 生の SMBIOS ファームウェア テーブル プロバイダー。 |
[in] FirmwareTableID
ファームウェア テーブルの識別子。 識別子の文字はリトル エンディアン順です。
たとえば、FACP は ACPI によって提供されるテーブルの名前です。 FACP テーブルは、テーブルの先頭にある DESCRIPTION_HEADER 構造体の Signature フィールドの 4 バイト値 'PCAF' ( 0x50434146 ) によって識別されます。 次のコード例は、 AuxKlibGetSystemFirmwareTable 呼び出しで FACP を指定する方法を示しています。
status = AuxKlibGetSystemFirmwareTable('ACPI', 'PCAF', pBuffer, BUFSIZE, &dataSize);
この例では、 pBuffer
は呼び出し元によって割り当てられたバッファーを指しdataSize
、BUFSIZE
このバッファーのバイト単位のサイズであり、ルーチンがバッファーに書き込まれたバイト数を書き込む変数です。 DESCRIPTION_HEADER構造の詳細については、高度な構成と電源インターフェイスの Web サイトの「高度な構成と電源インターフェイスの仕様」を参照してください。
[out, optional] FirmwareTableBuffer
ファームウェア テーブルの一覧を受け取る呼び出し元によって割り当てられたバッファーへのポインター。 このパラメーターが NULL の場合、*ReturnLength に書き込まれる値は必要なバッファー サイズです。 このバッファーの内容の詳細については、「解説」セクションを参照してください。
[in] BufferLength
FirmwareTableBuffer が指すバッファーのサイズ (バイト単位)。
[out, optional] ReturnLength
FirmwareTableBuffer が指すバッファーに書き込まれたデータのバイト数をルーチンが書き込む場所へのポインター。
戻り値
AuxKlibGetSystemFirmwareTable は、呼び出しが成功した場合にSTATUS_SUCCESSを返します。 可能な戻り値には、次のエラー コードが含まれます。
リターン コード | 説明 |
---|---|
|
ルーチンに無効なパラメーターが指定されました。 |
|
呼び出し元によって割り当てられたバッファーが小さすぎますが、必要なバッファー サイズが ReturnLength 出力パラメーターに書き込まれます。 |
注釈
生の SMBIOS テーブル プロバイダー ('RSMB') は、生の SMBIOS ファームウェア テーブルの内容を取得します。 FirmwareTableBuffer バッファーに書き込まれるデータは、次の構造で始まります。
struct RawSMBIOSData
{
BYTE Used20CallingMethod;
BYTE SMBIOSMajorVersion;
BYTE SMBIOSMinorVersion;
BYTE DmiRevision;
DWORD Length;
BYTE SMBIOSTableData[];
};
生ファームウェア テーブル プロバイダー ('FIRM') は、指定された物理アドレス範囲の内容を取得します。 *ReturnLength に書き込まれる値は、アドレス範囲のサイズです。
ACPI テーブル プロバイダー ('ACPI') は、指定された ACPI テーブルの内容を取得します。 OEM は ACPI 仕様に記載されていない ACPI ファームウェア テーブルを含めることができるため、まず AuxKlibEnumerateSystemFirmwareTables を呼び出して、システム ファームウェアから現在使用できるすべての ACPI テーブルを列挙する必要があります。
ACPI の場合、システム ファームウェアに同じ名前の複数のテーブルが含まれている場合、 AuxKlibEnumerateSystemFirmwareTables はそれらすべてを列挙します。 ただし、 AuxKlibGetSystemFirmwareTable は 、この名前を持つリスト内の最初のテーブルのみを取得します。
AuxKlibGetSystemFirmwareTable は、Win32 GetSystemFirmwareTable 関数と同等のカーネル モードです。
ドライバーは、AuxKlibGetSystemFirmwareTable を呼び出す前に AuxKlibInitialize を呼び出す必要があります。
AuxKlibGetSystemFirmwareTable は、Windows 8以降のバージョンの Windows 用 WDK に含まれている Aux_klib.h ヘッダー ファイルで定義されています。 このルーチンを使用するには、ドライバーは、Windows 8以降のバージョンの Windows の WDK に含まれている Aux_klib.lib のバージョンにリンクする必要があります。 これらのバージョンの WDK での AuxKlibGetSystemFirmwareTable の実装は、Windows Vista 以降の Windows のバージョンで使用できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降でサポートされています。 |
対象プラットフォーム | ユニバーサル |
Header | aux_klib.h (Aux_klib.h を含む) |
Library | Aux_Klib.lib |
IRQL | PASSIVE_LEVEL |