winuser.h

Estructura SYSTEM_INFO

Definición

typedef struct _SYSTEM_INFO { // sinf  
    union { 
        DWORD  dwOemId; 
        struct { 
            WORD wProcessorArchitecture; 
            WORD wReserved; 
        }; 
    }; 
    DWORD  dwPageSize; 
    LPVOID lpMinimumApplicationAddress; 
    LPVOID lpMaximumApplicationAddress; 
    DWORD  dwActiveProcessorMask; 
    DWORD  dwNumberOfProcessors; 
    DWORD  dwProcessorType; 
    DWORD  dwAllocationGranularity; 
    WORD  wProcessorLevel; 
    WORD  wProcessorRevision;
} SYSTEM_INFO;

La estructura SYSTEM_INFO contiene información sobre el sistema del ordenador actual. Esto incluye la arquitectura y tipo del procesador, el número de procesadores en el sistema, el tamaño de página y otras informaciones.

Descripción

dwOemId: un miembro obsoleto que se mantiene por compatibilidad con versiones anteriores de Windows NT. A partir de Windows NT 3.51 y de la primera versión de Windows 95, usar la rama wProcessorArchitecture de la unión.

Windows 95: el sistema siempre asigna cero a este miembro, el valor definido para PROCESSOR_ARCHITECTURE_INTEL.

wProcessorArchitecture: especifica la arquitectura del procesador del sistema. Este valor puede ser uno de los siguientes:

Valor
PROCESSOR_ARCHITECTURE_INTEL
Sólo en Windows NT: PROCESSOR_ARCHITECTURE_MIPS
Sólo en Windows NT: PROCESSOR_ARCHITECTURE_ALPHA
Sólo en Windows NT: PROCESSOR_ARCHITECTURE_PPC
Sólo en Windows NT: PROCESSOR_ARCHITECTURE_UNKNOWN

wReserved: reservado para uso futuro.

dwPageSize: especifica el tamaño de página y la granulación de la protección de página y acomodo. Este es el tamaño de página usado por la función VirtualAlloc.

lpMinimumApplicationAddress: puntero a la dirección de memoria más baja accesible para aplicaciones y bibliotecas de enlace dinámico (DLLs).

lpMaximumApplicationAddress: puntero a la dirección de memoria más alta accesible para aplicaciones y DLLs.

dwActiveProcessorMask: especifica una máscara que representa el conjunto de procesadores configurados en el sistema. El bit 0 es el procesador 0; el bit 31 es el procesador 31.

dwNumberOfProcessors: especifica el número de procesadores en el sistema.

dwProcessorType:

Windows 95: especifica el tipo de procesador en el sistema.

Windows NT: este miembro ya no es relevante, pero se mantiene por compatibilidad con Windows 95 y las primeras versiones de Windows NT. Usar los miembros wProcessorArchitecture, wProcesorLevel y wProcessorRevision para determinar el tipo de procesador.

Este miembro tomará uno de los valores siguientes:

Valor
PROCESSOR_INTEL_386
PROCESSOR_INTEL_486
PROCESSOR_INTEL_PENTIUM
Sólo en Windows NT: PROCESSOR_MIPS_R4000
Sólo en Windows NT: PROCESSOR_ALPHA_21064

dwAllocationGranularity: especifica la granulación con que se acomoda la memoria virtual. Por ejemplo, una petición de acomodo de 1 byte mediante la función VirtualAlloc reservará un espacio de direcciones de dwAllocationGranularity bytes. Este valor estaba asignado de forma rígida a 64K en el pasado, pero otras arquitecturas de hardware pueden necesitar valores diferentes.

wProcessorLevel:

Windows 95: este miembro no se usa.

Windows NT: especifica el nivel de dependencia de arquitectura del procesador de sistema.

Si wProcessorArchitecture es PROCESSOR_ARCHITECTURE_INTEL, wProcessorLevel puede tener uno de los valores siguientes:

Valor Significado
3 Intel 80386
4 Intel 80486
5 Pentium

Si wProcessorArchitecture es PROCESSOR_ARCHITECTURE_MIPS, wProcessorLevel estará en el formato 00xx, donde xx es número de implementación de 8 bits (los bits 8-15 del registro PRId). El miembro puede tener el valor siguiente:

Valor Significado
0004 MIPS R4000

Si wProcessorArchitecture es PROCESSOR_ARCHITECTURE_ALPHA, wProcessorLevel estará en el formatp xxxx, donde xxxx es un número de 16 bits de la versión del procesador (los 16 bits de menor orden del número de versión del firmware). El miembro puede ser uno de los valores siguientes:

Valor decimal Significado
21064 Alpha 21064
21066 Alpha 21066
21164 Alpha 21164

Si wProcessorArchitecture es PROCESSOR_ARCHITECTURE_PPC, wProcessorLevel estará en el formato xxxx, donde xxxx es un valor de 16 bits con el número de versión del procesador (los 16 bits de mayor peso del Registro de Versión del Procesador). El número puede tener uno de los siguientes valores:

Valor decimal Significado
1 PPC 601
3 PPC 603
4 PPC 604
6 PPC 603+
9 PPC 604+
20 PPC 620

wProcessorRevision:

Windows 95: este miembro no se usa.

Windows NT: especifica una revisión dependiente de la aquitectura del procesador. La tabla siguiente muestra se ensambla el valor de revisión para cada tipo de arquitectura de procesador.

Arquitectura de procesador Valor
Intel 80386 o 80486 Un valor en el formato xxyz. Si xx es igual a 0xFF, y - 0xA es el número de modelo, y z es el identificador de steeping. Por ejemplo, un sistema Intel 80486-D0 devuelve 0xFFD0.
Si xx no es 0xFF, xx + 'A' es la letra de stepping y yz es el stepping secundario.
Intel Pentium, Cyrix o NextGen 586 Un valor en el formato xxyy, donde xx es el número de modelo y yy es el stepping. Por ejemplo, un valor 0x0201 indica Model 2, Stepping 1.
MIPS Un valor en el formato 00xx, donde xx es el número de revisión de 8 bits del procesador (los 8 bits de menor peso del registro PRId).
ALPHA Un valor en el formato xxyy, donde xxyy son los 16 bits de menor peso del número de revisión del firmware del procesador. Mostrar este valor del modo siguiente: Modelo 'A'+xx, Emisión yy.
PPC Un valor en el formato xxyy, donde xxyy son los 16 bits de menor peso del Registro de Versión del Procesador. Mostrar este valor como un número con decimales: xx.yy

Observaciones

A partir de Windows NT 3.51 y desde la primera versión de Windows 95, la estructura SYSTEM_INFO ha cambiado del modo siguiente:

  • El miembro dwOemId se ha convertido en una unión. Esta unión soporta un nuevo modo para describir la arquitectura del procesador usado por Windows NT, mientras mantiene la compatibilidad con Windows 95 y con versiones anteriores de Windows NT.
  • El miembro dwProcessorType ahora es obsoleto en Windows NT. Aún se usa en Windows 95.
  • Un miembro DWORD anteriormente reservado al final de la estructura ha sido reemplazado por los miembros wProcessorLevel y wProcessorRevision. Windows 95 no usa estos miembros.