estructura DXGK_FIRMWARE_TABLE_INTERFACE (dispmprt.h)

Contiene funciones que los controladores de pantalla en modo de usuario pueden usar para leer y enumerar la tabla de firmware del sistema. Estas funciones las proporciona el subsistema del kernel de gráficos de Microsoft DirectX y WDDM 1.2 y los controladores de pantalla en modo usuario posteriores pueden llamar a estas funciones.

Sintaxis

typedef struct _DXGK_FIRMWARE_TABLE_INTERFACE {
  USHORT                 Size;
  USHORT                 Version;
  PVOID                  Context;
  PINTERFACE_REFERENCE   InterfaceReference;
  PINTERFACE_DEREFERENCE InterfaceDereference;
  NTSTATUS(VOID *Context,ULONG ProviderSignature,ULONG BufferSize,VOID *Buffer,ULONG *RequiredSize)              * )(EnumSystemFirmwareTables;
  NTSTATUS(VOID *Context,ULONG ProviderSignature,ULONG TableId,ULONG BufferSize,VOID *Buffer,ULONG *RequiredSize)              * )(ReadSystemFirmwareTable;
} DXGK_FIRMWARE_TABLE_INTERFACE, *PDXGK_FIRMWARE_TABLE_INTERFACE;

Miembros

Size

Tamaño, en bytes, de esta estructura.

Version

Número de versión de la interfaz tabla de firmware del sistema. Las constantes de número de versión se definen en Dispmprt.h (por ejemplo, DXGK_FIRMWARE_TABLE_INTERFACE_VERSION_1).

Context

Puntero a un contexto proporcionado por el controlador de puerto de visualización.

InterfaceReference

Puntero a una función de referencia de interfaz implementada por el controlador de puerto de visualización.

InterfaceDereference

Puntero a una función de desreferencia de interfaz implementada por el controlador de puerto de visualización.

EnumSystemFirmwareTables

Enumera la tabla de firmware del sistema. El controlador de miniporte de pantalla proporciona todos los parámetros de entrada.

Sintaxis:

NTSTATUS EnumSystemFirmwareTables(
  _In_      VOID  *Context,
  _In_      ULONG ProviderSignature,
  _In_      ULONG TableId,
  _In_      ULONG BufferSize,
  _Out_opt_ VOID  *Buffer,
  _Out_     ULONG *RequiredSize
);

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 miembro Signature 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, ReadSystemFirmwareTable recupera solo la primera tabla de la lista con este nombre.

Context

Identificador de un bloque de contexto asociado a un adaptador de pantalla. La función DxgkDdiAddDevice del controlador de miniporte de pantalla proporcionó anteriormente este identificador al subsistema del kernel de gráficos de DirectX.

ProviderSignature

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.
"RSMB" Proveedor de tabla de firmware SMBIOS sin procesar.

TableId

Identificador de la tabla de firmware. Este identificador está en formato little-endian, por lo que debe invertir los caracteres de la cadena.

Por ejemplo, FACP es un proveedor ACPI, como se describe en el miembro Signature de la estructura DESCRIPTION_HEADER en la especificación ACPI. Por lo tanto, use "PCAF" para especificar la tabla FACP, como se muestra en el ejemplo siguiente:

retVal = ReadSystemFirmwareTable('ACPI', 'PCAF', pBuffer, BUFSIZE);

BufferSize

Tamaño del búfer al que apunta el parámetro Buffer , en bytes.

Buffer

Puntero opcional 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.

RequiredSize

Puntero a un valor que recibe el tamaño mínimo del búfer al que apunta buffer, en bytes, que el sistema operativo necesita procesar la solicitud de enumeración.

ReadSystemFirmwareTable

Lee la tabla de firmware del sistema. El controlador de miniporte de pantalla proporciona todos los parámetros de entrada.

NTSTATUS ReadSystemFirmwareTable(
  _In_      VOID  *Context,
  _In_      ULONG ProviderSignature,
  _In_      ULONG TableId,
  _In_      ULONG BufferSize,
  _Out_opt_ VOID  *Buffer,
  _Out_     ULONG *RequiredSize
);

El proveedor de tablas SMBIOS sin procesar ("RSMB") recupera el contenido de la tabla de firmware SMBIOS sin procesar. El búfer al que apunta el parámetro Buffer recibe los datos siguientes:

#include <windows.h>

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

El proveedor de tabla de firmware sin formato ("FIRM") recupera el contenido del intervalo de direcciones físicos especificado. ReadSystemFirmwareTable devuelve el tamaño del intervalo de direcciones.

El proveedor de tablas ACPI ("ACPI") recupera el contenido de la tabla ACPI especificada. Dado que los OEM pueden incluir tablas de firmware ACPI que no aparecen en la especificación ACPI, primero debe llamar a la función EnumSystemFirmwareTables para enumerar todas las tablas ACPI que están actualmente en el sistema.

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

Context

Identificador de un bloque de contexto asociado a un adaptador de pantalla. La función DxgkDdiAddDevice del controlador de miniporte de pantalla proporcionó anteriormente este identificador al subsistema del kernel de gráficos de DirectX.

ProviderSignature

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.
"RSMB" Proveedor de tabla de firmware SMBIOS sin procesar.

TableId

Identificador de la tabla de firmware. Este identificador está en formato little-endian, por lo que debe invertir los caracteres de la cadena.

Por ejemplo, FACP es un proveedor ACPI, como se describe en el miembro Signature de la estructura DESCRIPTION_HEADER en la especificación ACPI. Por lo tanto, use "PCAF" para especificar la tabla FACP, como se muestra en el ejemplo siguiente:

retVal = ReadSystemFirmwareTable('ACPI', 'PCAF', pBuffer, BUFSIZE);

BufferSize

Tamaño del búfer al que apunta el parámetro Buffer , en bytes.

Buffer

Puntero opcional a un búfer que recibe la tabla de firmware solicitada. 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.

RequiredSize

Puntero a un valor que recibe el tamaño mínimo del búfer al que apunta buffer, en bytes, que el sistema operativo necesita procesar la solicitud de lectura.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8
Servidor mínimo compatible Windows Server 2012
Encabezado dispmprt.h (incluir Dispmprt.h)

Consulte también

EnumSystemFirmwareTables

ReadSystemFirmwareTable