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) |