00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060 #ifndef _SYSINFO_H_
00061 #define _SYSINFO_H_
00062
00063 #define SYSINFO_API extern "C" __declspec(dllexport)
00064
00065
00066
00067
00068 #include "SysInfoIncludes.h"
00069
00070 #ifndef INET6_ADDRSTRLEN
00071 #define INET6_ADDRSTRLEN 65
00072 #endif
00073
00074 #ifndef INET_ADDRSTRLEN
00075 #define INET_ADDRSTRLEN 22
00076 #endif
00077
00078
00079
00080
00081
00082
00083 #define VSHORT_STRING_LEN 16 //Size of a generic very short string
00084 #define SHORT_STRING_LEN 64 //Size of a generic short string
00085 #define LONG_STRING_LEN 256 //Size of a generic long string
00086 #define VLONG_STRING_LEN 1024 //Size of a generic very long string
00087
00088
00089
00090
00091
00092
00101 SYSINFO_API const wchar_t* SysInfoDll_GetVersion( void );
00102
00108 SYSINFO_API BOOL SysInfoDll_StartLogging( LPWSTR lpszPath );
00109
00115 SYSINFO_API BOOL SysInfoDll_StartLoggingExisting(FILE *fp);
00116
00121 SYSINFO_API BOOL SysInfoDll_StopLogging( void );
00122
00129 SYSINFO_API BOOL SysInfoDll_GetLastErrorString( LPWSTR lpszError ,
00130 DWORD dwsize );
00131
00135 SYSINFO_API VOID SysInfo_TurnDebugMessageBoxesOn();
00136
00140 SYSINFO_API VOID SysInfo_TurnDebugMessageBoxesOff();
00141
00142
00144
00145
00146
00147
00148
00160 SYSINFO_API BOOL SysInfoDll_GetComputerName( LPWSTR lpBuffer ,
00161 LPDWORD nSize );
00162
00164
00165
00166
00167
00168
00181 SYSINFO_API const wchar_t* SysInfoDll_GetOS( LPWSTR lpszOS ,
00182 int iLen );
00183
00189 SYSINFO_API BOOL SysInfoDll_GetOSEx( LPOSVERSIONINFOW lpVersionInformation );
00190
00192
00193
00194
00195
00196
00201
00202
00204 #define MAX_NUM_CPUS 1024
00205
00206 #define MAX_NUM_CPU_PACKAGES 32
00207
00208 #define MAX_CPU_GROUPS 12
00209
00210 #define MAX_CPU_IN_GROUP 64
00211
00212 #define MAX_CACHES 16
00213
00214 #define MAX_AFFINITY_SUPPORT MAXIMUM_PROC_PER_GROUP
00215
00216 #define MAX_CORE_EFFICIENCY_CLASSES 4
00217
00218 #define CPU_SPEED_STRING_LENGTH 15
00219 #define CPU_STRING_LEN 34
00220 #define CPUCODE_STRING_LENGTH 16
00221 #define STEPPING_STRING_LENGTH 6
00222 #define SOCKET_STRING_LENGTH 16
00223 #define FAB_STRING_LENGTH 5
00224
00225 enum CPU_OCLK
00226 {
00227 CPU_OVERCLOCKED_UNKNOWN = 0,
00228 CPU_OVERCLOCKED = 1,
00229 CPU_UNDERCLOCKED = 2,
00230 CPU_OVERCLOCKED_NO = 3,
00231 CPU_MAXVAL = 4,
00232 };
00233
00234
00235 typedef struct _CPU_SPECIFICATION
00236 {
00237 wchar_t szCPU[CPU_STRING_LEN];
00238 int iType;
00239 int iFamily;
00240 int iModel;
00242 int iStepping;
00243 WORD wCPUCodeName;
00245 WORD wStepping;
00246 BYTE bySocket;
00247 BYTE byFabrication;
00248 int iTJunction;
00249 wchar_t szCPUCodeName[CPU_STRING_LEN];
00250 wchar_t szStepping[STEPPING_STRING_LENGTH];
00251 wchar_t szSocket[SOCKET_STRING_LENGTH];
00252 wchar_t szFabrication[FAB_STRING_LENGTH];
00253 } CPU_SPECIFICATION;
00254
00255 typedef struct _EFFICIENCYCORESINFO
00256 {
00257 BYTE bClass;
00258
00260 int iNumCores;
00261
00263 int iLogicalsPerCore;
00264
00265 } EFFICIENCYCORESINFO;
00266
00267
00268 typedef struct _CPUMSRINFO
00269 {
00270
00271 ULONGLONG ullMSR0x17;
00272 ULONGLONG ullMSR0x1B;
00273 ULONGLONG ullMSR0xE7;
00274 ULONGLONG ullMSR0xE8;
00275 ULONGLONG ullMSR0x19C;
00276 ULONGLONG ullMSR0x1A0;
00277
00278
00279 ULONGLONG ullMSR0x2A;
00280 ULONGLONG ullMSR0x2C;
00281 ULONGLONG ullMSR0xCD;
00282
00283
00284 ULONGLONG ullMSR0xCE;
00285 ULONGLONG ullMSR0x1AD;
00286 ULONGLONG ullMSR0x1A2;
00287 ULONGLONG ullMSR0x1AC;
00288
00289 int iNonIntegerBusRatio;
00291 float flBusFrequencyRatio;
00293 float raw_freq_cpu;
00294
00295 float flScalableBusSpeed;
00296 float flFSB;
00297
00299 float flExternalClock;
00300
00302 float flHTFreq;
00303
00304 int iMinimumRatio;
00305 int iMaximumRatio;
00306
00308 int iMaxTurbo1Core;
00310 int iMaxTurbo2Core;
00312 int iMaxTurbo3Core;
00314 int iMaxTurbo4Core;
00316 int iTDPLimit;
00318 int iTDCLimit;
00319
00320 int iTemperatureTarget;
00321
00322
00324 float flCPUSpeedTurbo;
00326 float flCPUSpeedTurboTheoreticalMax;
00328 float flCPUMultTurbo;
00330 float flCPUExternalClockTurbo;
00331
00332
00333 float flCPUSpeedStock;
00334 float flCPUMultStock;
00335 float flCPUExternalClockStock;
00336
00337
00339 float flCPUTSC;
00340
00341
00342 float flScalableBusSpeedStock;
00343 float flFSBStock;
00344
00345
00347 CPU_OCLK OCLKBaseClock;
00349 CPU_OCLK OCLKMultiplier;
00351 CPU_OCLK OCLKFreq;
00352
00353
00355 float flCPUExternalClockBoosted;
00357 float flMinMult;
00359 float flMaxMult;
00361 float flBoostedMult;
00362
00363
00365 int iMaxTurbo5Core;
00367 int iMaxTurbo6Core;
00369 int iMaxTurbo7Core;
00371 int iMaxTurbo8Core;
00372
00373 } CPUMSRINFO;
00374
00375 typedef struct _CPU_SPECIFICATION_STEPPING
00376 {
00378 int iStepping;
00379 wchar_t szStepping[STEPPING_STRING_LENGTH];
00381 wchar_t szCPUID[SHORT_STRING_LEN];
00382 } CPU_SPECIFICATION_STEPPING;
00383
00384 typedef struct _CPU_GROUP_INFO
00385 {
00387 DWORD dwMaximumProcessorCount;
00389 DWORD dwActiveProcessorCount;
00391 KAFFINITY ActiveProcessorMask;
00392 } CPU_GROUP_INFO;
00393
00394 typedef struct _CPU_GROUPS_INFO
00395 {
00397 WORD wMaximumProcessorGroupCount;
00399 WORD wActiveProcessorGroupCount;
00401 CPU_GROUP_INFO CPUGroupInfo[MAX_CPU_GROUPS];
00402 } CPU_GROUPS_INFO;
00403
00404 typedef struct _CACHEINFO
00405 {
00407 BYTE Level;
00409 BYTE Associativity;
00411 WORD LineSize;
00413 DWORD CacheSize;
00415 WORD Type;
00417 DWORD NumberPerPackage;
00418 } CACHEINFO;
00419
00420 typedef struct _CPUINFO
00421 {
00423 int number;
00425 float speed1;
00427 float speed2;
00428 int Family;
00429 int Model;
00430 int stepping;
00432 int MMX;
00434 int SIMD;
00436 unsigned int features;
00438 int CPUIDSupport;
00440 wchar_t manufacture[20];
00442 wchar_t typestring[50];
00444 wchar_t speedstring1[CPU_SPEED_STRING_LENGTH];
00446 wchar_t speedstring2[CPU_SPEED_STRING_LENGTH];
00448 int cacheinfo_num;
00450 int L2_cache_size;
00452 int Brand;
00454 int SerialAvail;
00456 DWORD SerialNum1;
00458 DWORD SerialNum2;
00460 DWORD SerialNum3;
00462 int SMID_SSE2;
00464 int AMD3DNow;
00466 union {
00467 struct {
00468 unsigned int FPU : 1;
00469 unsigned int VME : 1;
00470 unsigned int DE : 1;
00471 unsigned int PSE : 1;
00472 unsigned int TSC : 1;
00473 unsigned int MSR : 1;
00474 unsigned int PAE : 1;
00475 unsigned int MCE : 1;
00476 unsigned int CMPXCHG8B : 1;
00477 unsigned int APIC : 1;
00478 unsigned int Reserved10 : 1;
00479 unsigned int SysCallSysRet : 1;
00480 unsigned int MTRR : 1;
00481 unsigned int PGE : 1;
00482 unsigned int MCA : 1;
00483 unsigned int CMOV : 1;
00484 unsigned int PAT : 1;
00485 unsigned int PSE36 : 1;
00486 unsigned int Reserved18_19 : 2;
00487 unsigned int NX : 1;
00488 unsigned int Reserved : 1;
00489 unsigned int MmxExt : 1;
00490 unsigned int MMX : 1;
00491 unsigned int FXSR : 1;
00492 unsigned int FFXSR : 1;
00493 unsigned int Page1GB : 1;
00494 unsigned int RDTSCP : 1;
00495 unsigned int Reserved28 : 1;
00496 unsigned int LM : 1;
00497 unsigned int ThreeDNowExt : 1;
00498 unsigned int ThreeDNow : 1;
00499 unsigned int LahfSahf : 1;
00500 unsigned int CmpLegacy : 1;
00501 unsigned int SVM : 1;
00502 unsigned int ExtApicSpace : 1;
00503 unsigned int AltMovCr8 : 1;
00504 unsigned int ABM : 1;
00505 unsigned int SSE4A : 1;
00506 unsigned int MisAlignSse : 1;
00507 unsigned int ThreeDNowPrefetch : 1;
00508 unsigned int OSVW : 1;
00509 unsigned int IBS : 1;
00510 unsigned int XOP : 1;
00511 unsigned int SKINIT : 1;
00512 unsigned int WDT : 1;
00513 unsigned int Reserved46 : 1;
00514 unsigned int LWP : 1;
00515 unsigned int FMA4 : 1;
00516 unsigned int TCE : 1;
00517 unsigned int Reserved50_53 : 4;
00518 unsigned int TopologyExtensions : 1;
00519 unsigned int PerfCtrExtCore : 1;
00520 unsigned int PerfCtrExtDF : 1;
00521 unsigned int Reserved57 : 1;
00522 unsigned int DataBreakpointExtension : 1;
00523 unsigned int PerfTsc : 1;
00524 unsigned int PerfCtrExtLLC : 1;
00525 unsigned int MwaitExtended : 1;
00526 unsigned int AdMskExtn : 1;
00527 unsigned int Reserved63 : 1;
00528 unsigned int ebx : 32;
00529 unsigned int eax : 32;
00530 } bits;
00531 struct {
00532 unsigned int edx;
00533 unsigned int ecx;
00534 unsigned int ebx;
00535 unsigned int eax;
00536 } raw;
00537 } CPUID_ExtFeatures;
00539
00541 int iHyperThreadStatus;
00543 int L3_cache_size;
00545 int SMID_SSE3;
00547 int iCoresPerPackage;
00549 int iThreadsPerPackage;
00551 int MaxBasicInputValue;
00553 DWORD MaxExtendedCPUID;
00555 int PAE;
00557 int DEP;
00559 int SMID_SSE4_1;
00561 int SMID_SSE4_2;
00563 int EMT64;
00565 int L1_instruction_cache_size;
00567 int Trace_cache_size;
00569 int L1_data_cache_size;
00571 int Prefetching;
00573 int L1_data_caches_per_package;
00575 int L1_instruction_caches_per_package;
00577 int L2_caches_per_package;
00579 int L3_caches_per_package;
00580
00582 CACHEINFO CacheInfo[MAX_CACHES];
00584 int iNumCaches;
00585
00586 CPUMSRINFO MSR[MAX_NUM_CPUS];
00588 int SMID_SSSE3;
00590 int SMID_SSE4a;
00592 int VMX;
00594 int SMX;
00596 int ACPI;
00598 wchar_t szEMT[VSHORT_STRING_LEN];
00599 int iManufacture;
00601 int HTT ;
00603 CPU_SPECIFICATION Spec;
00605 CPU_SPECIFICATION_STEPPING CPUPackage[MAX_NUM_CPU_PACKAGES] ;
00607 bool bDTS;
00609 bool bIntelTurboBoost;
00611 int iMaxTurbo1Core;
00613 int iMaxTurbo2Core;
00615 int iMaxTurbo3Core;
00617 int iMaxTurbo4Core;
00619 int iMaxTurbo5Core;
00621 int iMaxTurbo6Core;
00623 int iMaxTurbo7Core;
00625 int iMaxTurbo8Core;
00627 float flCPUSpeedTurbo;
00629 float flCPUSpeedTurboTheoreticalMax;
00631 int AES;
00632
00633
00635 CPU_OCLK OCLKBaseClock;
00637 CPU_OCLK OCLKMultiplier;
00639 CPU_OCLK OCLKFreq;
00641 bool bAMDTurboCore;
00643 wchar_t szHyperThreadStatus[LONG_STRING_LEN];
00645 wchar_t szCPUSummary[LONG_STRING_LEN];
00646
00648 CPU_GROUPS_INFO CPUGroupsInfo;
00649
00651 int AVX;
00652
00654
00655
00656 int AVX2;
00657 int FMA3;
00658 int FMA4;
00659 int XOP;
00660
00662 EFFICIENCYCORESINFO efficiencyCores[MAX_CORE_EFFICIENCY_CLASSES];
00663
00665 int iNumEfficiencyClasses;
00666
00667 int AVX512;
00668 int NEON;
00669
00671 int Future_expansion9[93];
00672
00673 } CPUINFO;
00674
00678 enum CPUINFO_STATUS
00679 {
00680 CPUINFO_SUCCESS = 0,
00681 CPUINFO_ACCESS_DENIED = 1,
00682 CPUINFO_INIT_DIRECTIO = 2,
00683 CPUINFO_DIRECTIO_VERSION = 3,
00684 CPUINFO_NOT_ALL_CPUS_AVAILABLE = 4,
00685 };
00686
00692 SYSINFO_API int SysInfoDll_GetCPUInfo( CPUINFO *pCPUinfo );
00693
00694
00700 SYSINFO_API int SysInfoDll_GetCPUInfoMin( CPUINFO *pCPUinfo );
00701
00703
00704
00705
00706
00707
00712 #define MODULE_PARTNO_LEN 32
00713 #define MAX_MEMORY_SLOTS 32
00714 #define MAX_TSOD_SLOTS 32
00715 #define MAX_SPD_LENGTH 1024
00716
00720 enum SPDINFO_STATUS
00721 {
00722 SPDINFO_SUCCESS = 0,
00724 SPDINFO_ACCESS_DENIED = 1,
00726 SPDINFO_INIT_DIRECTIO = 2,
00727 SPDINFO_DIRECTIO_VERSION = 3,
00729 SPDINFO_ACCESS_COLLISION = 4,
00730 };
00731
00732
00733 #define SPDINFO_MEMTYPE_SDRAM 4
00734 #define SPDINFO_MEMTYPE_DDR_SGRAM 6
00735 #define SPDINFO_MEMTYPE_DDR 7
00736 #define SPDINFO_MEMTYPE_DDR2 8
00737 #define SPDINFO_MEMTYPE_DDR2FB 9
00738 #define SPDINFO_MEMTYPE_DDR2FBPROBE 10
00739 #define SPDINFO_MEMTYPE_DDR3 11
00740 #define SPDINFO_MEMTYPE_DDR4 12
00741 #define SPDINFO_MEMTYPE_DDR4E 14
00742 #define SPDINFO_MEMTYPE_LPDDR3 15
00743 #define SPDINFO_MEMTYPE_LPDDR4 16
00744 #define SPDINFO_MEMTYPE_LPDDR4X 17
00745 #define SPDINFO_MEMTYPE_DDR5 18
00746 #define SPDINFO_MEMTYPE_LPDDR5 19
00747 #define SPDINFO_MEMTYPE_DDR5_NVDIMM_P 20
00748 #define SPDINFO_MEMTYPE_LPDDR5X 21
00749
00750
00751 #define SPDINFO_DDR2_EPP_PROFILE_ABBR 0xA1
00752 #define SPDINFO_DDR2_EPP_PROFILE_FULL 0XB1
00753
00754 #define MAX_XMP3_PROFILE_NAME_LEN 16
00755 #define MAX_XMP3_PROFILES 5
00756
00757 #define MAX_EXPO_PROFILES 2
00758
00759 #define MANUF_SPECIFIC_DATA_LEN 32
00760
00761 typedef struct _DEVINFO {
00763 unsigned char jedecID;
00765 int jedecBank;
00766 union {
00767 struct {
00768 unsigned int type : 4;
00769 unsigned int reserved : 2;
00770 unsigned int installed1 : 1;
00771 unsigned int installed0 : 1;
00772 } bits;
00773 unsigned char raw;
00774 } deviceType;
00775 int deviceRev;
00776 } DEVINFO;
00777
00778 typedef struct _SPDINFO
00779 {
00781 wchar_t szHeading[SHORT_STRING_LEN];
00783 wchar_t szLine1[SHORT_STRING_LEN];
00785 wchar_t szLine2[LONG_STRING_LEN];
00787 wchar_t szLine3[SHORT_STRING_LEN];
00788
00790 int type;
00792 int spdRev;
00794 bool registered;
00796 bool ecc;
00798 int year;
00800 int week;
00802 int dimmNum;
00804 int channel;
00806 int slot;
00808 unsigned char jedecID;
00810 int jedecBank;
00812 wchar_t jedecManuf[SHORT_STRING_LEN];
00813
00815 char modulePartNo[MODULE_PARTNO_LEN];
00817 int moduleRev;
00819 int moduleSerialNo;
00821 int moduleManufLoc;
00822
00824 int rowAddrBits;
00826 int colAddrBits;
00828 int numBanks;
00830 int numRanks;
00832 int deviceWidth;
00834 int busWidth;
00836 int txWidth;
00838 wchar_t moduleVoltage[SHORT_STRING_LEN];
00839
00841 float clkspeed;
00843 wchar_t szModulespeed[SHORT_STRING_LEN];
00845 int size;
00846
00848 wchar_t CASSupported[SHORT_STRING_LEN];
00850 float tCK;
00852 float tAA;
00854 float tRCD;
00856 float tRP;
00858 float tRAS;
00860 float tRRD;
00862 float tRC;
00864 float tRFC;
00865
00867 BYTE rawSPDData[MAX_SPD_LENGTH];
00868
00870 BYTE manufData[MANUF_SPECIFIC_DATA_LEN];
00871
00873 union SPECIFICINFO {
00875 struct SDRSDRAMINFO {
00877 float tAC;
00879 float tCKmed;
00881 float tACmed;
00883 float tCKshort;
00885 float tACshort;
00886
00888 float tIS;
00890 float tIH;
00892 float tDS;
00894 float tDH;
00895
00897 wchar_t CSSupported[SHORT_STRING_LEN];
00899 wchar_t WESupported[SHORT_STRING_LEN];
00900
00902 wchar_t BurstLengthsSupported[SHORT_STRING_LEN];
00904 wchar_t RefreshRate[SHORT_STRING_LEN];
00905
00907 bool buffered;
00909 bool OnCardPLL;
00911 bool BufferedDQMB;
00913 bool RegisteredDQMB;
00915 bool DiffClockInput;
00916
00918 bool EarlyRASPrechargeSupported;
00920 bool AutoPrechargeSupported;
00922 bool PrechargeAllSupported;
00924 bool WriteReadBurstSupported;
00925
00926 } SDRSDRAM;
00928 struct DDR1SDRAMINFO {
00930 float tAC;
00932 float tCKmed;
00934 float tACmed;
00936 float tCKshort;
00938 float tACshort;
00940 float tCKmax;
00941
00943 float tIS;
00945 float tIH;
00947 float tDS;
00949 float tDH;
00950
00952 float tDQSQ;
00954 float tQHS;
00955
00957 wchar_t CSSupported[SHORT_STRING_LEN];
00959 wchar_t WESupported[SHORT_STRING_LEN];
00960
00962 wchar_t BurstLengthsSupported[SHORT_STRING_LEN];
00964 wchar_t RefreshRate[SHORT_STRING_LEN];
00965
00967 bool buffered;
00969 bool OnCardPLL;
00971 bool FETOnCardEnable;
00973 bool FETExtEnable;
00975 bool DiffClockInput;
00976
00978 bool WeakDriverIncluded;
00980 bool ConcAutoPrecharge;
00982 bool FastAPSupported;
00983
00985 wchar_t bankDensity[VSHORT_STRING_LEN];
00987 wchar_t moduleHeight[VSHORT_STRING_LEN];
00988 } DDR1SDRAM;
00990 struct DDR2SDRAMINFO {
00992 float tAC;
00994 float tCKmed;
00996 float tACmed;
00998 float tCKshort;
01000 float tACshort;
01002 float tCKmax;
01003
01005 float tWR;
01007 float tWTR;
01009 float tRTP;
01010
01012 float tIS;
01014 float tIH;
01016 float tDS;
01018 float tDH;
01019
01021 float tDQSQ;
01023 float tQHS;
01025 float tPLLRelock;
01026
01028 wchar_t DRAMPackage[VSHORT_STRING_LEN];
01029
01031 wchar_t BurstLengthsSupported[SHORT_STRING_LEN];
01033 wchar_t RefreshRate[SHORT_STRING_LEN];
01034
01036 int numPLLs;
01038 bool FETExtEnable;
01040 bool AnalysisProbeInstalled;
01042 bool WeakDriverSupported;
01044 bool _50ohmODTSupported;
01046 bool PASRSupported;
01047
01049 wchar_t moduleType[SHORT_STRING_LEN];
01051 wchar_t moduleHeight[VSHORT_STRING_LEN];
01052
01054 bool EPPSupported;
01055
01057 struct EPPInfo {
01059 int profileType;
01061 int optimalProfile;
01062
01064 union PROFILEINFO {
01066 struct ABBRPROFILEINFO {
01068 bool enabled;
01070 wchar_t voltageLevel[SHORT_STRING_LEN];
01072 float clkspeed;
01074 int cmdRate;
01075
01077 int CASSupported;
01079 float tCK;
01080
01082 float tRCD;
01084 float tRP;
01086 float tRAS;
01087
01088 } abbrProfile[4];
01089 struct FULLPROFILEINFO {
01091 bool enabled;
01093 wchar_t voltageLevel[SHORT_STRING_LEN];
01095 float clkspeed;
01097 int cmdRate;
01098
01100 wchar_t addrDriveStrength[VSHORT_STRING_LEN];
01102 wchar_t CSDriveStrength[VSHORT_STRING_LEN];
01104 wchar_t clockDriveStrength[VSHORT_STRING_LEN];
01106 wchar_t dataDriveStrength[VSHORT_STRING_LEN];
01108 wchar_t DQSDriveStrength[VSHORT_STRING_LEN];
01110 wchar_t addrCmdFineDelay[VSHORT_STRING_LEN];
01112 wchar_t addrCmdSetupTime[VSHORT_STRING_LEN];
01114 wchar_t CSFineDelay[VSHORT_STRING_LEN];
01116 wchar_t CSSetupTime[VSHORT_STRING_LEN];
01117
01119 int CASSupported;
01121 float tCK;
01122
01124 float tRCD;
01126 float tRP;
01128 float tRAS;
01129
01131 float tWR;
01133 float tRC;
01134
01135 } fullProfile[2];
01136 } profileData;
01137 } EPP;
01138
01139 } DDR2SDRAM;
01141 struct DDR2FBSDRAMINFO {
01143 float tCKmax;
01145 float tWR;
01147 float tWTR;
01149 float tRTP;
01151 float tFAW;
01152
01154 wchar_t WRSupported[SHORT_STRING_LEN];
01156 wchar_t WESupported[SHORT_STRING_LEN];
01158 wchar_t ALSupported[SHORT_STRING_LEN];
01159
01161 wchar_t BurstLengthsSupported[SHORT_STRING_LEN];
01163 wchar_t RefreshRate[SHORT_STRING_LEN];
01165 wchar_t TerminationsSupported[SHORT_STRING_LEN];
01167 wchar_t DriversSupported[SHORT_STRING_LEN];
01168
01170 wchar_t moduleType[SHORT_STRING_LEN];
01172 wchar_t moduleHeight[VSHORT_STRING_LEN];
01174 wchar_t moduleThickness[VSHORT_STRING_LEN];
01175
01177 unsigned char DRAMManufID;
01179 int DRAMManufBank;
01181 wchar_t DRAMManuf[SHORT_STRING_LEN];
01182 } DDR2FBSDRAM;
01184 struct DDR3SDRAMINFO {
01186 float tWR;
01188 float tWTR;
01190 float tRTP;
01192 float tFAW;
01194 int tMAW;
01195
01197 bool RZQ6Supported;
01199 bool RZQ7Supported;
01201 bool DLLOffModeSupported;
01203 int OperatingTempRange;
01205 int RefreshRateExtTempRange;
01207 bool autoSelfRefresh;
01209 bool onDieThermalSensorReadout;
01211 bool partialArraySelfRefresh;
01213 bool thermalSensorPresent;
01214
01216 wchar_t nonStdSDRAMType[SHORT_STRING_LEN];
01217
01219 wchar_t maxActivateCount[VSHORT_STRING_LEN];
01220
01222 wchar_t moduleType[SHORT_STRING_LEN];
01224 int moduleHeight;
01226 int moduleThicknessFront;
01228 int moduleThicknessBack;
01230 wchar_t moduleWidth[VSHORT_STRING_LEN];
01231
01233 wchar_t moduleRefCard[SHORT_STRING_LEN];
01235 unsigned char DRAMManufID;
01237 int DRAMManufBank;
01239 wchar_t DRAMManuf[SHORT_STRING_LEN];
01241 int numDRAMRows;
01243 int numRegisters;
01245 bool heatSpreaderSolution;
01247 unsigned char regManufID;
01249 int regManufBank;
01251 wchar_t regManuf[SHORT_STRING_LEN];
01253 wchar_t regDeviceType[VSHORT_STRING_LEN];
01255 int regRev;
01256
01258 wchar_t cmdAddrADriveStrength[SHORT_STRING_LEN];
01260 wchar_t cmdAddrBDriveStrength[SHORT_STRING_LEN];
01262 wchar_t ctrlSigADriveStrength[SHORT_STRING_LEN];
01264 wchar_t ctrlSigBDriveStrength[SHORT_STRING_LEN];
01266 wchar_t clkY1Y3DriveStrength[SHORT_STRING_LEN];
01268 wchar_t clkY0Y2DriveStrength[SHORT_STRING_LEN];
01269
01271 bool XMPSupported;
01272
01274 struct XMPInfo {
01276 int revision;
01277
01279 struct XMPProfile {
01281 bool enabled;
01282
01284 int dimmsPerChannel;
01285
01287 wchar_t moduleVdd[SHORT_STRING_LEN];
01289 float clkspeed;
01290
01292 wchar_t CASSupported[SHORT_STRING_LEN];
01294 float tCK;
01296 float tAA;
01298 float tRCD;
01300 float tRP;
01302 float tRAS;
01304 float tRRD;
01306 float tRC;
01308 float tRFC;
01309
01311 float tWR;
01313 float tWTR;
01315 float tRTP;
01317 float tFAW;
01318
01320 float tCWL;
01322 float tREFI;
01323
01325 wchar_t WRtoRDTurnaround[SHORT_STRING_LEN];
01326
01328 wchar_t RDtoWRTurnaround[SHORT_STRING_LEN];
01329
01331 wchar_t back2BackTurnaround[SHORT_STRING_LEN];
01332
01334 int cmdRateMode;
01335
01337 wchar_t memCtrlVdd[SHORT_STRING_LEN];
01338 } profile[2];
01339 } XMP;
01340 } DDR3SDRAM;
01341
01343 struct DDR4SDRAMINFO {
01345 float tCKmax;
01347 float tRFC2;
01349 float tRFC4;
01351 float tRRD_S;
01353 float tRRD_L;
01355 float tCCD_L;
01357 float tFAW;
01359 int tMAW;
01360
01362 bool thermalSensorPresent;
01363
01365 int DRAMStepping;
01366
01368 struct {
01370 bool monolithic;
01372 int dieCount;
01374 bool multiLoadStack;
01375 } SDRAMPkgType;
01376
01378 struct {
01380 bool monolithic;
01382 int dieCount;
01384 int DRAMDensityRatio;
01386 bool multiLoadStack;
01387 } SecSDRAMPkgType;
01388
01390 wchar_t maxActivateCount[VSHORT_STRING_LEN];
01391
01393 bool PPRSupported;
01394
01396 bool SoftPPRSupported;
01397
01399 unsigned short BaseCfgCRC16;
01400
01402 wchar_t moduleType[SHORT_STRING_LEN];
01403
01405 int moduleHeight;
01407 int moduleThicknessFront;
01409 int moduleThicknessBack;
01410
01412 wchar_t moduleRefCard[SHORT_STRING_LEN];
01414 unsigned char DRAMManufID;
01416 int DRAMManufBank;
01418 wchar_t DRAMManuf[SHORT_STRING_LEN];
01419
01420
01422 int numDRAMRows;
01424 int numRegisters;
01425
01427 bool heatSpreaderSolution;
01428
01430 unsigned char regManufID;
01432 int regManufBank;
01434 wchar_t regManuf[SHORT_STRING_LEN];
01435
01437 int regRev;
01438
01440 wchar_t CSDriveStrength[SHORT_STRING_LEN];
01442 wchar_t cmdAddrDriveStrength[SHORT_STRING_LEN];
01444 wchar_t ODTDriveStrength[SHORT_STRING_LEN];
01446 wchar_t CKEDriveStrength[SHORT_STRING_LEN];
01447
01449 wchar_t Y0Y2DriveStrength[SHORT_STRING_LEN];
01451 wchar_t Y1Y3DriveStrength[SHORT_STRING_LEN];
01452
01454 int databufferRev;
01455
01457 wchar_t MDQDriveStrength1866[VSHORT_STRING_LEN];
01459 wchar_t MDQReadTermStrength1866[VSHORT_STRING_LEN];
01461 wchar_t DRAMDriveStrength1866[VSHORT_STRING_LEN];
01463 wchar_t ODTRttWR1866[VSHORT_STRING_LEN];
01465 wchar_t ODTRttNom1866[VSHORT_STRING_LEN];
01467 wchar_t ODTRttPARK1866_R0R1[VSHORT_STRING_LEN];
01469 wchar_t ODTRttPARK1866_R2R3[VSHORT_STRING_LEN];
01470
01472 wchar_t MDQDriveStrength2400[VSHORT_STRING_LEN];
01474 wchar_t MDQReadTermStrength2400[VSHORT_STRING_LEN];
01476 wchar_t DRAMDriveStrength2400[VSHORT_STRING_LEN];
01478 wchar_t ODTRttWR2400[VSHORT_STRING_LEN];
01480 wchar_t ODTRttNom2400[VSHORT_STRING_LEN];
01482 wchar_t ODTRttPARK2400_R0R1[VSHORT_STRING_LEN];
01484 wchar_t ODTRttPARK2400_R2R3[VSHORT_STRING_LEN];
01485
01487 wchar_t MDQDriveStrength3200[VSHORT_STRING_LEN];
01489 wchar_t MDQReadTermStrength3200[VSHORT_STRING_LEN];
01491 wchar_t DRAMDriveStrength3200[VSHORT_STRING_LEN];
01493 wchar_t ODTRttWR3200[VSHORT_STRING_LEN];
01495 wchar_t ODTRttNom3200[VSHORT_STRING_LEN];
01497 wchar_t ODTRttPARK3200_R0R1[VSHORT_STRING_LEN];
01499 wchar_t ODTRttPARK3200_R2R3[VSHORT_STRING_LEN];
01500
01502 unsigned short ModuleCRC16;
01503
01505 bool XMPSupported;
01506
01508 struct XMPInfo {
01510 int revision;
01511
01513 struct XMPProfile {
01515 bool enabled;
01516
01518 int dimmsPerChannel;
01519
01521 wchar_t moduleVdd[SHORT_STRING_LEN];
01523 float clkspeed;
01524
01526 wchar_t CASSupported[SHORT_STRING_LEN];
01528 float tCK;
01530 float tAA;
01532 float tRCD;
01534 float tRP;
01536 float tRAS;
01538 float tRC;
01540 float tRFC1;
01542 float tRFC2;
01544 float tRFC4;
01546 float tFAW;
01548 float tRRD_S;
01550 float tRRD_L;
01551
01552 } profile[2];
01553 } XMP;
01554 } DDR4SDRAM;
01556 struct DDR5SDRAMINFO {
01558 float tCKmax;
01560 float tWR;
01562 float tRFC2;
01564 float tRFC4;
01565
01567 float tRFC1_dlr;
01569 float tRFC2_dlr;
01571 float tRFCsb_dlr;
01572
01573
01574 union {
01575 struct {
01576 unsigned int baseModuleType : 4;
01577 unsigned int hybridMedia : 3;
01578 unsigned int hybrid : 1;
01579 } bits;
01580 unsigned char raw;
01581 } keyByteModuleType;
01582
01584 wchar_t moduleType[SHORT_STRING_LEN];
01585
01586 union {
01587 struct {
01588 unsigned int densityPerDie : 5;
01589 unsigned int diePerPackage : 3;
01590 } bits;
01591 unsigned char raw;
01592 } FirstSDRAMDensityPackage;
01593
01594 union {
01595 struct {
01596 unsigned int rowAddrBits : 5;
01597 unsigned int colAddrBits : 3;
01598 } bits;
01599 unsigned char raw;
01600 } FirstSDRAMAddressing;
01601
01602 union {
01603 struct {
01604 unsigned int reserved : 5;
01605 unsigned int IOWidth : 3;
01606 } bits;
01607 unsigned char raw;
01608 } FirstSDRAMIOWidth;
01609
01610 union {
01611 struct {
01612 unsigned int banksPerGroup : 3;
01613 unsigned int reserved : 2;
01614 unsigned int bankGroups : 3;
01615 } bits;
01616 unsigned char raw;
01617 } FirstSDRAMBankGroups;
01618
01619 union {
01620 struct {
01621 unsigned int densityPerDie : 5;
01622 unsigned int diePerPackage : 3;
01623 } bits;
01624 unsigned char raw;
01625 } SecondSDRAMDensityPackage;
01626
01627 union {
01628 struct {
01629 unsigned int rowAddrBits : 5;
01630 unsigned int colAddrBits : 3;
01631 } bits;
01632 unsigned char raw;
01633 } SecondSDRAMAddressing;
01634
01635 union {
01636 struct {
01637 unsigned int reserved : 5;
01638 unsigned int IOWidth : 3;
01639 } bits;
01640 unsigned char raw;
01641 } SecondSDRAMIOWidth;
01642
01643 union {
01644 struct {
01645 unsigned int banksPerGroup : 3;
01646 unsigned int reserved : 2;
01647 unsigned int bankGroups : 3;
01648 } bits;
01649 unsigned char raw;
01650 } SecondSDRAMBankGroups;
01651
01652 union {
01653 struct {
01654 unsigned int mPPRhPPRAbort : 1;
01655 unsigned int MBISTmPPR : 1;
01656 unsigned int reserved32 : 2;
01657 unsigned int BL32 : 1;
01658 unsigned int sPPRUndoLock : 1;
01659 unsigned int reserved6 : 1;
01660 unsigned int sPPRGranularity : 1;
01661 } bits;
01662 unsigned char raw;
01663 } BL32PostPackageRepair;
01664
01665 union {
01666 struct {
01667 unsigned int DCATypesSupported : 2;
01668 unsigned int reserved32 : 2;
01669 unsigned int PASR : 1;
01670 unsigned int reserved75 : 3;
01671 } bits;
01672 unsigned char raw;
01673 } DutyCycleAdjusterPartialArraySelfRefresh;
01674
01675 union {
01676 struct {
01677 unsigned int BoundedFault : 1;
01678 unsigned int x4RMWECSWritebackSuppressionMRSelector : 1;
01679 unsigned int x4RMWECSWritebackSuppression : 1;
01680 unsigned int reserved73 : 5;
01681 } bits;
01682 unsigned char raw;
01683 } FaultHandling;
01684
01685 union {
01686 struct {
01687 unsigned int endurant : 2;
01688 unsigned int operable : 2;
01689 unsigned int nominal : 4;
01690 } bits;
01691 unsigned char raw;
01692 } NominalVoltageVDD;
01693
01694 union {
01695 struct {
01696 unsigned int endurant : 2;
01697 unsigned int operable : 2;
01698 unsigned int nominal : 4;
01699 } bits;
01700 unsigned char raw;
01701 } NominalVoltageVDDQ;
01702
01703 union {
01704 struct {
01705 unsigned int endurant : 2;
01706 unsigned int operable : 2;
01707 unsigned int nominal : 4;
01708 } bits;
01709 unsigned char raw;
01710 } NominalVoltageVPP;
01711
01712 union {
01713 struct {
01714 unsigned int RFMRequired : 1;
01715 unsigned int RAAIMT : 4;
01716 unsigned int RAAMMT : 3;
01717 unsigned int reserved : 4;
01718 unsigned int ARFMLevel : 2;
01719 unsigned int RFMRAACounterDecrementPerREFcommand : 2;
01720 } bits;
01721 unsigned char raw[2];
01722 } FirstSDRAMRefreshManagement;
01723
01724 union {
01725 struct {
01726 unsigned int RFMRequired : 1;
01727 unsigned int RAAIMT : 4;
01728 unsigned int RAAMMT : 3;
01729 unsigned int reserved : 4;
01730 unsigned int ARFMLevel : 2;
01731 unsigned int RFMRAACounterDecrementPerREFcommand : 2;
01732 } bits;
01733 unsigned char raw[2];
01734 } SecondSDRAMRefreshManagement;
01735
01736 union ARFM {
01737 struct {
01738 unsigned int ARFMLevelSupported : 1;
01739 unsigned int RAAIMT : 4;
01740 unsigned int RAAMMT : 3;
01741 unsigned int reserved : 4;
01742 unsigned int ARFMLevel : 2;
01743 unsigned int RFMRAACounterDecrementPerREFcommand : 2;
01744 } bits;
01745 unsigned char raw[2];
01746 } FirstSDRAMAdaptiveRefreshManagementLevelA;
01747
01748 union ARFM FirstSDRAMAdaptiveRefreshManagementLevelB;
01749 union ARFM FirstSDRAMAdaptiveRefreshManagementLevelC;
01750
01751 union ARFM SecondSDRAMAdaptiveRefreshManagementLevelA;
01752 union ARFM SecondSDRAMAdaptiveRefreshManagementLevelB;
01753 union ARFM SecondSDRAMAdaptiveRefreshManagementLevelC;
01754
01756 int moduleSPDRev;
01757
01758 struct {
01759 DEVINFO SPD;
01760 DEVINFO PMIC0;
01761 DEVINFO PMIC1;
01762 DEVINFO PMIC2;
01763 DEVINFO ThermalSensors;
01764 } moduleDeviceInfo;
01765
01767 int moduleHeight;
01769 int moduleThicknessFront;
01771 int moduleThicknessBack;
01772
01773 union {
01774 struct {
01775 unsigned int ReferenceDesign : 5;
01776 unsigned int DesignRevision : 3;
01777 } bits;
01778 unsigned char raw;
01779 } ReferenceRawCardUsed;
01781 wchar_t moduleRefCard[SHORT_STRING_LEN];
01782
01784 unsigned char DRAMManufID;
01786 int DRAMManufBank;
01788 wchar_t DRAMManuf[SHORT_STRING_LEN];
01789
01791 int DRAMStepping;
01792
01793 union {
01794 struct {
01795 unsigned int NumDRAMRows : 2;
01796 unsigned int HeatSpreader : 1;
01797 unsigned int reserved : 1;
01798 unsigned int OperatingTemperatureRange : 4;
01799 } bits;
01800 unsigned char raw;
01801 } DIMMAttributes;
01802
01803 union {
01804 struct {
01805 unsigned int reserved20 : 3;
01806 unsigned int NumPackageRanksPerChannel : 3;
01807 unsigned int RankMix : 1;
01808 unsigned int reserved7 : 1;
01809 } bits;
01810 unsigned char raw;
01811 } ModuleOrganization;
01812
01813 union {
01814 struct {
01815 unsigned int PrimaryBusWidthPerChannel : 3;
01816 unsigned int BusWidthExtensionPerChannel : 2;
01817 unsigned int NumChannelsPerDIMM : 2;
01818 unsigned int reserved : 1;
01819 } bits;
01820 unsigned char raw;
01821 } MemoryChannelBusWidth;
01822
01823 union {
01824 struct {
01825 DEVINFO RegisteringClockDriver;
01826 DEVINFO DataBuffers;
01827
01828 union {
01829 struct {
01830 unsigned int QACK_tQACK_c : 1;
01831 unsigned int QBCK_tQBCK_c : 1;
01832 unsigned int QCCK_tQCCK_c : 1;
01833 unsigned int QDCK_tQDCK_c : 1;
01834 unsigned int reserved4 : 1;
01835 unsigned int BCK_tBCK_c : 1;
01836 unsigned int reserved76 : 2;
01837 } bits;
01838 unsigned char raw;
01839 } RCDRW08ClockDriverEnable;
01840
01841 union {
01842 struct {
01843 unsigned int QACAOutputs : 1;
01844 unsigned int QBCAOutputs : 1;
01845 unsigned int DCS1_nInputBufferQxCS1_nOutputs : 1;
01846 unsigned int BCS_nBCOM20BRST_nOutputs : 1;
01847 unsigned int QBACA13OutputDriver : 1;
01848 unsigned int QACS10_nOutput : 1;
01849 unsigned int QBCS10_nOutput : 1;
01850 unsigned int reserved : 1;
01851 } bits;
01852 unsigned char raw;
01853 } RCDRW09OutputAddressControlEnable;
01854
01855 union {
01856 struct {
01857 unsigned int QACK_tQACK_c : 2;
01858 unsigned int QBCK_tQBCK_c : 2;
01859 unsigned int QCCK_tQCCK_c : 2;
01860 unsigned int QDCK_tQDCK_c : 2;
01861 } bits;
01862 unsigned char raw;
01863 } RCDRW0AQCKDriverCharacteristics;
01864
01865 union {
01866 struct {
01867 unsigned int reserved : 8;
01868 } bits;
01869 unsigned char raw;
01870 } RCDRW0B;
01871
01872 union {
01873 struct {
01874 unsigned int DriverStrengthAddressCommandABOutputs : 2;
01875 unsigned int reserved32 : 2;
01876 unsigned int DriverStrengthQxCS0_nQxCS1_nQCCK_tQCCK_c : 2;
01877 unsigned int reserved76 : 2;
01878 } bits;
01879 unsigned char raw;
01880 } RCDRW0CQxCAQxCS_nDriverCharacteristics;
01881
01882 union {
01883 struct {
01884 unsigned int DriverStrengthBCOM20BCS_n : 2;
01885 unsigned int reserved2 : 1;
01886 unsigned int DriverStrengthBCK_tBCK_c : 2;
01887 unsigned int reserved75 : 3;
01888 } bits;
01889 unsigned char raw;
01890 } RCDRW0DDataBufferInterfaceDriverCharacteristics;
01891
01892 union {
01893 struct {
01894 unsigned int QCKDA_tQCKDA_cDifferentialSlewRate : 2;
01895 unsigned int QBACA130SingleEndedSlewRate : 2;
01896 unsigned int QBACS10_nSingleEndedSlewRate : 2;
01897 unsigned int reserved76 : 2;
01898 } bits;
01899 unsigned char raw;
01900 } RCDRW0EQCKQCAQCOutputSlewRate;
01901
01902 union {
01903 struct {
01904 unsigned int BCOM20BCS_nSingleEndedSlewRate : 2;
01905 unsigned int BCK_tBCK_cDifferentialSlewRate : 2;
01906 unsigned int reserved74 : 4;
01907 } bits;
01908 unsigned char raw;
01909 } RCDRW0FBCKBCOMBCSOutputSlewRate;
01910
01911 union {
01912 struct {
01913 unsigned int DQSRTTParkTermination : 3;
01914 unsigned int reserved73 : 5;
01915 } bits;
01916 unsigned char raw;
01917 } DBRW86DQSRTTParkTermination;
01918
01919 } RDIMM;
01920 struct {
01921 DEVINFO DifferentialMemoryBuffer;
01922 } DDIMM;
01923 struct {
01924 DEVINFO RegisteringClockDriver;
01925 DEVINFO DataBuffers;
01926 } NVDIMMN;
01927 struct {
01928 DEVINFO RegisteringClockDriver;
01929 DEVINFO DataBuffers;
01930 } NVDIMMP;
01931 } baseModule;
01932
01934 unsigned short BaseCfgCRC16;
01935
01937 bool XMPSupported;
01938
01940 struct {
01942 unsigned char version;
01943
01945 unsigned char PMICVendorID[2];
01946
01948 int numPMIC;
01949
01951 union {
01952 struct {
01953 unsigned int OCCapable : 1;
01954 unsigned int OCEnable : 1;
01955 unsigned int VoltageDefaultStepSize : 1;
01956 unsigned int OCGlobalResetEnable : 1;
01957 unsigned int reserved75 : 3;
01958 } bits;
01959 unsigned char raw;
01960 } PMICCapabilities;
01961
01963 union {
01964 struct {
01965 unsigned int SelfCertified : 1;
01966 unsigned int PMICIntelAVLValidated : 1;
01967 unsigned int reserved72 : 6;
01968 } bits;
01969 unsigned char raw;
01970 } ValidationCertification;
01971
01973 unsigned char revision;
01974
01976 unsigned short BaseCfgCRC16;
01977
01979 struct {
01981 bool enabled;
01982
01984 int certified;
01985
01987 int dimmsPerChannel;
01988
01990 char name[SHORT_STRING_LEN];
01991
01993 wchar_t moduleVPP[SHORT_STRING_LEN];
01994
01996 wchar_t moduleVDD[SHORT_STRING_LEN];
01997
01999 wchar_t moduleVDDQ[SHORT_STRING_LEN];
02000
02002 wchar_t memCtrlVoltage[SHORT_STRING_LEN];
02003
02005 float clkspeed;
02006
02008 wchar_t CASSupported[SHORT_STRING_LEN];
02010 float tCK;
02012 float tAA;
02014 float tRCD;
02016 float tRP;
02018 float tRAS;
02020 float tRC;
02022 float tWR;
02024 float tRFC1;
02026 float tRFC2;
02028 float tRFCsb;
02030 float tCCD_L;
02032 int tCCD_L_nCK;
02034 float tCCD_L_WR;
02036 int tCCD_L_WR_nCK;
02038 float tCCD_L_WR2;
02040 int tCCD_L_WR2_nCK;
02042 float tCCD_L_WTR;
02044 int tCCD_L_WTR_nCK;
02046 float tCCD_S_WTR;
02048 int tCCD_S_WTR_nCK;
02050 float tRRD_L;
02052 int tRRD_L_nCK;
02054 float tRTP;
02056 int tRTP_nCK;
02058 float tFAW;
02060 int tFAW_nCK;
02061
02063 union {
02064 struct {
02065 unsigned int RealTimeMemoryFrequencyOverclocking : 1;
02066 unsigned int IntelDynamicMemoryBoost : 1;
02067 unsigned int reserved72 : 6;
02068 } bits;
02069 unsigned char raw;
02070 } AdvancedMemoryOverclockingFeatures;
02071
02073 int cmdRateMode;
02075 unsigned char VendorPersonalityByte;
02077 unsigned short BaseCfgCRC16;
02078
02079 } profile[MAX_XMP3_PROFILES];
02080 } XMP;
02081
02083 bool EXPOSupported;
02084
02086 struct EXPOInfo {
02088 unsigned char version;
02089
02091 union {
02092 struct {
02093 unsigned int stepSize10mV : 1;
02094 unsigned int reserved71 : 3;
02095 } bits;
02096 unsigned char raw;
02097 } PMICFeatureSupport;
02098
02099 struct {
02101 bool enabled;
02102
02104 int dimmsPerChannel;
02105
02107 bool block1Enabled;
02108
02110 union {
02111 struct {
02112 unsigned int n50mV : 1;
02113 unsigned int n100mV: 4;
02114 unsigned int n1V : 2;
02115 unsigned int reserved7 : 1;
02116 } bits;
02117 unsigned char raw;
02118 } SDRAMVDD;
02119
02121 union {
02122 struct {
02123 unsigned int n50mV : 1;
02124 unsigned int n100mV : 4;
02125 unsigned int n1V : 2;
02126 unsigned int reserved7 : 1;
02127 } bits;
02128 unsigned char raw;
02129 } SDRAMVDDQ;
02130
02132 union {
02133 struct {
02134 unsigned int n50mV : 1;
02135 unsigned int n100mV : 4;
02136 unsigned int n1V : 2;
02137 unsigned int reserved7 : 1;
02138 } bits;
02139 unsigned char raw;
02140 } SDRAMVPP;
02141
02143 wchar_t moduleVPP[SHORT_STRING_LEN];
02144
02146 wchar_t moduleVDD[SHORT_STRING_LEN];
02147
02149 wchar_t moduleVDDQ[SHORT_STRING_LEN];
02150
02152 float clkspeed;
02153
02155 float tCK;
02157 float tAA;
02159 float tRCD;
02161 float tRP;
02163 float tRAS;
02165 float tRC;
02167 float tWR;
02169 float tRFC1;
02171 float tRFC2;
02173 float tRFCsb;
02174
02176 float tRRD_L;
02178 float tCCD_L;
02180 float tCCD_L_WR;
02182 float tCCD_L_WR2;
02184 float tFAW;
02186 float tWTR_L;
02188 float tWTR_S;
02190 float tRTP;
02191
02192 } profile[MAX_EXPO_PROFILES];
02193 unsigned short CRC16;
02194 } EXPO;
02195 } DDR5SDRAM;
02196 } specific;
02197
02198 } SPDINFO;
02199
02200
02206 typedef struct _MEMMODULEINFO
02207 {
02209 int iNumMemSticks;
02211 SPDINFO memSPDInfo[MAX_MEMORY_SLOTS];
02212 } MEMMODULEINFO;
02213
02214 typedef struct _TSODINFO
02215 {
02217 int channel;
02219 int slot;
02221 float temperature;
02222 union {
02223 struct {
02225 WORD wCap;
02227 WORD wCfg;
02229 WORD wHiLim;
02231 WORD wLoLim;
02233 WORD wCritLim;
02235 WORD wAmbTemp;
02237 WORD wManufID;
02239 WORD wDevRev;
02241 WORD wVendor[8];
02242 } DDR4;
02243 struct {
02245 BYTE bTSConfig;
02247 BYTE bIntConfig;
02249 WORD wHiLim;
02251 WORD wLoLim;
02253 WORD wCritHiLim;
02255 WORD wCritLoLim;
02257 WORD wCurTemp;
02259 BYTE bTSStatus;
02261 BYTE bError;
02262 } DDR5;
02263 } raw;
02264 } TSODINFO;
02265
02266 typedef struct _MEMTEMPINFO
02267 {
02269 int iNumMemSticks;
02271 TSODINFO memTempInfo[MAX_TSOD_SLOTS];
02272 } MEMTEMPINFO;
02273
02277 enum MEMTIMINGS_STATUS
02278 {
02279 MEMTIMINGS_SUCCESS = 0,
02281 MEMTIMINGS_ACCESS_DENIED = 1,
02283 MEMTIMINGS_INIT_DIRECTIO = 2,
02284 MEMTIMINGS_DIRECTIO_VERSION = 3,
02286 MEMTIMINGS_UNSUPPORTED = 4,
02287 };
02288
02289 typedef struct _MEMTIMINGSINFO
02290 {
02291 DWORD dwClockMhz;
02292 BYTE bCAS;
02293 BYTE bRCD;
02294 BYTE bRP;
02295 BYTE bRAS;
02296 BYTE bChannelMode;
02297 } MEMTIMINGSINFO;
02298
02304 SYSINFO_API BOOL SysInfoDll_GetMemoryInfo( MEMORYSTATUSEX *pMemInfoEx );
02305
02311 SYSINFO_API int SysInfoDll_GetMemSPDInfo( MEMMODULEINFO *pMemModuleInfo );
02312
02318 SYSINFO_API int SysInfoDll_GetMemTemps( MEMTEMPINFO* pMemTempInfo );
02319
02325 SYSINFO_API int SysInfoDll_GetMemTimings(MEMTIMINGSINFO* pMemTimingsInfo);
02327
02328
02329
02330
02331
02332
02336
02338 #define NUMMONITORS 8
02339 #define MAX_MONITOR_INFO_LEN 256
02340
02341 #define MAX_DISPLAY_DEVICES 16 //Max number of "DISPLAY<n>" devices - more than the number of adapters, adapters will be started for each DISPLAY device
02342
02343 #define SI_MAX_MONITORS NUMMONITORS
02344 #define MAX_STRINGLEN 128
02345 #define MAX_DEV_MODES 2000
02346 #define MAX_VIDEO_INFO_LEN 128
02347
02348 #define MAX_EDID_STR_LEN 32
02349
02350
02351 typedef struct _MONITOR_ATTRIBUTES
02352 {
02354 int iBPP;
02356 int iX;
02358 int iY;
02359
02360 int iDPI;
02362 float flRefreshRate;
02364 wchar_t szMonitorNumber[MAX_MONITOR_INFO_LEN];
02366 wchar_t szDisplay[MAX_MONITOR_INFO_LEN];
02367
02368
02369 char EDID_ModelName[MAX_EDID_STR_LEN];
02370 char EDID_SerialNum_Str[MAX_EDID_STR_LEN];
02371 int EDID_SerialNum_Int;
02372
02373 } MONITOR_ATTRIBUTES;
02374
02375
02376
02377
02378 typedef struct _MULTIMONITOR_DYN
02379 {
02380 int iNumberMonitorsInit;
02381 int iNumberMonitors;
02382 HMONITOR hMon[NUMMONITORS];
02383 MONITORINFOEX mi[NUMMONITORS];
02384 MONITOR_ATTRIBUTES ma[NUMMONITORS];
02385 DISPLAY_DEVICE dd[NUMMONITORS];
02386 } MULTIMONITOR_DYN;
02387
02388 typedef struct _SYSINFO_DISPLAY_DEVICE
02389 {
02390 bool bDisplay;
02391 wchar_t szDisplayDevice[MAX_VIDEO_INFO_LEN];
02392 wchar_t szDeviceDescription[MAX_VIDEO_INFO_LEN];
02393 wchar_t szDeviceID[MAX_VIDEO_INFO_LEN];
02394 wchar_t szDeviceKey[MAX_VIDEO_INFO_LEN];
02395
02396 bool bDriverInstalled;
02397 wchar_t szDeviceDescription2[MAX_VIDEO_INFO_LEN];
02398 wchar_t szChipType[MAX_VIDEO_INFO_LEN];
02399 wchar_t szDACType[MAX_VIDEO_INFO_LEN];
02400 wchar_t szBIOSString[MAX_VIDEO_INFO_LEN];
02401 wchar_t szInstalledDisplayDrivers[MAX_VIDEO_INFO_LEN];
02402 __int64 dwMemorySize;
02403
02404 wchar_t szDriverProviderName[MAX_VIDEO_INFO_LEN];
02405 wchar_t szDriverVersion[MAX_VIDEO_INFO_LEN];
02406 wchar_t szDriverDate[MAX_VIDEO_INFO_LEN];
02407 wchar_t szPNPID[MAX_VIDEO_INFO_LEN];
02408
02409 int iNumMonitors;
02411 int iMonitorIndex[SI_MAX_MONITORS];
02412
02413
02414 unsigned long ulBusType;
02415 unsigned long ulBusID;
02416 unsigned long ulBusSlotID;
02417 bool SLIMode;
02418
02419
02420 int iComputeUnits;
02421
02422 int iSMUnits;
02423
02424 int iRevisionID;
02425 int iCoreClock;
02426 int iMemoryClock;
02427 bool bUsingAMDEyefinity;
02428 bool bIsPrimaryDevice;
02429 int iIntegrated;
02430
02431 int iPCIeWidth;
02432 wchar_t szAMDDriverVersion[MAX_VIDEO_INFO_LEN];
02433 bool isMobileCard;
02434
02435 } SYSINFO_DISPLAY_DEVICE;
02436
02437 typedef struct _DISPLAY_DEVICES
02438 {
02440 int iNumDD;
02442 SYSINFO_DISPLAY_DEVICE dd[MAX_DISPLAY_DEVICES];
02443
02444 int AMDPowerXpressDevice;
02445
02446 bool gSyncEnabled;
02447
02448
02449 } DISPLAY_DEVICES;
02450
02451
02460 SYSINFO_API BOOL SysInfoDll_GetGraphicsInfo( MULTIMONITOR_DYN *MM ,
02461 DISPLAY_DEVICES *DD ,
02462 LPWSTR szSummary ,
02463 int iLen);
02464
02472 SYSINFO_API bool SysInfoDll_CheckWhichCardUsed(wchar_t *appName, bool* usingIntegrated, char lastPrograms[50][256]);
02473
02480 SYSINFO_API wchar_t * SysInfoDll_GetGraphicsSummaryLine(wchar_t * szSummary, int iLen);
02481
02483
02484
02485
02486
02491
02492 #define MAXUSBHOSTCONTROLLERS 10
02493
02494 #define MAXUSBDEVICES 14 //Per host controller
02495
02496 #define USBSTRINGLEN 100 //Reduced the maximum string length - SI101017
02497
02498
02499 typedef struct _USB_HOST_CONTROLLER
02500 {
02502 int iNumDev;
02504 wchar_t szDriverKeyName[USBSTRINGLEN];
02506 wchar_t szHostController[USBSTRINGLEN];
02508 wchar_t szDevice[MAXUSBDEVICES][USBSTRINGLEN];
02509 } USB_HOST_CONTROLLER;
02510
02511 typedef struct _USB_HOST_CONTROLLERS
02512 {
02514 int iNumHostControllers;
02515 USB_HOST_CONTROLLER USBHostController[MAXUSBHOSTCONTROLLERS];
02516 } USB_HOST_CONTROLLERS;
02517
02523 SYSINFO_API BOOL SysInfoDll_GetUSBInfo(USB_HOST_CONTROLLERS *USBHostControllers);
02524
02526
02527
02528
02529 #define MAXBIOMETRICS 20
02530 #define MAXBIOLEN 256
02531
02532
02533 typedef struct _SYSINFO_BIOMETRIC
02534 {
02535 wchar_t Description[MAXBIOLEN];
02536 wchar_t Manufacturer[MAXBIOLEN];
02537 wchar_t Model[MAXBIOLEN];
02538 } SYSINFO_BIOMETRIC;
02539
02540 typedef struct _SYSINFO_BIOMETRICS
02541 {
02542 int iNumEntries;
02543 SYSINFO_BIOMETRIC *Biometrics[MAXBIOMETRICS];
02544 } SYSINFO_BIOMETRICS;
02545
02551 SYSINFO_API BOOL SysInfoDll_GetBiometricsInfo(SYSINFO_BIOMETRICS *Biometrics);
02552
02554
02555
02556
02560
02561 #define WMISI_VSHORTSTRING 25
02562 #define WMISI_SHORTSTRING 50
02563 #define WMISI_INFO_VSHORTSTRING 100
02564 #define WMISI_INFO_SHORTSTRING 200
02565
02566 #define MAXBIOSMODULES 1
02567 #define MAXBIOSCHARACTERISTICS 100
02568
02569 #define MAXPROCSOCKETS 8
02570
02571 #define MAXNUMCDDVD 20
02572
02573 #define WMISI_MAXPAGEFILES 2
02574 #define MAX_FILENAME 512
02575
02576 #define SYSINFO_MAXNUMDISKS 200
02577 #define MAXLOGICALDISKS 26
02578 #define MAXRAMMODULES 64
02579 #define MAXCOMPUTERSYSTEMS 1
02580 #define MAXBASEBOARDS 1
02581 #define MAXSERIALPORTS 64
02582 #define MAXSPARALLELPORTS 10
02583 #define MAXNETWORKADAPTERS 20
02584 #define MAXPORTCONNECTORS 50
02585 #define MAXSYSTEMSLOTS 20
02586
02587
02588
02589 typedef struct _BIOSINFO
02590 {
02591 wchar_t szBIOS_Manufacturer[MAXBIOSMODULES][WMISI_INFO_SHORTSTRING];
02592 wchar_t szBIOS_ReleaseDate[MAXBIOSMODULES][WMISI_INFO_SHORTSTRING];
02593 wchar_t szBIOS_BIOSVersion[MAXBIOSMODULES][WMISI_INFO_SHORTSTRING];
02594 wchar_t szBIOS_SerialNumber[MAXBIOSMODULES][WMISI_INFO_SHORTSTRING];
02595 } BIOSINFO;
02596
02597 typedef struct _VIRTUALMEMORYINFO
02598 {
02600 int NumberPageFiles;
02602 wchar_t PageFileName[WMISI_MAXPAGEFILES][MAX_FILENAME];
02603 DWORD dwPageFileAllocatedBaseSize[WMISI_MAXPAGEFILES];
02604 } VIRTUALMEMORYINFO;
02605
02606 typedef struct _OPTICALDRIVEINFO
02607 {
02608 wchar_t OpticalDriveSummary[LONG_STRING_LEN];
02609 wchar_t OpticalDriveModel[MAXNUMCDDVD][WMISI_SHORTSTRING];
02610 int OpticalDrivesNum;
02611 } OPTICALDRIVEINFO;
02612
02613 typedef struct _PHYSDISKINFO
02614 {
02615 DWORD dwDisk_Index;
02616 UINT64 Size;
02617 bool bFixed;
02618 bool bSSD;
02619 bool bHotPlug;
02620 wchar_t Name[WMISI_SHORTSTRING];
02621 wchar_t szDisk_Description[WMISI_SHORTSTRING];
02622 wchar_t szSummary[WMISI_INFO_SHORTSTRING];
02623 wchar_t szSerial[WMISI_INFO_SHORTSTRING];
02624 } PHYSDISKINFO;
02625
02626 typedef struct _PHYSDISKINFOSUMMARY
02627 {
02628 UINT64 Size;
02629 int iNum;
02630 bool bSSD;
02631
02632 } PHYSDISKINFOSUMMARY;
02633
02634 typedef struct _PHYSICALDRIVEINFO
02635 {
02636 int iNumPhysDisks;
02637 wchar_t tszHDDSummary[LONG_STRING_LEN];
02638 PHYSDISKINFO PhysDisk[SYSINFO_MAXNUMDISKS];
02639 } PHYSICALDRIVEINFO;
02640
02641 typedef struct _DISKVOLUMEINFO
02642 {
02643 int iNumLogicalDisks;
02644 wchar_t szLogicalDisk_VolumeName[MAXLOGICALDISKS][WMISI_SHORTSTRING];
02645 wchar_t szLogicalDisk_VolumeGUID[MAXLOGICALDISKS][WMISI_SHORTSTRING];
02646 wchar_t szLogicalDisk_Name[MAXLOGICALDISKS][WMISI_SHORTSTRING];
02647 wchar_t szLogicalDisk_Description[MAXLOGICALDISKS][WMISI_SHORTSTRING];
02648 wchar_t szLogicalDisk_FileSystem[MAXLOGICALDISKS][WMISI_SHORTSTRING];
02649 wchar_t szLogicalDisk_ProductName[MAXLOGICALDISKS][WMISI_SHORTSTRING];
02650 wchar_t szLogicalDisk_VolumeSummary[MAXLOGICALDISKS][LONG_STRING_LEN];
02651 wchar_t szLogicalDisk_Serial[MAXLOGICALDISKS][LONG_STRING_LEN];
02652 int iLogicalDisk_DriveType[MAXLOGICALDISKS];
02653 ULONGLONG ullLogicalDisk_Totalbytes[MAXLOGICALDISKS];
02654 ULONGLONG ullLogicalDisk_Freebytes[MAXLOGICALDISKS];
02655 } DISKVOLUMEINFO;
02656
02657
02658
02659
02660
02661
02662
02663
02664
02665
02666
02667
02668
02669
02670
02671
02672
02673
02674
02675
02676
02677
02678
02679
02680
02681
02682
02683 enum RAMTYPE
02684 {
02685 RAMTYPE_UNDEFINED = 0,
02686 RAMTYPE_OTHER,
02687 RAMTYPE_UNKNOWN,
02688 RAMTYPE_DRAM,
02689 RAMTYPE_EDRAM,
02690 RAMTYPE_VRAM,
02691 RAMTYPE_SRAM,
02692 RAMTYPE_RAM,
02693 RAMTYPE_ROM,
02694 RAMTYPE_FLASH,
02695 RAMTYPE_EEPROM,
02696 RAMTYPE_FEPROM,
02697 RAMTYPE_EPROM,
02698 RAMTYPE_CDRAM,
02699 RAMTYPE_3DRAM,
02700 RAMTYPE_SDRAM,
02701 RAMTYPE_SGRAM,
02702 RAMTYPE_RDRAM,
02703 RAMTYPE_DDR,
02704 RAMTYPE_DDR2,
02705 RAMTYPE_DDR2_FB_DIMM,
02706 RAMTYPE_DDR3 = 0x18,
02707 RAMTYPE_FBD2,
02708 RAMTYPE_DDR4,
02709 RAMTYPE_LPDDR,
02710 RAMTYPE_LPDDR2,
02711 RAMTYPE_LPDDR3,
02712 RAMTYPE_LPDDR4,
02713 RAMTYPE_LNVD,
02714 RAMTYPE_HBM,
02715 RAMTYPE_HBM2,
02716 RAMTYPE_DDR5,
02717 RAMTYPE_LPDDR5,
02718 RAMTYPE_HBM3,
02719 RAMTYPE_TERMINATOR,
02720 };
02721
02722 typedef struct _RAMINFO_WMI
02723 {
02724 DWORD dwRAM_MemoryType[MAXRAMMODULES];
02725 ULONGLONG ullWMI_RAM_Capacity[MAXRAMMODULES];
02726 DWORD dwWMI_RAM_MemoryType[MAXRAMMODULES];
02727 } RAMINFO_WMI;
02728
02729 typedef struct _COMPUTERMODELINFO
02730 {
02731 wchar_t szComputer_Model[MAXCOMPUTERSYSTEMS][WMISI_INFO_SHORTSTRING];
02732 } COMPUTERMODELINFO;
02733
02734 typedef struct _BASEBOARDINFO
02735 {
02736 wchar_t szBaseBoard_Manufacturer[MAXBASEBOARDS][WMISI_INFO_SHORTSTRING];
02737 wchar_t szBaseBoard_Product[MAXBASEBOARDS][WMISI_INFO_SHORTSTRING];
02738 wchar_t szBaseBoard_SerialNumber[MAXBASEBOARDS][WMISI_INFO_SHORTSTRING];
02739 wchar_t szBaseBoard_Version[MAXBASEBOARDS][WMISI_INFO_SHORTSTRING];
02740 } BASEBOARDINFO;
02741
02742 typedef struct _SERIALPORTINFO
02743 {
02744 wchar_t szSerialPort_DeviceID[MAXSERIALPORTS][WMISI_VSHORTSTRING];
02745 wchar_t szSerialPort_Description[MAXSERIALPORTS][WMISI_VSHORTSTRING];
02746 wchar_t szSerialPort_ProviderType[MAXSERIALPORTS][WMISI_VSHORTSTRING];
02747 DWORD dwSerialPort_MaxBaudRate[MAXSERIALPORTS];
02748 bool WinPEstartAtZero;
02749 } SERIALPORTINFO;
02750
02751 typedef struct _PARALLELPORTINFO
02752 {
02753 wchar_t szParallelPort_Caption[MAXSPARALLELPORTS][WMISI_VSHORTSTRING];
02754 } PARALLELPORTINFO;
02755
02756 typedef struct _NETWORKADAPTERINFO
02757 {
02758 wchar_t szNetworkAdapter_PNPDeviceID[MAXNETWORKADAPTERS][WMISI_INFO_SHORTSTRING];
02759 wchar_t szNetworkAdapter_Description[MAXNETWORKADAPTERS][WMISI_INFO_SHORTSTRING];
02760 wchar_t szNetworkAdapter_Summary[MAXNETWORKADAPTERS][LONG_STRING_LEN];
02761 UINT64 ui64Speed[MAXNETWORKADAPTERS];
02762 wchar_t szNetworkAdapter_MACAddress[MAXNETWORKADAPTERS][SHORT_STRING_LEN];
02763 wchar_t szIPString_IPv4[MAXNETWORKADAPTERS][INET_ADDRSTRLEN];
02764 wchar_t szIPString_IPv6[MAXNETWORKADAPTERS][INET6_ADDRSTRLEN];
02765 } NETWORKADAPTERINFO;
02766
02768 #define Win32_PortConnector_PortType_PS2 2
02769 #define Win32_PortConnector_PortType_Keyboard 13
02770 #define Win32_PortConnector_PortType_Mouse 14
02771 #define Win32_PortConnector_PortType_USB 16
02772 #define Win32_PortConnector_PortType_Firewire 17
02773 #define Win32_PortConnector_PortType_Audio 29
02774 #define Win32_PortConnector_PortType_NUM 33
02775
02776
02777
02778 typedef struct _PORTCONNECTORINFO
02779 {
02780 DWORD dwPortConnector_PortType[MAXPORTCONNECTORS];
02781 wchar_t szPortConnector_PortType[MAXPORTCONNECTORS][WMISI_SHORTSTRING];
02782 wchar_t szPortConnector_ConnectorType[MAXPORTCONNECTORS][WMISI_SHORTSTRING];
02783 DWORD dwPortConnector_NumUSBPorts;
02784 DWORD dwPortConnector_NumFirewirePorts;
02785 } PORTCONNECTORINFO;
02786
02787 typedef struct _DISKPARTITIONINFO
02788 {
02790 int iNumDiskPartitions[SYSINFO_MAXNUMDISKS];
02791 } DISKPARTITIONINFO;
02792
02793 typedef struct _SYSINFO_WMI
02794 {
02795 BIOSINFO BIOSInfo;
02796 VIRTUALMEMORYINFO VirtualMemoryInfo;
02797 OPTICALDRIVEINFO OpticalDriveInfo;
02798 PHYSICALDRIVEINFO PhyscialDriveInfo;
02799 DISKVOLUMEINFO DiskVolumeInfo;
02800 RAMINFO_WMI RAMInfo;
02801 COMPUTERMODELINFO ComputerModelInfo;
02802 BASEBOARDINFO BaseBoardInfo;
02803 SERIALPORTINFO SerialPortInfo;
02804 PARALLELPORTINFO ParallelPortInfo;
02805 NETWORKADAPTERINFO NetworkAdapterInfo;
02806 PORTCONNECTORINFO PortConnectorInfo;
02807 DISKPARTITIONINFO DiskPartitionInfo;
02808
02809 } SYSINFO_WMI;
02810
02824 SYSINFO_API BOOL SysInfoDll_GetSystemInfo_WMI ( SYSINFO_WMI *SysInfo);
02825
02840 SYSINFO_API BOOL SysInfoDll_GetSystemInfo_WMI_async (SYSINFO_WMI *SysInfo_WMI);
02841
02842
02853 SYSINFO_API BOOL SysInfoDll_GetSystemInfo_WMI_async_complete (SYSINFO_WMI *SysInfo , int *iProgressPercent);
02854
02855
02866 int SysInfoDll_GetHDDetails(PHYSICALDRIVEINFO *PhyscialDriveInfo);
02867
02868
02879 int SysInfoDll_GetBaseBoardDetails(BASEBOARDINFO *BaseBoardInfo);
02880
02881
02890 SYSINFO_API wchar_t * SysInfoDll_GetHDDSummaryLine(SYSINFO_WMI *SysInfo_WMI, wchar_t * line, int iLen);
02891
02892
02894
02895
02896
02897
02902 #define MAXBURNERSTRLEN 60
02903 #define IMAPI2_MAX_FEATURES 70
02904
02905 typedef struct _IMAPI_INFO_DRIVE
02906 {
02907 TCHAR szVolume[MAXBURNERSTRLEN];
02908 TCHAR szVendor[MAXBURNERSTRLEN];
02909 TCHAR szProduct[MAXBURNERSTRLEN];
02910 int iFeatures[IMAPI2_MAX_FEATURES];
02911 TCHAR szFeatureSummary[LONG_STRING_LEN];
02912 } IMAPI_INFO_DRIVE;
02913
02914 typedef struct _IMAPI_INFO
02915 {
02916 int iNumDrives;
02917 IMAPI_INFO_DRIVE Drive[MAXNUMCDDVD];
02918 } IMAPI_INFO;
02919
02926 HRESULT SysInfoDll_GetIMAPI2OpticalBurners(wchar_t szIMAPI2BurnersSummary[MAXBURNERSTRLEN], wchar_t szIMAPI2Burners[MAXNUMCDDVD][MAXBURNERSTRLEN], IMAPI_INFO *pIMAPI_Drives);
02928
02929
02930
02931
02935
02936 #define SMB_VSHORT_STRINGLEN 32
02937 #define SMB_STRINGLEN 64
02938
02939 typedef struct _PROCINFO
02940 {
02941 int iNumProcessors;
02942 wchar_t szSocketDesignation[MAXPROCSOCKETS][SMB_STRINGLEN];
02943 wchar_t szManufacturer[MAXPROCSOCKETS][SMB_STRINGLEN];
02944 wchar_t szVersion[MAXPROCSOCKETS][SMB_STRINGLEN];
02945 float fVoltage[MAXPROCSOCKETS];
02946 WORD wExternalClock[MAXPROCSOCKETS];
02947 WORD wCurrentSpeed[MAXPROCSOCKETS];
02948 wchar_t szSerialNumber[MAXPROCSOCKETS][SMB_STRINGLEN];
02949 wchar_t szAssetTag[MAXPROCSOCKETS][SMB_STRINGLEN];
02950 wchar_t szPartNumber[MAXPROCSOCKETS][SMB_STRINGLEN];
02951 DWORD dwCoreCount[MAXPROCSOCKETS];
02952 DWORD dwCoreEnabled[MAXPROCSOCKETS];
02953 DWORD dwThreadCount[MAXPROCSOCKETS];
02954 } SI_PROCINFO;
02955
02956 typedef struct _RAMINFO_SMBIOS
02957 {
02958 int iNumberRAMModules;
02959 ULONGLONG ullRAM_Capacity[MAXRAMMODULES];
02960 DWORD dwRAM_MemoryType[MAXRAMMODULES];
02961 DWORD dwRAM_PositionInRow[MAXRAMMODULES];
02962 wchar_t szRAM_MemoryLocation[MAXRAMMODULES][SMB_VSHORT_STRINGLEN];
02963 DWORD dwRAM_Speed[MAXRAMMODULES];
02964 wchar_t szRAM_Manufacturer[MAXRAMMODULES][SMB_VSHORT_STRINGLEN];
02965 wchar_t szRAM_PartNumber[MAXRAMMODULES][SMB_STRINGLEN];
02966 wchar_t szRAM_szSerialNumber[MAXRAMMODULES][SMB_STRINGLEN];
02967 wchar_t szRAM_RAMModuleHeading[MAXRAMMODULES][SMB_VSHORT_STRINGLEN];
02968 wchar_t szRAM_RAMModuleLine1[MAXRAMMODULES][WMISI_INFO_VSHORTSTRING];
02969 wchar_t szRAM_RAMModuleLine2[MAXRAMMODULES][WMISI_INFO_VSHORTSTRING];
02970 } RAMINFO_SMBIOS;
02971
02972 typedef struct _SYSINFO_SMBIOS
02973 {
02974 BIOSINFO BIOSInfo;
02975 SI_PROCINFO ProcInfo;
02976 RAMINFO_SMBIOS RAMInfo;
02977 } SYSINFO_SMBIOS;
02978
02979 typedef struct _RAMINFO_SMBIOS_EX
02980 {
02981 ULONGLONG ullRAM_Capacity;
02982 DWORD dwRAM_MemoryType;
02983 DWORD dwRAM_PositionInRow;
02984 wchar_t szRAM_MemoryLocation[SMB_VSHORT_STRINGLEN];
02985 DWORD dwRAM_Speed;
02986 wchar_t szRAM_Manufacturer[SMB_VSHORT_STRINGLEN];
02987 wchar_t szRAM_PartNumber[SMB_STRINGLEN];
02988 wchar_t szRAM_szSerialNumber[SMB_STRINGLEN];
02989 wchar_t szRAM_RAMModuleHeading[SMB_VSHORT_STRINGLEN];
02990 wchar_t szRAM_RAMModuleLine1[WMISI_INFO_VSHORTSTRING];
02991 wchar_t szRAM_RAMModuleLine2[WMISI_INFO_VSHORTSTRING];
02992 } RAMINFO_SMBIOS_EX;
02993
02994 #define MAXSYSINFOGENERIC 20
02995
02996 typedef struct _SYSINFO_GENERIC_ENTRIES
02997 {
02998 int iNumEntries;
02999 wchar_t szHeading[MAXSYSINFOGENERIC][SHORT_STRING_LEN];
03000 wchar_t szContent[MAXSYSINFOGENERIC][SHORT_STRING_LEN];
03001 } SYSINFO_GENERIC_ENTRIES;
03002
03003 enum SMB_STATUS {
03004 SMBERR_SUCCESS,
03005 SMBERR_MEMALLOC,
03006 SMBERR_INIT_DIRECTIO,
03007 SMBERR_NO_SMBIOS,
03008 SMBERR_ACCESS_DENIED,
03009 SMBERR_FAILURE,
03010 SMBERR_BUFFER_TOO_SMALL,
03011 };
03012
03013
03019 SYSINFO_API int SysInfoDll_GetSystemInfo_SMBIOS( SYSINFO_SMBIOS *SysInfo );
03020
03028 SYSINFO_API int SysInfoDll_GetSystemInfo_SMBIOS_RAMInfo(RAMINFO_SMBIOS_EX* RAMInfo, int* ioNumRAMInfo);
03029
03031
03032
03033
03034
03039
03042 #define PART_UNKNOWN 0x00
03043
03044 #define PART_DOS2_FAT 0x01
03045
03046 #define PART_DOS3_FAT 0x04
03047
03048 #define PART_EXTENDED 0x05
03049
03050 #define PART_DOS4_FAT 0x06
03051
03052 #define PART_NTFS 0x07
03053
03054 #define PART_EXFAT 0x0107
03055
03056 #define PART_DOS32 0x0B
03057
03058 #define PART_DOS32X 0x0C
03059
03060 #define PART_DOSX13 0x0E
03061
03062 #define PART_DOSX13X 0x0F
03063
03064 #define PART_DYNAMICDISK 0x42
03065
03066 #define PART_LINUX 0x83
03067
03068 #define PART_LINUX_LVM 0x8E
03069
03070 #define PART_HFS 0xAF
03071
03072 #define PART_APFS 0x01AF
03073
03074 #define PART_GPT 0xEE
03075
03076 #define PART_RAW 0xF0
03077
03079 #define MAX_PARTITIONS 256 //Arbitrary number
03080
03081 #define MAX_NUM_PHYSDISKS (SYSINFO_MAXNUMDISKS + 26 + 1) //SYSINFO_MAXNUMDISKS physcial disks, 26 volumes with no physcial disk + 1 raw dd image
03082 #define START_VOLUME_INDEX SYSINFO_MAXNUMDISKS
03083 #define START_IMAGE_INDEX (START_VOLUME_INDEX + 26)
03084
03085 #define DRIVE_NOT_MOUNTED (DWORD) -1
03086
03087
03088
03089 typedef struct
03090 {
03092 WORD wPhyDisk;
03094 WORD wCylinder;
03095 WORD wHead;
03096 WORD wSector;
03098 ULONGLONG ullNumSectors;
03099 WORD wType;
03101 ULONGLONG ullRelativeSector;
03102 ULONGLONG ullNTRelativeSector;
03104 DWORD dwBytesPerSector;
03106 DWORD dwBytesPerCluster;
03108 WORD wMFTRecordSz;
03111 TCHAR szDrive[3];
03113 WORD chType;
03114 } DRIVEPACKET;
03115
03118 #define UNKNOWN_DISK_TYPE 0
03119
03120 #define BASIC_DISK 1
03121
03122 #define DYNAMIC_DISK 2
03123
03124
03127 #define UNKNOWN_DISK_PARTITION 0
03128
03129 #define MBR_DISK 1
03130
03131 #define GPT_DISK 2
03132
03133 #define APM_DISK 3
03134
03135 typedef struct
03136 {
03138 WORD nDiskType;
03140 WORD nPartitionTableType;
03142 WORD nNumPartitions;
03144 bool bNFTSImage;
03146 bool bVolumeImage;
03148 bool bDDImage;
03149
03150 WORD sectorSize;
03152 DRIVEPACKET PartitionInfo[MAX_PARTITIONS];
03153 }PHYSDISK;
03154
03155
03161 SYSINFO_API DWORD SysInfoDll_GetPartitionInfo(PHYSDISK *PhyDisks[MAX_NUM_PHYSDISKS]);
03162
03163
03170 SYSINFO_API DWORD SysInfoDll_GetPartitionInfoAll(PHYSDISK *PhyDisks[MAX_NUM_PHYSDISKS]);
03171
03172
03186
03187 SYSINFO_API DWORD SysInfoDll_ScanPartitionTableBlock(HANDLE hDrive, DWORD wDrive, PHYSDISK *Disk);
03188
03189
03191
03192
03193
03194
03195
03216 SYSINFO_API BOOL SysInfoDll_GetAll( LPWSTR szComputerName ,
03217 LPWSTR szszOSName ,
03218 CPUINFO *pCPUinfo ,
03219 MEMORYSTATUSEX *pMemInfoEx ,
03220 MULTIMONITOR_DYN *MM ,
03221 DISPLAY_DEVICES *DD ,
03222 LPWSTR szGraphicsSummary ,
03223 SYSINFO_WMI *SysInfo_WMI ,
03224 SYSINFO_SMBIOS *SysInfo_SMBIOS ,
03225 USB_HOST_CONTROLLERS *USBHostControllers );
03226
03227
03251 SYSINFO_API BOOL SysInfoDll_GetAll_async( LPWSTR szComputerName ,
03252 LPWSTR szszOSName ,
03253 CPUINFO *pCPUinfo ,
03254 MEMORYSTATUSEX *pMemInfoEx ,
03255 MULTIMONITOR_DYN *MM ,
03256 DISPLAY_DEVICES *DD ,
03257 LPWSTR szGraphicsSummary ,
03258 SYSINFO_WMI *SysInfo_WMI ,
03259 SYSINFO_SMBIOS *SysInfo_SMBIOS ,
03260 USB_HOST_CONTROLLERS *USBHostControllers );
03261
03263
03264
03265
03266
03267
03271
03272 enum SYSINFO_FORMAT_TYPE {
03274 FORMAT_TEXT = 0,
03276 FORMAT_HTML,
03278 FORMAT_TEXT_CLIPBOARD,
03279 };
03280
03299 SYSINFO_API BOOL SysInfoDll_FormatAll( SYSINFO_FORMAT_TYPE Format ,
03300 LPWSTR szComputerName ,
03301 LPWSTR szOSName ,
03302 CPUINFO *pCPUinfo ,
03303 MEMORYSTATUSEX *pMemInfoEx ,
03304 MEMMODULEINFO *pMemModuleInfo,
03305 MEMTIMINGSINFO *pMemTimingsInfo,
03306 MULTIMONITOR_DYN *MM ,
03307 DISPLAY_DEVICES *DD ,
03308 LPWSTR szGraphicsSummary ,
03309 SYSINFO_WMI *SysInfo_WMI ,
03310 SYSINFO_SMBIOS *SysInfo_SMBIOS ,
03311 USB_HOST_CONTROLLERS *USBHostControllers ,
03312 LPWSTR pszRes ,
03313 int *iResLen );
03314
03334 SYSINFO_API BOOL SysInfoDll_FormatAll2( SYSINFO_FORMAT_TYPE Format ,
03335 LPWSTR szComputerName ,
03336 LPWSTR szOSName ,
03337 CPUINFO *pCPUinfo ,
03338 MEMORYSTATUSEX *pMemInfoEx ,
03339 MEMMODULEINFO *pMemModuleInfo,
03340 MULTIMONITOR_DYN *MM ,
03341 DISPLAY_DEVICES *DD ,
03342 LPWSTR szGraphicsSummary ,
03343 SYSINFO_WMI *SysInfo_WMI ,
03344 SYSINFO_SMBIOS *SysInfo_SMBIOS ,
03345 USB_HOST_CONTROLLERS *USBHostControllers ,
03346 IMAPI_INFO *pIMAPI_Drives,
03347 LPWSTR pszRes ,
03348 int *iResLen );
03349
03364 SYSINFO_API BOOL SysInfoDll_FormatSummary( SYSINFO_FORMAT_TYPE Format ,
03365 LPWSTR szComputerName ,
03366 LPWSTR szOSName ,
03367 CPUINFO *pCPUinfo ,
03368 MEMORYSTATUSEX *pMemInfoEx ,
03369 LPWSTR szGraphicsSummary ,
03370 SYSINFO_WMI *SysInfo_WMI ,
03371 SYSINFO_SMBIOS *SysInfo_SMBIOS ,
03372 LPWSTR pszRes ,
03373 int *iResLen );
03374
03390 SYSINFO_API BOOL SysInfoDll_FormatSummary2(SYSINFO_FORMAT_TYPE Format,
03391 wchar_t *szComputerName,
03392 wchar_t *szOSName,
03393 CPUINFO *pCPUinfo,
03394 MEMORYSTATUSEX *pMemInfoEx,
03395 wchar_t *szGraphicsSummary,
03396 SYSINFO_WMI *SysInfo_WMI,
03397 SYSINFO_SMBIOS *SysInfo_SMBIOS,
03398 IMAPI_INFO *pIMAPI_Drives,
03399 wchar_t *pszRes,
03400 int *iResLen);
03401
03412 SYSINFO_API BOOL SysInfoDll_FormatGeneral( SYSINFO_FORMAT_TYPE Format ,
03413 LPWSTR szComputerName ,
03414 SYSINFO_WMI *SysInfo_WMI ,
03415 SYSINFO_SMBIOS *SysInfo_SMBIOS ,
03416 LPWSTR pszRes ,
03417 int *iResLen );
03418
03419 SYSINFO_API BOOL SysInfoDll_FormatGeneralExtended( SYSINFO_FORMAT_TYPE Format,
03420 LPWSTR szComputerName,
03421 SYSINFO_WMI *SysInfo_WMI,
03422 SYSINFO_SMBIOS *SysInfo_SMBIOS,
03423 SYSINFO_GENERIC_ENTRIES *SysInfo_Generic,
03424 LPWSTR pszRes,
03425 int *iResLen);
03426
03434 SYSINFO_API BOOL SysInfoDll_FormatPCI( SYSINFO_FORMAT_TYPE Format ,
03435 LPWSTR pszRes ,
03436 int *iResLen );
03437
03446 SYSINFO_API BOOL SysInfoDll_FormatCPU( SYSINFO_FORMAT_TYPE Format ,
03447 CPUINFO *pCPUinfo ,
03448 LPWSTR pszRes ,
03449 int *iResLen );
03450
03462 SYSINFO_API BOOL SysInfoDll_FormatMemory( SYSINFO_FORMAT_TYPE Format ,
03463 MEMORYSTATUSEX *pMemInfoEx ,
03464 SYSINFO_WMI *SysInfo_WMI ,
03465 SYSINFO_SMBIOS *SysInfo_SMBIOS ,
03466 MEMMODULEINFO *pMemModuleInfo ,
03467 MEMTIMINGSINFO *pMemTimingsInfo ,
03468 LPWSTR pszRes ,
03469 int *iResLen );
03470
03479 SYSINFO_API BOOL SysInfoDll_FormatMemSPD( SYSINFO_FORMAT_TYPE Format ,
03480 MEMMODULEINFO *pMemModuleInfo ,
03481 LPWSTR pszRes ,
03482 int *iResLen );
03483
03484
03493 SYSINFO_API BOOL SysInfoDll_FormatMemSPD_Short(SYSINFO_FORMAT_TYPE Format,
03494 MEMMODULEINFO *pMemModuleInfo,
03495 LPWSTR pszRes,
03496 int *iResLen);
03497
03508 SYSINFO_API BOOL SysInfoDll_FormatGraphics( SYSINFO_FORMAT_TYPE Format,
03509 MULTIMONITOR_DYN *MM,
03510 DISPLAY_DEVICES *DD,
03511 LPWSTR szGraphicsSummary,
03512 LPWSTR pszRes,
03513 int *iResLen);
03514
03523 SYSINFO_API BOOL SysInfoDll_FormatDiskVolumes ( SYSINFO_FORMAT_TYPE Format ,
03524 SYSINFO_WMI *SysInfo_WMI ,
03525 LPWSTR pszRes ,
03526 int *iResLen );
03527
03536 SYSINFO_API BOOL SysInfoDll_FormatDiskDrives( SYSINFO_FORMAT_TYPE Format ,
03537 SYSINFO_WMI *SysInfo_WMI ,
03538 LPWSTR pszRes ,
03539 int *iResLen );
03540
03549 SYSINFO_API BOOL SysInfoDll_FormatOpticalDrives( SYSINFO_FORMAT_TYPE Format,
03550 SYSINFO_WMI *SysInfo_WMI,
03551 LPWSTR pszRes,
03552 int *iResLen);
03553
03563 SYSINFO_API BOOL SysInfoDll_FormatOpticalDrives2(SYSINFO_FORMAT_TYPE Format,
03564 SYSINFO_WMI *SysInfo_WMI,
03565 IMAPI_INFO *pIMAPI_Drives,
03566 wchar_t *pszRes,
03567 int *iResLen);
03568
03577 SYSINFO_API BOOL SysInfoDll_FormatNetwork( SYSINFO_FORMAT_TYPE Format,
03578 SYSINFO_WMI *SysInfo_WMI,
03579 LPWSTR pszRes,
03580 int *iResLen);
03581
03590 SYSINFO_API BOOL SysInfoDll_FormatPorts( SYSINFO_FORMAT_TYPE Format,
03591 SYSINFO_WMI *SysInfo_WMI,
03592 LPWSTR pszRes,
03593 int *iResLen);
03594
03603 SYSINFO_API BOOL SysInfoDll_FormatUSB( SYSINFO_FORMAT_TYPE Format,
03604 USB_HOST_CONTROLLERS *USBHostControllers,
03605 LPWSTR pszRes,
03606 int *iResLen);
03607
03609
03610
03611
03612
03613
03614
03615
03616
03617
03618
03619
03620
03621
03622
03623
03624
03625
03626
03627
03628
03633
03634
03635 #define SERIAL_NUM_LEN 20
03636 #define FIRMWARE_REV_LEN 8
03637 #define MODEL_NUM_LEN 40
03638 #define VENDOR_UNIQUE_LEN 3
03639 #define WWN_LEN 8
03640
03641 #define MAX_PARTITIONS_PER_DEVICE 8
03642
03646
03647 #define SMART_STATUS_SUCCESS 0
03648
03650 #define SMART_ERR_DEVICE_ID_DNE -1000
03651
03652 #define SMART_ERR_DEVICE_ID_NOT_SMART -1001
03653 #define SMART_ERR_DEVICE_OPEN -1002
03654
03655 #define SMART_ERR_DRIVE_NUMBER_INVALID -1100
03656
03657 #define SMART_ERR_DRIVE_NUMBER_DNE -1101
03658
03659 #define SMART_ERR_DRIVE_NUMBER_NOT_FIXED -1102
03660
03662 #define SMART_ERR_BUFFER_INVALID -2000
03663
03664 #define SMART_ERR_BUFFER_TOO_SMALL -2001
03665
03666 #define SMART_ERR_BUFFER_FAILED_ALLOCATE -2002
03667
03669 #define SMART_ERR_SMART_DEVICE_ID_EMPTY -3001
03670
03671 #define SMART_ERR_SMART_DEVICE_ID_EOL -3002
03672
03674 #define SMART_ERR_SMART_ATTR_ID_EMPTY -4001
03675
03676 #define SMART_ERR_SMART_ATTR_ID_EOL -4002
03677
03678 #define SMART_ERR_SMART_ATTR_ID_INVALID -4003
03679
03680 #define SMART_WARN_SMART_ATTR_ID_UNKNOWN -4004
03681
03683 #define SMART_ERR_FOPEN_FAIL -5001
03684
03685 #define SMART_ERR_FWRITE_FAIL -5002
03686
03687 #define SMART_ERR_FREAD_FAIL -5003
03688
03689 #define SMART_ERR_ACCESS_RW -5101
03690
03691 #define SMART_ERR_ACCESS_RO -5102
03692
03693 #define SMART_ERR_FSEEK_FAIL -5201
03694
03696 #define SMART_ERR_GET_PHY_CAPACITY -6001
03697
03699 #define SMART_ERR_BUILD_DRIVES_INFO_NO_ACCESS -7001
03700
03701 #define SMART_ERR_NO_ADMIN_RIGHTS -7002
03702
03704 #define SMART_ERR_SELFTEST_FAILED -8001
03705
03707 #define SMART_WARN_48BITCMD_UNSUPPORTED -9001
03708
03710 #define SMART_ERR_48BITCMD_UNSUPPORTED -9002
03711
03713 #define SMART_ERR_DLL_NOT_INIT -10001
03714
03715 #define SMART_ERR_DLL_INIT_MEMORY_ALLOC_FAIL -10002
03716
03717 #define SMART_ERR_FUNCTION_NOT_SUPPORTED -10003
03718
03719 #define SMART_ERR_EMPTY_STRING -10004
03720
03721 #define SMART_ERR_INVALID_PARAM -10005
03722
03724 #define SMART_ERR_TEC_NO_ATTRIBUTES -20001
03725
03726 #define SMART_ERR_TEC_SIGNATURE_HEAD -20002
03727
03728 #define SMART_ERR_TEC_SIGNATURE_TAIL -20003
03729
03730 #define SMART_ERR_TEC_FILE_DNE -20004
03731
03732 #define SMART_WARN_TEC_NOT_ENOUGH_DATA -20005
03733
03734 #define SMART_WARN_TEC_ATTR_ID_NA -20006
03735
03736 #define SMART_WARN_TEC_UNABLE_TO_PREDICT -20007
03737
03738 #define SMART_ERR_UNEXPECTED -30001
03739
03741
03745 #define ATTR_INVALID 0x0
03746
03747 #define ATTR_READ_ERROR_RATE 0x1
03748
03749 #define ATTR_THROUGHPUT_PERF 0x2
03750
03751 #define ATTR_SPIN_UP_TIME 0x3
03752
03753 #define ATTR_START_STOP_COUNT 0x4
03754
03755 #define ATTR_REALLOC_SECTOR_COUNT 0x5
03756
03757 #define ATTR_READ_CHANNEL_MARGIN 0x6
03758
03759 #define ATTR_SEEK_ERROR_RATE 0x7
03760
03761 #define ATTR_SEEK_TIME_PERF 0x8
03762
03763 #define ATTR_POWER_ON_TIME 0x9
03764
03765 #define ATTR_SPIN_RETRY_COUNT 0xA
03766
03767 #define ATTR_CALIBRATION_RETRY_COUNT 0xB
03768
03769 #define ATTR_POWER_CYCLE_COUNT 0xC
03770
03771 #define ATTR_SOFT_READ_ERROR_RATE 0xD
03772
03773 #define ATTR_DOWNSHIFT_ERROR_COUNT 0xB7
03774 #define ATTR_END_TO_END_ERROR 0xB8
03775 #define ATTR_HEAD_STABILITY 0xB9
03776 #define ATTR_INDUCED_OP_VIB_DETECT 0xBA
03777 #define ATTR_UNCORRECTABLE_ERRORS 0xBB
03778 #define ATTR_COMMAND_TIMEOUT 0xBC
03779 #define ATTR_COMMAND_HIGH_FLY_WRITES 0xBD
03780
03781 #define ATTR_100_MINUS_TEMPERATURE 0xBE
03782
03783 #define ATTR_GSENSE_ERROR_RATE_BF 0xBF
03784
03786 #define ATTR_POWER_OFF_RETRACT_COUNT 0xC0
03787
03788 #define ATTR_LOAD_CYCLE_COUNT 0xC1
03789
03790 #define ATTR_TEMPERATURE_C2 0xC2
03791
03792 #define ATTR_HARDWARE_ECC_RECOVERED 0xC3
03793
03794 #define ATTR_REALLOC_EVENT_COUNT 0xC4
03795
03796 #define ATTR_PENDING_SECTOR_COUNT 0xC5
03797
03798 #define ATTR_UNCORRECTABLE_SECTOR_COUNT 0xC6
03799
03800 #define ATTR_ULTRADMA_CRC_ERROR_COUNT 0xC7
03801
03802 #define ATTR_WRITE_ERROR_COUNT 0xC8
03803
03804 #define ATTR_OFF_TRACK_ERRORS 0xC9
03805
03806 #define ATTR_DATA_ADDRESS_MARK_ERRORS 0xCA
03807
03808 #define ATTR_ECC_ERRORS 0xCB
03809
03810 #define ATTR_SOFT_ECC_CORRECTION 0xCC
03811
03812 #define ATTR_THERMAL_ASPERITY_RATE 0xCD
03813
03814 #define ATTR_FLYING_HEIGHT 0xCE
03815
03816 #define ATTR_SPIN_HIGH_CURRENT 0xCF
03817
03819 #define ATTR_SPIN_BUZZ 0xD0
03820
03821 #define ATTR_OFFLINE_SEEK_PERFORMANCE 0xD1
03822 #define ATTR_VIBRATION_DURING_WRITE 0xD3
03823 #define ATTR_SHOCK_DURING_WRITE 0xD4
03824
03825 #define ATTR_DISK_SHIFT 0xDC
03826
03827 #define ATTR_GSENSE_ERROR_RATE_DD 0xDD
03828
03829 #define ATTR_LOADED_HOURS 0xDE
03830
03831 #define ATTR_LOAD_UNLOAD_RERTY_COUNT 0xDF
03832
03834 #define ATTR_LOAD_FRICTION 0xE0
03835
03836 #define ATTR_LOAD_UNLOAD_CYCLE_COUNT 0xE1
03837
03838 #define ATTR_LOAD_IN_TIME 0xE2
03839
03840 #define ATTR_TORQUE_AMPLIFICATION_COUNT 0xE3
03841
03842 #define ATTR_POWEROFF_RETRACT_CYCLE 0xE4
03843
03844 #define ATTR_GMR_HEAD_AMPLITUDE 0xE6
03845
03846 #define ATTR_TEMPERATURE_E7 0xE7
03847
03849 #define ATTR_HEAD_FLYING_HOURS 0xF0
03850 #define ATTR_TOTAL_LBAS_WRITTEN 0xF1
03851 #define ATTR_TOTAL_LBAS_READ 0xF2
03852
03853 #define ATTR_READ_ERROR_RETRY_RATE 0xFA
03854 #define ATTR_FREE_FALL_PROTECTION 0xFE
03855
03859 enum NVME_SMART_ATTR
03860 {
03862 NVME_ATTR_CRITICAL_WARN,
03864 NVME_ATTR_TEMPERATURE,
03866 NVME_ATTR_AVAILABE_SPARE,
03868 NVME_ATTR_AVAILABLE_SPARE_THRESHOLD,
03870 NVME_ATTR_PERCENTAGE_USED,
03872 NVME_ATTR_DATA_UNITS_READ,
03874 NVME_ATTR_DATA_UNITS_WRITTEN,
03876 NVME_ATTR_HOST_READ_COMMANDS,
03878 NVME_ATTR_HOST_WRITE_COMMANDS,
03880 NVME_ATTR_CONTROLLER_BUSY_TIME,
03882 NVME_ATTR_POWER_CYCLES,
03884 NVME_ATTR_POWER_ON_HOURS,
03886 NVME_ATTR_UNSAFE_SHUTDOWNS,
03888 NVME_ATTR_MEDIA_ERRORS,
03890 NVME_ATTR_NUM_ERR_INFO_LOG_ENTRIES
03891 };
03892
03894
03895
03897 #define ATTR_TYPE_STR_DESC 0x20
03898
03899 #define ATTR_TYPE_INT_STATUS 0x40
03900
03901 #define ATTR_TYPE_INT_TYPE 0x80
03902
03903 #define ATTR_TYPE_INT_VALUE 0x01
03904
03905 #define ATTR_TYPE_ULONGLONG_RAW 0x02
03906
03907 #define ATTR_TYPE_INT_WORST 0x04
03908
03909 #define ATTR_TYPE_INT_THRESHOLD 0x08
03910
03911 enum SMART_TYPE
03912 {
03914 SMART_TYPE_ATA = 0,
03916 SMART_TYPE_NVME = 1
03917 };
03918
03919 enum SMART_SELFTEST
03920 {
03922 SMART_SELFTEST_ABORT = 0,
03924 SMART_SELFTEST_SHORT = 1,
03926 SMART_SELFTEST_EXT = 2,
03928 SMART_SELFTEST_CONVEYANCE = 3,
03930 SMART_SELFTEST_SELECTIVE = 4,
03931 SMART_SELFTEST_MAX = 5
03932 };
03933
03935 #define SMART_SELFTEST_STATUS_NOERR 0x0
03936
03937 #define SMART_SELFTEST_STATUS_ABORTED 0x1
03938
03939 #define SMART_SELFTEST_STATUS_INTERRUPTED 0x2
03940
03941 #define SMART_SELFTEST_STATUS_FATALERR 0x3
03942
03943 #define SMART_SELFTEST_STATUS_FAILED_UNKNOWN 0x4
03944
03945 #define SMART_SELFTEST_STATUS_FAILED_ELECTRICAL 0x5
03946
03947 #define SMART_SELFTEST_STATUS_FAILED_SERVOSEEK 0x6
03948
03949 #define SMART_SELFTEST_STATUS_FAILED_READ 0x7
03950
03951 #define SMART_SELFTEST_STATUS_FAILED_HANDLING 0x8
03952
03953 #define SMART_SELFTEST_STATUS_IN_PROGRESS 0xF
03954
03955
03960
03961 #define INTERFACE_TYPE_UNKNOWN 0x00
03962 #define INTERFACE_TYPE_SCSI 0x01
03963 #define INTERFACE_TYPE_ATAPI 0x02
03964 #define INTERFACE_TYPE_ATA 0x03
03965 #define INTERFACE_TYPE_1394 0x04
03966 #define INTERFACE_TYPE_SSA 0x05
03967 #define INTERFACE_TYPE_FIBRE 0x06
03968 #define INTERFACE_TYPE_USB 0x07
03969 #define INTERFACE_TYPE_RAID 0x08
03970 #define INTERFACE_TYPE_ISCSI 0x09
03971 #define INTERFACE_TYPE_SAS 0x0A
03972 #define INTERFACE_TYPE_SATA 0x0B
03973 #define INTERFACE_TYPE_NVME 0x11
03974
03975
03976
03977 #define ATA_COMPLIANCE(x) (x != 0x0000 && x != 0xFFFF)
03978 #define ATA8_SUPPORTED(x) (x & (1 << 8))
03979 #define ATA7_SUPPORTED(x) (x & (1 << 7))
03980 #define ATA6_SUPPORTED(x) (x & (1 << 6))
03981 #define ATA5_SUPPORTED(x) (x & (1 << 5))
03982 #define ATA4_SUPPORTED(x) (x & (1 << 4))
03983
03984
03985 #define TRANSPORT_TYPE_AVAILABLE(x) (x != 0x0000 && x != 0xFFFF)
03986 #define TRANSPORT_TYPE_SERIAL(x) (x & (1 << 12))
03987 #define TRANSPORT_TYPE_PARALLEL(x) ((x & (1 << 12)) == 0)
03988 #define SATA3_0_COMPLIANCE(x) (x & (1 << 5))
03989 #define SATA2_6_COMPLIANCE(x) (x & (1 << 4))
03990 #define SATA2_5_COMPLIANCE(x) (x & (1 << 3))
03991 #define SATA2_EXT_COMPLIANCE(x) (x & (1 << 2))
03992 #define SATA1_COMPLIANCE(x) (x & (1 << 1))
03993 #define ATA7_COMPLIANCE(x) (x & (1 << 1))
03994 #define ATA8_COMPLIANCE(x) (x & 1)
03995
03996
03997 #define ROTATION_RATE_AVAILABLE(x) (x != 0)
03998 #define ROTATION_RATE_SSD(x) (x == 0x0001)
03999
04000
04001 #define MULTIDMA_MODE2_SUPPORTED(x) (x & (1 << 2))
04002 #define MULTIDMA_MODE1_SUPPORTED(x) (x & (1 << 1))
04003 #define MULTIDMA_MODE0_SUPPORTED(x) (x & 1)
04004
04005
04006 #define MULTIDMA_MODE2_SELECTED(x) (x & (1 << 2))
04007 #define MULTIDMA_MODE1_SELECTED(x) (x & (1 << 1))
04008 #define MULTIDMA_MODE0_SELECTED(x) (x & 1)
04009
04010
04011 #define ULTRADMA_MODE6_SUPPORTED(x) (x & (1 << 6))
04012 #define ULTRADMA_MODE5_SUPPORTED(x) (x & (1 << 5))
04013 #define ULTRADMA_MODE4_SUPPORTED(x) (x & (1 << 4))
04014 #define ULTRADMA_MODE3_SUPPORTED(x) (x & (1 << 3))
04015 #define ULTRADMA_MODE2_SUPPORTED(x) (x & (1 << 2))
04016 #define ULTRADMA_MODE1_SUPPORTED(x) (x & (1 << 1))
04017 #define ULTRADMA_MODE0_SUPPORTED(x) (x & 1)
04018
04019
04020 #define ULTRADMA_MODE6_SELECTED(x) (x & (1 << 6))
04021 #define ULTRADMA_MODE5_SELECTED(x) (x & (1 << 5))
04022 #define ULTRADMA_MODE4_SELECTED(x) (x & (1 << 4))
04023 #define ULTRADMA_MODE3_SELECTED(x) (x & (1 << 3))
04024 #define ULTRADMA_MODE2_SELECTED(x) (x & (1 << 2))
04025 #define ULTRADMA_MODE1_SELECTED(x) (x & (1 << 1))
04026 #define ULTRADMA_MODE0_SELECTED(x) (x & 1)
04027
04028
04029 #define PIO_MODE3_SUPPORTED(x) (x & 1)
04030 #define PIO_MODE4_SUPPORTED(x) (x & (1 << 1))
04031
04032
04033 #define SATA_NCQ_PRIO_INFO_SUPPORTED(x) (x & (1 << 12))
04034 #define SATA_UNLOAD_NCQ_PENDING_SUPPORTED(x) (x & (1 << 11))
04035 #define SATA_PHY_EVENT_COUNTERS_SUPPORTED(x) (x & (1 << 10))
04036 #define SATA_POWER_MGMT_REQUESTS_SUPPORTED(x) (x & (1 << 9))
04037 #define SATA_NCQ_FEATURES_SUPPORTED(x) (x & (1 << 8))
04038 #define SATA_GEN3_SIGNAL_SPEED_SUPPORTED(x) (x & (1 << 3))
04039 #define SATA_GEN2_SIGNAL_SPEED_SUPPORTED(x) (x & (1 << 2))
04040 #define SATA_GEN1_SIGNAL_SPEED_SUPPORTED(x) (x & (1 << 1))
04041
04042
04043 #define SATA_SSP_SUPPORTED(x) (x & (1 << 6))
04044 #define SATA_IN_ORDER_DELIVERY_SUPPORTED(x) (x & (1 << 4))
04045 #define SATA_INIT_POWER_MGMT_SUPPORTED(x) (x & (1 << 3))
04046 #define SATA_DMA_SETUP_AUTO_ACT_SUPPORTED(x) (x & (1 << 2))
04047 #define SATA_NON_ZERO_BUFOFF_SUPPORTED(x) (x & (1 << 1))
04048
04049
04050 #define SATA_SSP_ENABLED(x) (x & (1 << 6))
04051 #define SATA_IN_ORDER_DELIVERY_ENABLED(x) (x & (1 << 4))
04052 #define SATA_INIT_POWER_MGMT_ENABLED(x) (x & (1 << 3))
04053 #define SATA_DMA_SETUP_AUTO_ACT_ENABLED(x) (x & (1 << 2))
04054 #define SATA_NON_ZERO_BUFOFF_ENABLED(x) (x & (1 << 1))
04055
04056
04057 #define AAM_LEVEL_VENDOR_SPECIFIC(x) (x == 0x00)
04058 #define AAM_LEVEL_MIN_ACOUSTIC(x) (x == 0x80)
04059 #define AAM_LEVEL_INT_ACOUSTIC(x) (x >= 0x81 && x <= 0xFD)
04060 #define AAM_LEVEL_MAX_PERFORMANCE(x) (x == 0xFE)
04061
04062
04063 #define APM_LEVEL_MIN_POWER_WITH_STANDBY(x) (x == 0x01)
04064 #define APM_LEVEL_INT_POWER_WITH_STANDBY(x) (x >= 0x02 && x <= 0x7F)
04065 #define APM_LEVEL_MIN_POWER_WITHOUT_STANDBY(x) (x == 0x80)
04066 #define APM_LEVEL_INT_POWER_WITHOUT_STANDBY(x) (x >= 0x81 && x <= 0xFD)
04067 #define APM_LEVEL_MAX_PERFORMANCE(x) (x == 0xFE)
04068
04069
04070 #define SCT_TRANSPORT_SUPPORTED(x) (x & 1)
04071 #define SCT_DATA_TABLES_SUPPORTED(x) (x & (1 << 5))
04072 #define SCT_FEATURES_CTRL_SUPPORTED(x) (x & (1 << 4))
04073 #define SCT_ERROR_RECOVERY_CTRL_SUPPORTED(x) (x & (1 << 3))
04074 #define SCT_WRITE_SAME_SUPPORTED(x) (x & (1 << 2))
04075
04076
04077 typedef struct _DEVICEINFO
04078 {
04079
04080 BYTE bChannelId;
04081 BYTE bTargetId;
04082 BYTE bLun;
04083 BYTE bInterfaceType;
04084
04085
04086 UINT64 qwNumCylinders;
04087 WORD wBytesPerSector;
04088 WORD wSectorsPerTrack;
04089 WORD wTracksPerCylinder;
04091 WORD wLogicalSectorSize;
04093 WORD wPhysicalSectorSize;
04095 DWORD dwBufferSize;
04097 WORD wECCSize;
04099 WORD wMediaRotationRate;
04100
04101
04103 WORD wATAVersionSupported;
04105 WORD wTransportTypeSupported;
04106 UINT64 qwTotalAddressableSectors;
04107
04109 BYTE bSerialNumber[SERIAL_NUM_LEN+1];
04111 BYTE bFirmwareRev[FIRMWARE_REV_LEN+1];
04113 BYTE bModelNumber[MODEL_NUM_LEN+1];
04114 BYTE bWorldWideID[WWN_LEN];
04115
04116
04117 BOOLEAN bSMARTSupported;
04118 BOOLEAN bSMARTEnabled;
04119 BOOLEAN bSMARTSelfTestSupported;
04120 BOOLEAN bSMARTErrorLoggingSupported;
04121
04122 BOOLEAN bLBASupported;
04123 BOOLEAN bIORDYSupported;
04124 BOOLEAN bCFastSupported;
04125
04126 BOOLEAN bDMASupported;
04128 BYTE bMultiwordDMASupported ;
04130 BYTE bMultiwordDMASelected ;
04131
04133 BYTE bUltraDMASupported ;
04135 BYTE bUltraDMASelected ;
04136
04138 BYTE bPIOSupported;
04139
04140 BOOLEAN bSATACompliance;
04142 WORD wSATACapabilities;
04144 WORD wSATAFeaturesSupported;
04146 WORD wSATAFeaturesEnabled;
04147
04148 BOOLEAN bTrustedComputingSupported;
04149 BOOLEAN bHPASupported;
04150 BOOLEAN bReadLookAheadSupported;
04151 BOOLEAN bReadLookAheadEnabled;
04152 BOOLEAN bWriteCacheSupported;
04153 BOOLEAN bWriteCacheEnabled;
04154 BOOLEAN bPowerManagementSupported;
04155 BOOLEAN bSecurityModeSupported;
04156 BOOLEAN bSecurityModeEnabled;
04157 BOOLEAN bDeviceConfigOverlaySupported;
04158 BOOLEAN b48BitAddressSupported;
04159 BOOLEAN bAutoAcousticSupported;
04160 BOOLEAN bAutoAcousticEnabled;
04161 BYTE bRecommendedAAMLevel;
04162 BYTE bCurrentAAMLevel;
04163 BOOLEAN bPowerUpStandbySupported;
04164 BOOLEAN bPowerUpStandbyEnabled;
04165 BOOLEAN bAutoPowerManagementSupported;
04166 BOOLEAN bAutoPowerManagementEnabled;
04167 BYTE bCurrentAPMLevel;
04168 BOOLEAN bCFASupported;
04169 BOOLEAN bGPLoggingSupported;
04170 BOOLEAN bStreamingSupported;
04171 BOOLEAN bMediaCardPassthroughSupported;
04172 BOOLEAN bMediaCardPassthroughEnabled;
04173 BOOLEAN bExtPowerConditionsSupported;
04174 BOOLEAN bExtPowerConditionsEnabled;
04175 BOOLEAN bExtStatusReportingSupported;
04176 BOOLEAN bExtStatusReportingEnabled;
04177 BOOLEAN bFreefallControlSupported;
04178 BOOLEAN bFreefallControlEnabled;
04179 BOOLEAN bWriteReadVerifySupported;
04180 BOOLEAN bWriteReadVerifyEnabled;
04181 BOOLEAN bTrimSupported;
04183 WORD wSCTCommandTransportSupported;
04184 BOOLEAN bNVCacheEnabled;
04185 BOOLEAN bNVCachePMSupported;
04186 BOOLEAN bNVCachePMEnabled;
04187
04188 } DEVICEINFO, *LPDEVICEINFO;
04189
04191
04206 SYSINFO_API int SysInfoDll_Smart_Init( bool debug,
04207 wchar_t *iDebugFile = NULL,
04208 bool iRecordTEC = true );
04209
04219 SYSINFO_API void SysInfoDll_Smart_Cleanup( void );
04220
04231 SYSINFO_API int SysInfoDll_Smart_Refresh( bool iRecordTEC = false );
04232
04239 SYSINFO_API int SysInfoDll_Smart_SetInitTimeout( DWORD iTimeoutMs );
04240
04245 SYSINFO_API int SysInfoDll_Smart_GetNumSmartDevices( void );
04246
04251 SYSINFO_API int SysInfoDll_Smart_GetNumDetectedDrives( void );
04252
04258 SYSINFO_API int SysInfoDll_Smart_GetPhysicalDeviceIDFirst( void );
04259
04268 SYSINFO_API int SysInfoDll_Smart_GetPhysicalDeviceIDNext( void );
04269
04275 SYSINFO_API int SysInfoDll_Smart_IsValidSmartDevice( int iDeviceID );
04276
04298 SYSINFO_API int SysInfoDll_Smart_GetDevicePartitionInfo( int *ioDriveNumSameDisk ,
04299 int* ioNumPartition ,
04300 int iDeviceID );
04301
04308 SYSINFO_API int SysInfoDll_Smart_GetDriveLetterFromDriveNum( wchar_t* ioDriveLetter,
04309 int iDriveNum );
04310
04317 SYSINFO_API int SysInfoDll_Smart_GetDeviceIDFromDriveNum( int iDriveNum );
04318
04327 SYSINFO_API int SysInfoDll_Smart_GetDeviceSerialNumber( wchar_t* ioBuf ,
04328 int* ioLen ,
04329 int iDeviceID );
04330
04339 SYSINFO_API int SysInfoDll_Smart_GetDeviceFirmWareRev( wchar_t* ioBuf ,
04340 int* ioLen ,
04341 int iDeviceID );
04342
04351 SYSINFO_API int SysInfoDll_Smart_GetDeviceModelNumber( wchar_t* ioBuf ,
04352 int* ioLen ,
04353 int iDeviceID );
04354
04361 SYSINFO_API int SysInfoDll_Smart_GetDeviceCapacity( int* ioCapacity ,
04362 int iDeviceID );
04363
04372 SYSINFO_API int SysInfoDll_Smart_GetDeviceInterface(wchar_t* ioBuf, int* ioLen, bool* isSSD, int iDeviceID);
04373
04380 SYSINFO_API int SysInfoDll_Smart_GetVolumeCapacity( int* ioCapacity ,
04381 int iDriveNum );
04382
04388 SYSINFO_API int SysInfoDll_Smart_GetSmartDeviceIDFirst( void );
04389
04398 SYSINFO_API int SysInfoDll_Smart_GetSmartDeviceIDNext( void );
04399
04405 SYSINFO_API int SysInfoDll_Smart_GetNumSmartAttr( int iDeviceID );
04406
04413 SYSINFO_API int SysInfoDll_Smart_GetSmartAttributeIDFirst( int iDeviceID );
04414
04423 SYSINFO_API int SysInfoDll_Smart_GetSmartAttributeIDNext( int iDeviceID );
04424
04430 SYSINFO_API int SysInfoDll_Smart_RefreshSmartAttributes( int iDeviceID );
04431
04438 SYSINFO_API int SysInfoDll_Smart_ExecuteSelfTest(int iDeviceID, int iTestType);
04439
04447 SYSINFO_API int SysInfoDll_Smart_GetSelfTestStatus(int iDeviceID, int* ioStatus, int* ioPercentRem);
04448
04456 SYSINFO_API int SysInfoDll_Smart_GetMaxLBA(int iDeviceID, unsigned long long* oMaxLBA);
04457
04465 SYSINFO_API int SysInfoDll_Smart_GetMax28bitLBA(int iDeviceID, unsigned int* oMaxLBA);
04466
04474 SYSINFO_API int SysInfoDll_Smart_SetMaxLBA(int iDeviceID, unsigned long long iMaxLBA);
04475
04483 SYSINFO_API int SysInfoDll_Smart_GetDCOMaxLBA(int iDeviceID, unsigned long long* oMaxLBA);
04484
04492 SYSINFO_API int SysInfoDll_Smart_SetDCOMaxLBA(int iDeviceID, unsigned long long iMaxLBA);
04493
04500 SYSINFO_API int SysInfoDll_Smart_RestoreDCO(int iDeviceID);
04501
04511 SYSINFO_API int SysInfoDll_Smart_ReadSectors(int iDeviceID, unsigned long long iLBA, unsigned int iNumSectors, unsigned char* oBuffer);
04512
04531 SYSINFO_API int SysInfoDll_Smart_GetSmartAttributeByID( void* ioPtr ,
04532 int* ioLen ,
04533 int iAttrID ,
04534 int inAttrType ,
04535 int iDeviceID );
04536
04537
04546 SYSINFO_API int SysInfoDll_Smart_GetAttrDescByID( wchar_t *oBuf ,
04547 int *ioLen ,
04548 int iAttrID ,
04549 int iDeviceID);
04550
04551
04558 SYSINFO_API int SysInfoDll_Smart_GetDeviceInfo( DEVICEINFO *oDeviceInfo ,
04559 int iDeviceID );
04560
04574 SYSINFO_API int SysInfoDll_Smart_ExportReport( wchar_t *filename ,
04575 int iDeviceID ,
04576 wchar_t *iHeaderText ,
04577 int iHeaderTextLen ,
04578 int iExportFlags = 3 ,
04579 int iHistoryAttr = 0 );
04580
04587 SYSINFO_API int SysInfoDll_Smart_RecordTECData( int iDeviceID );
04588
04596 SYSINFO_API int SysInfoDll_Smart_GetTECDataSetCount( int* ioCount ,
04597 int iDeviceID );
04598
04611 SYSINFO_API int SysInfoDll_Smart_ExportTECData( time_t* ioTimeArray ,
04612 int* ioNormValArray ,
04613 int* ioWorstValArray ,
04614 unsigned long long* ioRawValArray,
04615 int* ioArraySize ,
04616 int iAttrID ,
04617 int iDeviceID );
04630 SYSINFO_API int SysInfoDll_Smart_GetTECDataAtIndex( time_t* ioTime ,
04631 int* ioNormVal ,
04632 int* ioWorstVal ,
04633 unsigned long long* ioRawVal,
04634 int inIndex ,
04635 int iAttrID ,
04636 int iDeviceID );
04637
04653 SYSINFO_API int SysInfoDll_Smart_EstimateTECByAttributeID( time_t* ioEarliest ,
04654 time_t* ioLatest ,
04655 int iAttrID ,
04656 int iDeviceID );
04657
04674 SYSINFO_API int SysInfoDll_Smart_EstimateTEC( time_t* ioEarliest ,
04675 time_t* ioLatest ,
04676 int* oAttrID ,
04677 int iDeviceID );
04678
04680
04681
04682
04683
04684
04685
04686
04687
04688
04689
04694
04695
04697 #define INT_NOVALUEAVAILABLE -1001
04698 #define NOVALUEAVAILABLE nanf("")
04699
04700
04702 #define NUMTEMPSAMPLES 1000
04703
04704 #define MAXNUMTEMPVALUES 200
04705
04706 #define MAXNUMTEMPSOURCES 64
04707
04709 #define TEMP_MIN_DISK 1
04710
04711 #define TEMP_MAX_DISK 128
04712
04714 #define MAXNUMFANVALUES 5
04715
04716 #define MAXVOLTAGEVALUES 7
04717
04719 enum PM_Temp_Type
04720 {
04721 PM_TEMP_NONE = 0,
04723 PM_TEMP_CPU_AVE = 1,
04725 PM_TEMP_CPU = 2,
04727 PM_TEMP_CPU_CORE = 4,
04729 PM_TEMP_HDD = 8,
04731 PM_TEMP_GPU = 16,
04733 PM_TEMP_RAM = 32,
04735 PM_TEMP_SENSOR = 64,
04736 };
04737
04738 enum PM_Auto_Type
04739 {
04740 PM_TEMP_AUTO_ALL = 0,
04741 PM_TEMP_AUTO_CPU,
04742 PM_TEMP_AUTO_HDD,
04743 PM_TEMP_AUTO_GPU,
04744 PM_TEMP_AUTO_RAM,
04745 };
04746
04748 typedef struct _MSR_TEMP
04749 {
04750 bool bDataCollected;
04751 WORD wCPUGroup;
04752 DWORD_PTR pdwCPUAffinityMask;
04753 ULONGLONG ullMSR0x19C;
04754 int iPROCHOT1;
04755 int iPROCHOT2;
04756 int iResolutionInDegreesCelcius;
04757 int iReadingValid;
04759 int iDigitalReadout;
04761 int iTemperature;
04762 } MSR_TEMP;
04763
04765 #define DRIVE_TYPE_UNKNOWN -1
04766 #define DRIVE_TYPE_FIXED 3
04767 #define DRIVE_TYPE_FIXED_HOTPLUG 100
04768
04769 typedef struct _PM_TEMP_KEY
04770 {
04772 PM_Temp_Type iType;
04774 int iID;
04776 int iIDSubvalue;
04778 WORD wCPUGroup;
04779 INT64 iCPUMask;
04780 bool ReadBEasC2;
04781
04782
04783 } PM_TEMP_KEY;
04784
04786 typedef struct TSensorsdata
04787 {
04789 PM_TEMP_KEY iKey[MAXNUMTEMPVALUES];
04791 int iPMKeySelected[MAXNUMTEMPVALUES];
04793 TCHAR szTempCaption[MAXNUMTEMPVALUES][SHORT_STRING_LEN];
04795 float Temp[MAXNUMTEMPVALUES];
04797 float MaxTemp[MAXNUMTEMPVALUES];
04799 float MinTemp[MAXNUMTEMPVALUES];
04801 TCHAR szVoltageCaption[MAXVOLTAGEVALUES][SHORT_STRING_LEN];
04803 float VIO,VCORE,VCORE2;
04804 float VP5,VP12,VN12,VN5;
04806 TCHAR szFanCaption[MAXNUMFANVALUES][SHORT_STRING_LEN];
04808 int FAN1,FAN2,FAN3,FAN4,FAN5;
04810 MSR_TEMP CPUMSRTemp[MAXNUMTEMPVALUES];
04812 int iTempIndex;
04814 bool bTempHistoryWrap;
04816 SYSTEMTIME TempHistorySampleTime[NUMTEMPSAMPLES];
04818 float flTempHistory[MAXNUMTEMPVALUES][NUMTEMPSAMPLES];
04819
04820 } TSENSORSDATA;
04821
04843 SYSINFO_API bool SysInfoDll_InitPassMarkTemp(DWORD dwTempTypes, CPUINFO *pCPUinfo, SYSINFO_WMI *WMI_HDDinfo, bool *pbSMARTInitialized, TSENSORSDATA * psdata, bool allowMutlipleGPUs = false);
04844
04858 SYSINFO_API bool SysInfoDll_GetPassMarkTemps(DWORD dwTempTypes, HANDLE hDirectIO, wchar_t sztemp_C_or_F, CPUINFO *pCPUinfo, TSENSORSDATA * psdata);
04859
04861
04862
04863
04864
04865
04866
04867
04868
04869
04870
04875
04876 #define MAX_SOFTWARE_RECORDS 1000
04877 #define MAX_SOFTWARE_NAME_LEN 128
04878 #define MAX_USER_NAME_LEN 64
04879
04881 typedef struct _SOFTWARE_RECORD {
04883 wchar_t SoftwareName[MAX_SOFTWARE_NAME_LEN];
04885 wchar_t Path[MAX_PATH];
04886 }SOFTWARE_RECORD, *PSOFTWARE_RECORD;
04887
04888 typedef struct _SOFTWARE_LIST {
04890 int iCount;
04892 SOFTWARE_RECORD *sw[MAX_SOFTWARE_RECORDS];
04893 }SOFTWARE_LIST, *PSOFTWARE_LIST;
04894
04895
04901 SYSINFO_API int SysInfoDll_GetInstalledProgramsSystem(SOFTWARE_LIST *swl);
04902
04908 SYSINFO_API int SysInfoDll_GetInstalledProgramsUser(SOFTWARE_LIST *swl);
04909
04915 SYSINFO_API int SysInfoDll_GetInstalledAppsSystem(SOFTWARE_LIST* swl);
04916
04922 SYSINFO_API int SysInfoDll_GetInstalledAppsUser(SOFTWARE_LIST* swl);
04923
04929 SYSINFO_API void SysInfoDll_GetInstalledPrograms_ReleaseMem(SOFTWARE_LIST *swl);
04930
04932
04933 #endif