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
00468 int iHyperThreadStatus;
00470 int L3_cache_size;
00472 int SMID_SSE3;
00474 int iCoresPerPackage;
00476 int iThreadsPerPackage;
00478 int MaxBasicInputValue;
00480 int PAE;
00482 int DEP;
00484 int SMID_SSE4_1;
00486 int SMID_SSE4_2;
00488 int EMT64;
00490 int L1_instruction_cache_size;
00492 int Trace_cache_size;
00494 int L1_data_cache_size;
00496 int Prefetching;
00498 int L1_data_caches_per_package;
00500 int L1_instruction_caches_per_package;
00502 int L2_caches_per_package;
00504 int L3_caches_per_package;
00505
00507 CACHEINFO CacheInfo[MAX_CACHES];
00509 int iNumCaches;
00510
00511 CPUMSRINFO MSR[MAX_NUM_CPUS];
00513 int SMID_SSSE3;
00515 int SMID_SSE4a;
00517 int VMX;
00519 int SMX;
00521 int ACPI;
00523 wchar_t szEMT[VSHORT_STRING_LEN];
00524 int iManufacture;
00526 int HTT ;
00528 CPU_SPECIFICATION Spec;
00530 CPU_SPECIFICATION_STEPPING CPUPackage[MAX_NUM_CPU_PACKAGES] ;
00532 bool bDTS;
00534 bool bIntelTurboBoost;
00536 int iMaxTurbo1Core;
00538 int iMaxTurbo2Core;
00540 int iMaxTurbo3Core;
00542 int iMaxTurbo4Core;
00544 int iMaxTurbo5Core;
00546 int iMaxTurbo6Core;
00548 int iMaxTurbo7Core;
00550 int iMaxTurbo8Core;
00552 float flCPUSpeedTurbo;
00554 float flCPUSpeedTurboTheoreticalMax;
00556 int AES;
00557
00558
00560 CPU_OCLK OCLKBaseClock;
00562 CPU_OCLK OCLKMultiplier;
00564 CPU_OCLK OCLKFreq;
00566 bool bAMDTurboCore;
00568 wchar_t szHyperThreadStatus[LONG_STRING_LEN];
00570 wchar_t szCPUSummary[LONG_STRING_LEN];
00571
00573 CPU_GROUPS_INFO CPUGroupsInfo;
00574
00576 int AVX;
00577
00579
00580
00581 int AVX2;
00582 int FMA3;
00583 int FMA4;
00584 int XOP;
00585
00587 EFFICIENCYCORESINFO efficiencyCores[MAX_CORE_EFFICIENCY_CLASSES];
00588
00590 int iNumEfficiencyClasses;
00591
00593 int Future_expansion9[95];
00594
00595 } CPUINFO;
00596
00600 enum CPUINFO_STATUS
00601 {
00602 CPUINFO_SUCCESS = 0,
00603 CPUINFO_ACCESS_DENIED = 1,
00604 CPUINFO_INIT_DIRECTIO = 2,
00605 CPUINFO_DIRECTIO_VERSION = 3,
00606 CPUINFO_NOT_ALL_CPUS_AVAILABLE = 4,
00607 };
00608
00614 SYSINFO_API int SysInfoDll_GetCPUInfo( CPUINFO *pCPUinfo );
00615
00616
00622 SYSINFO_API int SysInfoDll_GetCPUInfoMin( CPUINFO *pCPUinfo );
00623
00625
00626
00627
00628
00629
00634 #define MODULE_PARTNO_LEN 32
00635 #define MAX_MEMORY_SLOTS 32
00636 #define MAX_TSOD_SLOTS 32
00637
00640 enum SPDINFO_STATUS
00641 {
00642 SPDINFO_SUCCESS = 0,
00644 SPDINFO_ACCESS_DENIED = 1,
00646 SPDINFO_INIT_DIRECTIO = 2,
00647 SPDINFO_DIRECTIO_VERSION = 3,
00649 SPDINFO_ACCESS_COLLISION = 4,
00650 };
00651
00652
00653 #define SPDINFO_MEMTYPE_SDRAM 4
00654 #define SPDINFO_MEMTYPE_DDR_SGRAM 6
00655 #define SPDINFO_MEMTYPE_DDR 7
00656 #define SPDINFO_MEMTYPE_DDR2 8
00657 #define SPDINFO_MEMTYPE_DDR2FB 9
00658 #define SPDINFO_MEMTYPE_DDR2FBPROBE 10
00659 #define SPDINFO_MEMTYPE_DDR3 11
00660 #define SPDINFO_MEMTYPE_DDR4 12
00661 #define SPDINFO_MEMTYPE_DDR4E 14
00662 #define SPDINFO_MEMTYPE_LPDDR3 15
00663 #define SPDINFO_MEMTYPE_LPDDR4 16
00664 #define SPDINFO_MEMTYPE_LPDDR4X 17
00665 #define SPDINFO_MEMTYPE_DDR5 18
00666 #define SPDINFO_MEMTYPE_LPDDR5 19
00667 #define SPDINFO_MEMTYPE_DDR5_NVDIMM_P 20
00668 #define SPDINFO_MEMTYPE_LPDDR5X 21
00669
00670
00671 #define SPDINFO_DDR2_EPP_PROFILE_ABBR 0xA1
00672 #define SPDINFO_DDR2_EPP_PROFILE_FULL 0XB1
00673
00674 #define MAX_XMP3_PROFILE_NAME_LEN 16
00675 #define MAX_XMP3_PROFILES 5
00676
00677 typedef struct _DEVINFO {
00679 unsigned char jedecID;
00681 int jedecBank;
00682 union {
00683 struct {
00684 unsigned int type : 4;
00685 unsigned int reserved : 2;
00686 unsigned int installed1 : 1;
00687 unsigned int installed0 : 1;
00688 } bits;
00689 unsigned char raw;
00690 } deviceType;
00691 int deviceRev;
00692 } DEVINFO;
00693
00694 typedef struct _SPDINFO
00695 {
00697 wchar_t szHeading[SHORT_STRING_LEN];
00699 wchar_t szLine1[SHORT_STRING_LEN];
00701 wchar_t szLine2[LONG_STRING_LEN];
00703 wchar_t szLine3[SHORT_STRING_LEN];
00704
00706 int type;
00708 int spdRev;
00710 bool registered;
00712 bool ecc;
00714 int year;
00716 int week;
00718 int dimmNum;
00720 int channel;
00722 int slot;
00724 unsigned char jedecID;
00726 int jedecBank;
00728 wchar_t jedecManuf[SHORT_STRING_LEN];
00729
00731 char modulePartNo[MODULE_PARTNO_LEN];
00733 int moduleRev;
00735 int moduleSerialNo;
00737 int moduleManufLoc;
00738
00740 int rowAddrBits;
00742 int colAddrBits;
00744 int numBanks;
00746 int numRanks;
00748 int deviceWidth;
00750 int busWidth;
00752 int txWidth;
00754 wchar_t moduleVoltage[SHORT_STRING_LEN];
00755
00757 float clkspeed;
00759 wchar_t szModulespeed[SHORT_STRING_LEN];
00761 int size;
00762
00764 wchar_t CASSupported[SHORT_STRING_LEN];
00766 float tCK;
00768 float tAA;
00770 float tRCD;
00772 float tRP;
00774 float tRAS;
00776 float tRRD;
00778 float tRC;
00780 float tRFC;
00781
00782
00783 BYTE rawSPDData[VLONG_STRING_LEN];
00784
00786 union SPECIFICINFO {
00788 struct SDRSDRAMINFO {
00790 float tAC;
00792 float tCKmed;
00794 float tACmed;
00796 float tCKshort;
00798 float tACshort;
00799
00801 float tIS;
00803 float tIH;
00805 float tDS;
00807 float tDH;
00808
00810 wchar_t CSSupported[SHORT_STRING_LEN];
00812 wchar_t WESupported[SHORT_STRING_LEN];
00813
00815 wchar_t BurstLengthsSupported[SHORT_STRING_LEN];
00817 wchar_t RefreshRate[SHORT_STRING_LEN];
00818
00820 bool buffered;
00822 bool OnCardPLL;
00824 bool BufferedDQMB;
00826 bool RegisteredDQMB;
00828 bool DiffClockInput;
00829
00831 bool EarlyRASPrechargeSupported;
00833 bool AutoPrechargeSupported;
00835 bool PrechargeAllSupported;
00837 bool WriteReadBurstSupported;
00838
00839 } SDRSDRAM;
00841 struct DDR1SDRAMINFO {
00843 float tAC;
00845 float tCKmed;
00847 float tACmed;
00849 float tCKshort;
00851 float tACshort;
00853 float tCKmax;
00854
00856 float tIS;
00858 float tIH;
00860 float tDS;
00862 float tDH;
00863
00865 float tDQSQ;
00867 float tQHS;
00868
00870 wchar_t CSSupported[SHORT_STRING_LEN];
00872 wchar_t WESupported[SHORT_STRING_LEN];
00873
00875 wchar_t BurstLengthsSupported[SHORT_STRING_LEN];
00877 wchar_t RefreshRate[SHORT_STRING_LEN];
00878
00880 bool buffered;
00882 bool OnCardPLL;
00884 bool FETOnCardEnable;
00886 bool FETExtEnable;
00888 bool DiffClockInput;
00889
00891 bool WeakDriverIncluded;
00893 bool ConcAutoPrecharge;
00895 bool FastAPSupported;
00896
00898 wchar_t bankDensity[VSHORT_STRING_LEN];
00900 wchar_t moduleHeight[VSHORT_STRING_LEN];
00901 } DDR1SDRAM;
00903 struct DDR2SDRAMINFO {
00905 float tAC;
00907 float tCKmed;
00909 float tACmed;
00911 float tCKshort;
00913 float tACshort;
00915 float tCKmax;
00916
00918 float tWR;
00920 float tWTR;
00922 float tRTP;
00923
00925 float tIS;
00927 float tIH;
00929 float tDS;
00931 float tDH;
00932
00934 float tDQSQ;
00936 float tQHS;
00938 float tPLLRelock;
00939
00941 wchar_t DRAMPackage[VSHORT_STRING_LEN];
00942
00944 wchar_t BurstLengthsSupported[SHORT_STRING_LEN];
00946 wchar_t RefreshRate[SHORT_STRING_LEN];
00947
00949 int numPLLs;
00951 bool FETExtEnable;
00953 bool AnalysisProbeInstalled;
00955 bool WeakDriverSupported;
00957 bool _50ohmODTSupported;
00959 bool PASRSupported;
00960
00962 wchar_t moduleType[SHORT_STRING_LEN];
00964 wchar_t moduleHeight[VSHORT_STRING_LEN];
00965
00967 bool EPPSupported;
00968
00970 struct EPPInfo {
00972 int profileType;
00974 int optimalProfile;
00975
00977 union PROFILEINFO {
00979 struct ABBRPROFILEINFO {
00981 bool enabled;
00983 wchar_t voltageLevel[SHORT_STRING_LEN];
00985 float clkspeed;
00987 int cmdRate;
00988
00990 int CASSupported;
00992 float tCK;
00993
00995 float tRCD;
00997 float tRP;
00999 float tRAS;
01000
01001 } abbrProfile[4];
01002 struct FULLPROFILEINFO {
01004 bool enabled;
01006 wchar_t voltageLevel[SHORT_STRING_LEN];
01008 float clkspeed;
01010 int cmdRate;
01011
01013 wchar_t addrDriveStrength[VSHORT_STRING_LEN];
01015 wchar_t CSDriveStrength[VSHORT_STRING_LEN];
01017 wchar_t clockDriveStrength[VSHORT_STRING_LEN];
01019 wchar_t dataDriveStrength[VSHORT_STRING_LEN];
01021 wchar_t DQSDriveStrength[VSHORT_STRING_LEN];
01023 wchar_t addrCmdFineDelay[VSHORT_STRING_LEN];
01025 wchar_t addrCmdSetupTime[VSHORT_STRING_LEN];
01027 wchar_t CSFineDelay[VSHORT_STRING_LEN];
01029 wchar_t CSSetupTime[VSHORT_STRING_LEN];
01030
01032 int CASSupported;
01034 float tCK;
01035
01037 float tRCD;
01039 float tRP;
01041 float tRAS;
01042
01044 float tWR;
01046 float tRC;
01047
01048 } fullProfile[2];
01049 } profileData;
01050 } EPP;
01051
01052 } DDR2SDRAM;
01054 struct DDR2FBSDRAMINFO {
01056 float tCKmax;
01058 float tWR;
01060 float tWTR;
01062 float tRTP;
01064 float tFAW;
01065
01067 wchar_t WRSupported[SHORT_STRING_LEN];
01069 wchar_t WESupported[SHORT_STRING_LEN];
01071 wchar_t ALSupported[SHORT_STRING_LEN];
01072
01074 wchar_t BurstLengthsSupported[SHORT_STRING_LEN];
01076 wchar_t RefreshRate[SHORT_STRING_LEN];
01078 wchar_t TerminationsSupported[SHORT_STRING_LEN];
01080 wchar_t DriversSupported[SHORT_STRING_LEN];
01081
01083 wchar_t moduleType[SHORT_STRING_LEN];
01085 wchar_t moduleHeight[VSHORT_STRING_LEN];
01087 wchar_t moduleThickness[VSHORT_STRING_LEN];
01088
01090 unsigned char DRAMManufID;
01092 int DRAMManufBank;
01094 wchar_t DRAMManuf[SHORT_STRING_LEN];
01095 } DDR2FBSDRAM;
01097 struct DDR3SDRAMINFO {
01099 float tWR;
01101 float tWTR;
01103 float tRTP;
01105 float tFAW;
01107 int tMAW;
01108
01110 bool RZQ6Supported;
01112 bool RZQ7Supported;
01114 bool DLLOffModeSupported;
01116 int OperatingTempRange;
01118 int RefreshRateExtTempRange;
01120 bool autoSelfRefresh;
01122 bool onDieThermalSensorReadout;
01124 bool partialArraySelfRefresh;
01126 bool thermalSensorPresent;
01127
01129 wchar_t nonStdSDRAMType[SHORT_STRING_LEN];
01130
01132 wchar_t maxActivateCount[VSHORT_STRING_LEN];
01133
01135 wchar_t moduleType[SHORT_STRING_LEN];
01137 int moduleHeight;
01139 int moduleThicknessFront;
01141 int moduleThicknessBack;
01143 wchar_t moduleWidth[VSHORT_STRING_LEN];
01144
01146 wchar_t moduleRefCard[SHORT_STRING_LEN];
01148 unsigned char DRAMManufID;
01150 int DRAMManufBank;
01152 wchar_t DRAMManuf[SHORT_STRING_LEN];
01154 int numDRAMRows;
01156 int numRegisters;
01158 bool heatSpreaderSolution;
01160 unsigned char regManufID;
01162 int regManufBank;
01164 wchar_t regManuf[SHORT_STRING_LEN];
01166 wchar_t regDeviceType[VSHORT_STRING_LEN];
01168 int regRev;
01169
01171 wchar_t cmdAddrADriveStrength[SHORT_STRING_LEN];
01173 wchar_t cmdAddrBDriveStrength[SHORT_STRING_LEN];
01175 wchar_t ctrlSigADriveStrength[SHORT_STRING_LEN];
01177 wchar_t ctrlSigBDriveStrength[SHORT_STRING_LEN];
01179 wchar_t clkY1Y3DriveStrength[SHORT_STRING_LEN];
01181 wchar_t clkY0Y2DriveStrength[SHORT_STRING_LEN];
01182
01184 bool XMPSupported;
01185
01187 struct XMPInfo {
01189 int revision;
01190
01192 struct XMPProfile {
01194 bool enabled;
01195
01197 int dimmsPerChannel;
01198
01200 wchar_t moduleVdd[SHORT_STRING_LEN];
01202 float clkspeed;
01203
01205 wchar_t CASSupported[SHORT_STRING_LEN];
01207 float tCK;
01209 float tAA;
01211 float tRCD;
01213 float tRP;
01215 float tRAS;
01217 float tRRD;
01219 float tRC;
01221 float tRFC;
01222
01224 float tWR;
01226 float tWTR;
01228 float tRTP;
01230 float tFAW;
01231
01233 float tCWL;
01235 float tREFI;
01236
01238 wchar_t WRtoRDTurnaround[SHORT_STRING_LEN];
01239
01241 wchar_t RDtoWRTurnaround[SHORT_STRING_LEN];
01242
01244 wchar_t back2BackTurnaround[SHORT_STRING_LEN];
01245
01247 int cmdRateMode;
01248
01250 wchar_t memCtrlVdd[SHORT_STRING_LEN];
01251 } profile[2];
01252 } XMP;
01253 } DDR3SDRAM;
01254
01256 struct DDR4SDRAMINFO {
01258 float tCKmax;
01260 float tRFC2;
01262 float tRFC4;
01264 float tRRD_S;
01266 float tRRD_L;
01268 float tCCD_L;
01270 float tFAW;
01272 int tMAW;
01273
01275 bool thermalSensorPresent;
01276
01278 int DRAMStepping;
01279
01281 struct {
01283 bool monolithic;
01285 int dieCount;
01287 bool multiLoadStack;
01288 } SDRAMPkgType;
01289
01291 struct {
01293 bool monolithic;
01295 int dieCount;
01297 int DRAMDensityRatio;
01299 bool multiLoadStack;
01300 } SecSDRAMPkgType;
01301
01303 wchar_t maxActivateCount[VSHORT_STRING_LEN];
01304
01306 bool PPRSupported;
01307
01309 bool SoftPPRSupported;
01310
01312 unsigned short BaseCfgCRC16;
01313
01315 wchar_t moduleType[SHORT_STRING_LEN];
01316
01318 int moduleHeight;
01320 int moduleThicknessFront;
01322 int moduleThicknessBack;
01323
01325 wchar_t moduleRefCard[SHORT_STRING_LEN];
01327 unsigned char DRAMManufID;
01329 int DRAMManufBank;
01331 wchar_t DRAMManuf[SHORT_STRING_LEN];
01332
01333
01335 int numDRAMRows;
01337 int numRegisters;
01338
01340 bool heatSpreaderSolution;
01341
01343 unsigned char regManufID;
01345 int regManufBank;
01347 wchar_t regManuf[SHORT_STRING_LEN];
01348
01350 int regRev;
01351
01353 wchar_t CSDriveStrength[SHORT_STRING_LEN];
01355 wchar_t cmdAddrDriveStrength[SHORT_STRING_LEN];
01357 wchar_t ODTDriveStrength[SHORT_STRING_LEN];
01359 wchar_t CKEDriveStrength[SHORT_STRING_LEN];
01360
01362 wchar_t Y0Y2DriveStrength[SHORT_STRING_LEN];
01364 wchar_t Y1Y3DriveStrength[SHORT_STRING_LEN];
01365
01367 int databufferRev;
01368
01370 wchar_t MDQDriveStrength1866[VSHORT_STRING_LEN];
01372 wchar_t MDQReadTermStrength1866[VSHORT_STRING_LEN];
01374 wchar_t DRAMDriveStrength1866[VSHORT_STRING_LEN];
01376 wchar_t ODTRttWR1866[VSHORT_STRING_LEN];
01378 wchar_t ODTRttNom1866[VSHORT_STRING_LEN];
01380 wchar_t ODTRttPARK1866_R0R1[VSHORT_STRING_LEN];
01382 wchar_t ODTRttPARK1866_R2R3[VSHORT_STRING_LEN];
01383
01385 wchar_t MDQDriveStrength2400[VSHORT_STRING_LEN];
01387 wchar_t MDQReadTermStrength2400[VSHORT_STRING_LEN];
01389 wchar_t DRAMDriveStrength2400[VSHORT_STRING_LEN];
01391 wchar_t ODTRttWR2400[VSHORT_STRING_LEN];
01393 wchar_t ODTRttNom2400[VSHORT_STRING_LEN];
01395 wchar_t ODTRttPARK2400_R0R1[VSHORT_STRING_LEN];
01397 wchar_t ODTRttPARK2400_R2R3[VSHORT_STRING_LEN];
01398
01400 wchar_t MDQDriveStrength3200[VSHORT_STRING_LEN];
01402 wchar_t MDQReadTermStrength3200[VSHORT_STRING_LEN];
01404 wchar_t DRAMDriveStrength3200[VSHORT_STRING_LEN];
01406 wchar_t ODTRttWR3200[VSHORT_STRING_LEN];
01408 wchar_t ODTRttNom3200[VSHORT_STRING_LEN];
01410 wchar_t ODTRttPARK3200_R0R1[VSHORT_STRING_LEN];
01412 wchar_t ODTRttPARK3200_R2R3[VSHORT_STRING_LEN];
01413
01415 unsigned short ModuleCRC16;
01416
01418 bool XMPSupported;
01419
01421 struct XMPInfo {
01423 int revision;
01424
01426 struct XMPProfile {
01428 bool enabled;
01429
01431 int dimmsPerChannel;
01432
01434 wchar_t moduleVdd[SHORT_STRING_LEN];
01436 float clkspeed;
01437
01439 wchar_t CASSupported[SHORT_STRING_LEN];
01441 float tCK;
01443 float tAA;
01445 float tRCD;
01447 float tRP;
01449 float tRAS;
01451 float tRC;
01453 float tRFC1;
01455 float tRFC2;
01457 float tRFC4;
01459 float tFAW;
01461 float tRRD_S;
01463 float tRRD_L;
01464
01465 } profile[2];
01466 } XMP;
01467 } DDR4SDRAM;
01469 struct DDR5SDRAMINFO {
01471 float tCKmax;
01473 float tWR;
01475 float tRFC2;
01477 float tRFC4;
01478
01480 float tRFC1_dlr;
01482 float tRFC2_dlr;
01484 float tRFCsb_dlr;
01485
01486
01487 union {
01488 struct {
01489 unsigned int baseModuleType : 4;
01490 unsigned int hybridMedia : 3;
01491 unsigned int hybrid : 1;
01492 } bits;
01493 unsigned char raw;
01494 } keyByteModuleType;
01495
01497 wchar_t moduleType[SHORT_STRING_LEN];
01498
01499 union {
01500 struct {
01501 unsigned int densityPerDie : 5;
01502 unsigned int diePerPackage : 3;
01503 } bits;
01504 unsigned char raw;
01505 } FirstSDRAMDensityPackage;
01506
01507 union {
01508 struct {
01509 unsigned int rowAddrBits : 5;
01510 unsigned int colAddrBits : 3;
01511 } bits;
01512 unsigned char raw;
01513 } FirstSDRAMAddressing;
01514
01515 union {
01516 struct {
01517 unsigned int reserved : 5;
01518 unsigned int IOWidth : 3;
01519 } bits;
01520 unsigned char raw;
01521 } FirstSDRAMIOWidth;
01522
01523 union {
01524 struct {
01525 unsigned int banksPerGroup : 3;
01526 unsigned int reserved : 2;
01527 unsigned int bankGroups : 3;
01528 } bits;
01529 unsigned char raw;
01530 } FirstSDRAMBankGroups;
01531
01532 union {
01533 struct {
01534 unsigned int densityPerDie : 5;
01535 unsigned int diePerPackage : 3;
01536 } bits;
01537 unsigned char raw;
01538 } SecondSDRAMDensityPackage;
01539
01540 union {
01541 struct {
01542 unsigned int rowAddrBits : 5;
01543 unsigned int colAddrBits : 3;
01544 } bits;
01545 unsigned char raw;
01546 } SecondSDRAMAddressing;
01547
01548 union {
01549 struct {
01550 unsigned int reserved : 5;
01551 unsigned int IOWidth : 3;
01552 } bits;
01553 unsigned char raw;
01554 } SecondSDRAMIOWidth;
01555
01556 union {
01557 struct {
01558 unsigned int banksPerGroup : 3;
01559 unsigned int reserved : 2;
01560 unsigned int bankGroups : 3;
01561 } bits;
01562 unsigned char raw;
01563 } SecondSDRAMBankGroups;
01564
01565 union {
01566 struct {
01567 unsigned int mPPRhPPRAbort : 1;
01568 unsigned int MBISTmPPR : 1;
01569 unsigned int reserved32 : 2;
01570 unsigned int BL32 : 1;
01571 unsigned int sPPRUndoLock : 1;
01572 unsigned int reserved6 : 1;
01573 unsigned int sPPRGranularity : 1;
01574 } bits;
01575 unsigned char raw;
01576 } BL32PostPackageRepair;
01577
01578 union {
01579 struct {
01580 unsigned int DCATypesSupported : 2;
01581 unsigned int reserved32 : 2;
01582 unsigned int PASR : 1;
01583 unsigned int reserved75 : 3;
01584 } bits;
01585 unsigned char raw;
01586 } DutyCycleAdjusterPartialArraySelfRefresh;
01587
01588 union {
01589 struct {
01590 unsigned int BoundedFault : 1;
01591 unsigned int x4RMWECSWritebackSuppressionMRSelector : 1;
01592 unsigned int x4RMWECSWritebackSuppression : 1;
01593 unsigned int reserved73 : 5;
01594 } bits;
01595 unsigned char raw;
01596 } FaultHandling;
01597
01598 union {
01599 struct {
01600 unsigned int endurant : 2;
01601 unsigned int operable : 2;
01602 unsigned int nominal : 4;
01603 } bits;
01604 unsigned char raw;
01605 } NominalVoltageVDD;
01606
01607 union {
01608 struct {
01609 unsigned int endurant : 2;
01610 unsigned int operable : 2;
01611 unsigned int nominal : 4;
01612 } bits;
01613 unsigned char raw;
01614 } NominalVoltageVDDQ;
01615
01616 union {
01617 struct {
01618 unsigned int endurant : 2;
01619 unsigned int operable : 2;
01620 unsigned int nominal : 4;
01621 } bits;
01622 unsigned char raw;
01623 } NominalVoltageVPP;
01624
01625 union {
01626 struct {
01627 unsigned int RFMRequired : 1;
01628 unsigned int RAAIMT : 4;
01629 unsigned int RAAMMT : 3;
01630 unsigned int reserved : 4;
01631 unsigned int ARFMLevel : 2;
01632 unsigned int RFMRAACounterDecrementPerREFcommand : 2;
01633 } bits;
01634 unsigned char raw[2];
01635 } FirstSDRAMRefreshManagement;
01636
01637 union {
01638 struct {
01639 unsigned int RFMRequired : 1;
01640 unsigned int RAAIMT : 4;
01641 unsigned int RAAMMT : 3;
01642 unsigned int reserved : 4;
01643 unsigned int ARFMLevel : 2;
01644 unsigned int RFMRAACounterDecrementPerREFcommand : 2;
01645 } bits;
01646 unsigned char raw[2];
01647 } SecondSDRAMRefreshManagement;
01648
01649 union ARFM {
01650 struct {
01651 unsigned int ARFMLevelSupported : 1;
01652 unsigned int RAAIMT : 4;
01653 unsigned int RAAMMT : 3;
01654 unsigned int reserved : 4;
01655 unsigned int ARFMLevel : 2;
01656 unsigned int RFMRAACounterDecrementPerREFcommand : 2;
01657 } bits;
01658 unsigned char raw[2];
01659 } FirstSDRAMAdaptiveRefreshManagementLevelA;
01660
01661 union ARFM FirstSDRAMAdaptiveRefreshManagementLevelB;
01662 union ARFM FirstSDRAMAdaptiveRefreshManagementLevelC;
01663
01664 union ARFM SecondSDRAMAdaptiveRefreshManagementLevelA;
01665 union ARFM SecondSDRAMAdaptiveRefreshManagementLevelB;
01666 union ARFM SecondSDRAMAdaptiveRefreshManagementLevelC;
01667
01669 int moduleSPDRev;
01670
01671 struct {
01672 DEVINFO SPD;
01673 DEVINFO PMIC0;
01674 DEVINFO PMIC1;
01675 DEVINFO PMIC2;
01676 DEVINFO ThermalSensors;
01677 } moduleDeviceInfo;
01678
01680 int moduleHeight;
01682 int moduleThicknessFront;
01684 int moduleThicknessBack;
01685
01686 union {
01687 struct {
01688 unsigned int ReferenceDesign : 5;
01689 unsigned int DesignRevision : 3;
01690 } bits;
01691 unsigned char raw;
01692 } ReferenceRawCardUsed;
01694 wchar_t moduleRefCard[SHORT_STRING_LEN];
01695
01697 unsigned char DRAMManufID;
01699 int DRAMManufBank;
01701 wchar_t DRAMManuf[SHORT_STRING_LEN];
01702
01704 int DRAMStepping;
01705
01706 union {
01707 struct {
01708 unsigned int NumDRAMRows : 2;
01709 unsigned int HeatSpreader : 1;
01710 unsigned int reserved : 1;
01711 unsigned int OperatingTemperatureRange : 4;
01712 } bits;
01713 unsigned char raw;
01714 } DIMMAttributes;
01715
01716 union {
01717 struct {
01718 unsigned int reserved20 : 3;
01719 unsigned int NumPackageRanksPerChannel : 3;
01720 unsigned int RankMix : 1;
01721 unsigned int reserved7 : 1;
01722 } bits;
01723 unsigned char raw;
01724 } ModuleOrganization;
01725
01726 union {
01727 struct {
01728 unsigned int PrimaryBusWidthPerChannel : 3;
01729 unsigned int BusWidthExtensionPerChannel : 2;
01730 unsigned int NumChannelsPerDIMM : 2;
01731 unsigned int reserved : 1;
01732 } bits;
01733 unsigned char raw;
01734 } MemoryChannelBusWidth;
01735
01736 union {
01737 struct {
01738 DEVINFO RegisteringClockDriver;
01739 DEVINFO DataBuffers;
01740
01741 union {
01742 struct {
01743 unsigned int QACK_tQACK_c : 1;
01744 unsigned int QBCK_tQBCK_c : 1;
01745 unsigned int QCCK_tQCCK_c : 1;
01746 unsigned int QDCK_tQDCK_c : 1;
01747 unsigned int reserved4 : 1;
01748 unsigned int BCK_tBCK_c : 1;
01749 unsigned int reserved76 : 2;
01750 } bits;
01751 unsigned char raw;
01752 } RCDRW08ClockDriverEnable;
01753
01754 union {
01755 struct {
01756 unsigned int QACAOutputs : 1;
01757 unsigned int QBCAOutputs : 1;
01758 unsigned int DCS1_nInputBufferQxCS1_nOutputs : 1;
01759 unsigned int BCS_nBCOM20BRST_nOutputs : 1;
01760 unsigned int QBACA13OutputDriver : 1;
01761 unsigned int QACS10_nOutput : 1;
01762 unsigned int QBCS10_nOutput : 1;
01763 unsigned int reserved : 1;
01764 } bits;
01765 unsigned char raw;
01766 } RCDRW09OutputAddressControlEnable;
01767
01768 union {
01769 struct {
01770 unsigned int QACK_tQACK_c : 2;
01771 unsigned int QBCK_tQBCK_c : 2;
01772 unsigned int QCCK_tQCCK_c : 2;
01773 unsigned int QDCK_tQDCK_c : 2;
01774 } bits;
01775 unsigned char raw;
01776 } RCDRW0AQCKDriverCharacteristics;
01777
01778 union {
01779 struct {
01780 unsigned int reserved : 8;
01781 } bits;
01782 unsigned char raw;
01783 } RCDRW0B;
01784
01785 union {
01786 struct {
01787 unsigned int DriverStrengthAddressCommandABOutputs : 2;
01788 unsigned int reserved32 : 2;
01789 unsigned int DriverStrengthQxCS0_nQxCS1_nQCCK_tQCCK_c : 2;
01790 unsigned int reserved76 : 2;
01791 } bits;
01792 unsigned char raw;
01793 } RCDRW0CQxCAQxCS_nDriverCharacteristics;
01794
01795 union {
01796 struct {
01797 unsigned int DriverStrengthBCOM20BCS_n : 2;
01798 unsigned int reserved2 : 1;
01799 unsigned int DriverStrengthBCK_tBCK_c : 2;
01800 unsigned int reserved75 : 3;
01801 } bits;
01802 unsigned char raw;
01803 } RCDRW0DDataBufferInterfaceDriverCharacteristics;
01804
01805 union {
01806 struct {
01807 unsigned int QCKDA_tQCKDA_cDifferentialSlewRate : 2;
01808 unsigned int QBACA130SingleEndedSlewRate : 2;
01809 unsigned int QBACS10_nSingleEndedSlewRate : 2;
01810 unsigned int reserved76 : 2;
01811 } bits;
01812 unsigned char raw;
01813 } RCDRW0EQCKQCAQCOutputSlewRate;
01814
01815 union {
01816 struct {
01817 unsigned int BCOM20BCS_nSingleEndedSlewRate : 2;
01818 unsigned int BCK_tBCK_cDifferentialSlewRate : 2;
01819 unsigned int reserved74 : 4;
01820 } bits;
01821 unsigned char raw;
01822 } RCDRW0FBCKBCOMBCSOutputSlewRate;
01823
01824 union {
01825 struct {
01826 unsigned int DQSRTTParkTermination : 3;
01827 unsigned int reserved73 : 5;
01828 } bits;
01829 unsigned char raw;
01830 } DBRW86DQSRTTParkTermination;
01831
01832 } RDIMM;
01833 struct {
01834 DEVINFO DifferentialMemoryBuffer;
01835 } DDIMM;
01836 struct {
01837 DEVINFO RegisteringClockDriver;
01838 DEVINFO DataBuffers;
01839 } NVDIMMN;
01840 struct {
01841 DEVINFO RegisteringClockDriver;
01842 DEVINFO DataBuffers;
01843 } NVDIMMP;
01844 } baseModule;
01845
01847 unsigned short BaseCfgCRC16;
01848
01850 bool XMPSupported;
01851
01853 struct {
01855 unsigned char version;
01856
01858 unsigned char PMICVendorID[2];
01859
01861 int numPMIC;
01862
01864 union {
01865 struct {
01866 unsigned int OCCapable : 1;
01867 unsigned int OCEnable : 1;
01868 unsigned int VoltageDefaultStepSize : 1;
01869 unsigned int OCGlobalResetEnable : 1;
01870 unsigned int reserved75 : 3;
01871 } bits;
01872 unsigned char raw;
01873 } PMICCapabilities;
01874
01876 union {
01877 struct {
01878 unsigned int SelfCertified : 1;
01879 unsigned int PMICIntelAVLValidated : 1;
01880 unsigned int reserved72 : 6;
01881 } bits;
01882 unsigned char raw;
01883 } ValidationCertification;
01884
01886 unsigned char revision;
01887
01889 unsigned short BaseCfgCRC16;
01890
01892 struct {
01894 bool enabled;
01895
01897 int certified;
01898
01900 int dimmsPerChannel;
01901
01903 char name[SHORT_STRING_LEN];
01904
01906 wchar_t moduleVPP[SHORT_STRING_LEN];
01907
01909 wchar_t moduleVDD[SHORT_STRING_LEN];
01910
01912 wchar_t moduleVDDQ[SHORT_STRING_LEN];
01913
01915 wchar_t memCtrlVoltage[SHORT_STRING_LEN];
01916
01918 float clkspeed;
01919
01921 wchar_t CASSupported[SHORT_STRING_LEN];
01923 float tCK;
01925 float tAA;
01927 float tRCD;
01929 float tRP;
01931 float tRAS;
01933 float tRC;
01935 float tWR;
01937 float tRFC1;
01939 float tRFC2;
01941 float tRFCsb;
01943 float tCCD_L;
01945 int tCCD_L_nCK;
01947 float tCCD_L_WR;
01949 int tCCD_L_WR_nCK;
01951 float tCCD_L_WR2;
01953 int tCCD_L_WR2_nCK;
01955 float tCCD_L_WTR;
01957 int tCCD_L_WTR_nCK;
01959 float tCCD_S_WTR;
01961 int tCCD_S_WTR_nCK;
01963 float tRRD_L;
01965 int tRRD_L_nCK;
01967 float tRTP;
01969 int tRTP_nCK;
01971 float tFAW;
01973 int tFAW_nCK;
01974
01976 union {
01977 struct {
01978 unsigned int RealTimeMemoryFrequencyOverclocking : 1;
01979 unsigned int IntelDynamicMemoryBoost : 1;
01980 unsigned int reserved72 : 6;
01981 } bits;
01982 unsigned char raw;
01983 } AdvancedMemoryOverclockingFeatures;
01984
01986 int cmdRateMode;
01988 unsigned char VendorPersonalityByte;
01990 unsigned short BaseCfgCRC16;
01991
01992 } profile[MAX_XMP3_PROFILES];
01993 } XMP;
01994 } DDR5SDRAM;
01995 } specific;
01996
01997 } SPDINFO;
01998
01999
02005 typedef struct _MEMMODULEINFO
02006 {
02008 int iNumMemSticks;
02010 SPDINFO memSPDInfo[MAX_MEMORY_SLOTS];
02011 } MEMMODULEINFO;
02012
02013 typedef struct _TSODINFO
02014 {
02016 int channel;
02018 int slot;
02020 float temperature;
02021 union {
02022 struct {
02024 WORD wCap;
02026 WORD wCfg;
02028 WORD wHiLim;
02030 WORD wLoLim;
02032 WORD wCritLim;
02034 WORD wAmbTemp;
02036 WORD wManufID;
02038 WORD wDevRev;
02040 WORD wVendor[8];
02041 } DDR4;
02042 struct {
02044 BYTE bTSConfig;
02046 BYTE bIntConfig;
02048 WORD wHiLim;
02050 WORD wLoLim;
02052 WORD wCritHiLim;
02054 WORD wCritLoLim;
02056 WORD wCurTemp;
02058 BYTE bTSStatus;
02060 BYTE bError;
02061 } DDR5;
02062 } raw;
02063 } TSODINFO;
02064
02065 typedef struct _MEMTEMPINFO
02066 {
02068 int iNumMemSticks;
02070 TSODINFO memTempInfo[MAX_TSOD_SLOTS];
02071 } MEMTEMPINFO;
02072
02078 SYSINFO_API BOOL SysInfoDll_GetMemoryInfo( MEMORYSTATUSEX *pMemInfoEx );
02079
02085 SYSINFO_API int SysInfoDll_GetMemSPDInfo( MEMMODULEINFO *pMemModuleInfo );
02086
02092 SYSINFO_API int SysInfoDll_GetMemTemps( MEMTEMPINFO* pMemTempInfo );
02093
02095
02096
02097
02098
02099
02100
02104
02106 #define NUMMONITORS 8
02107 #define MAX_MONITOR_INFO_LEN 256
02108
02109 #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
02110
02111 #define SI_MAX_MONITORS NUMMONITORS
02112 #define MAX_STRINGLEN 128
02113 #define MAX_DEV_MODES 2000
02114 #define MAX_VIDEO_INFO_LEN 128
02115
02116 #define MAX_EDID_STR_LEN 32
02117
02118
02119 typedef struct _MONITOR_ATTRIBUTES
02120 {
02122 int iBPP;
02124 int iX;
02126 int iY;
02127
02128 int iDPI;
02130 float flRefreshRate;
02132 wchar_t szMonitorNumber[MAX_MONITOR_INFO_LEN];
02134 wchar_t szDisplay[MAX_MONITOR_INFO_LEN];
02135
02136
02137 char EDID_ModelName[MAX_EDID_STR_LEN];
02138 char EDID_SerialNum_Str[MAX_EDID_STR_LEN];
02139 int EDID_SerialNum_Int;
02140
02141 } MONITOR_ATTRIBUTES;
02142
02143
02144
02145
02146 typedef struct _MULTIMONITOR_DYN
02147 {
02148 int iNumberMonitorsInit;
02149 int iNumberMonitors;
02150 HMONITOR hMon[NUMMONITORS];
02151 MONITORINFOEX mi[NUMMONITORS];
02152 MONITOR_ATTRIBUTES ma[NUMMONITORS];
02153 DISPLAY_DEVICE dd[NUMMONITORS];
02154 } MULTIMONITOR_DYN;
02155
02156 typedef struct _SYSINFO_DISPLAY_DEVICE
02157 {
02158 bool bDisplay;
02159 wchar_t szDisplayDevice[MAX_VIDEO_INFO_LEN];
02160 wchar_t szDeviceDescription[MAX_VIDEO_INFO_LEN];
02161 wchar_t szDeviceID[MAX_VIDEO_INFO_LEN];
02162 wchar_t szDeviceKey[MAX_VIDEO_INFO_LEN];
02163
02164 bool bDriverInstalled;
02165 wchar_t szDeviceDescription2[MAX_VIDEO_INFO_LEN];
02166 wchar_t szChipType[MAX_VIDEO_INFO_LEN];
02167 wchar_t szDACType[MAX_VIDEO_INFO_LEN];
02168 wchar_t szBIOSString[MAX_VIDEO_INFO_LEN];
02169 wchar_t szInstalledDisplayDrivers[MAX_VIDEO_INFO_LEN];
02170 __int64 dwMemorySize;
02171
02172 wchar_t szDriverProviderName[MAX_VIDEO_INFO_LEN];
02173 wchar_t szDriverVersion[MAX_VIDEO_INFO_LEN];
02174 wchar_t szDriverDate[MAX_VIDEO_INFO_LEN];
02175 wchar_t szPNPID[MAX_VIDEO_INFO_LEN];
02176
02177 int iNumMonitors;
02179 int iMonitorIndex[SI_MAX_MONITORS];
02180
02181
02182 unsigned long ulBusType;
02183 unsigned long ulBusID;
02184 unsigned long ulBusSlotID;
02185 bool SLIMode;
02186
02187
02188 int iComputeUnits;
02189
02190 int iSMUnits;
02191
02192 int iRevisionID;
02193 int iCoreClock;
02194 int iMemoryClock;
02195 bool bUsingAMDEyefinity;
02196 bool bIsPrimaryDevice;
02197 int iIntegrated;
02198
02199 int iPCIeWidth;
02200 wchar_t szAMDDriverVersion[MAX_VIDEO_INFO_LEN];
02201 bool isMobileCard;
02202
02203 } SYSINFO_DISPLAY_DEVICE;
02204
02205 typedef struct _DISPLAY_DEVICES
02206 {
02208 int iNumDD;
02210 SYSINFO_DISPLAY_DEVICE dd[MAX_DISPLAY_DEVICES];
02211
02212 int AMDPowerXpressDevice;
02213
02214 bool gSyncEnabled;
02215
02216
02217 } DISPLAY_DEVICES;
02218
02219
02228 SYSINFO_API BOOL SysInfoDll_GetGraphicsInfo( MULTIMONITOR_DYN *MM ,
02229 DISPLAY_DEVICES *DD ,
02230 LPWSTR szSummary ,
02231 int iLen);
02232
02240 SYSINFO_API bool SysInfoDll_CheckWhichCardUsed(wchar_t *appName, bool* usingIntegrated, char lastPrograms[50][256]);
02241
02248 SYSINFO_API wchar_t * SysInfoDll_GetGraphicsSummaryLine(wchar_t * szSummary, int iLen);
02249
02251
02252
02253
02254
02259
02260 #define MAXUSBHOSTCONTROLLERS 10
02261
02262 #define MAXUSBDEVICES 14 //Per host controller
02263
02264 #define USBSTRINGLEN 100 //Reduced the maximum string length - SI101017
02265
02266
02267 typedef struct _USB_HOST_CONTROLLER
02268 {
02270 int iNumDev;
02272 wchar_t szDriverKeyName[USBSTRINGLEN];
02274 wchar_t szHostController[USBSTRINGLEN];
02276 wchar_t szDevice[MAXUSBDEVICES][USBSTRINGLEN];
02277 } USB_HOST_CONTROLLER;
02278
02279 typedef struct _USB_HOST_CONTROLLERS
02280 {
02282 int iNumHostControllers;
02283 USB_HOST_CONTROLLER USBHostController[MAXUSBHOSTCONTROLLERS];
02284 } USB_HOST_CONTROLLERS;
02285
02291 SYSINFO_API BOOL SysInfoDll_GetUSBInfo(USB_HOST_CONTROLLERS *USBHostControllers);
02292
02294
02295
02296
02297 #define MAXBIOMETRICS 20
02298 #define MAXBIOLEN 256
02299
02300
02301 typedef struct _SYSINFO_BIOMETRIC
02302 {
02303 wchar_t Description[MAXBIOLEN];
02304 wchar_t Manufacturer[MAXBIOLEN];
02305 wchar_t Model[MAXBIOLEN];
02306 } SYSINFO_BIOMETRIC;
02307
02308 typedef struct _SYSINFO_BIOMETRICS
02309 {
02310 int iNumEntries;
02311 SYSINFO_BIOMETRIC *Biometrics[MAXBIOMETRICS];
02312 } SYSINFO_BIOMETRICS;
02313
02319 SYSINFO_API BOOL SysInfoDll_GetBiometricsInfo(SYSINFO_BIOMETRICS *Biometrics);
02320
02322
02323
02324
02328
02329 #define WMISI_VSHORTSTRING 25
02330 #define WMISI_SHORTSTRING 50
02331 #define WMISI_INFO_VSHORTSTRING 100
02332 #define WMISI_INFO_SHORTSTRING 200
02333
02334 #define MAXBIOSMODULES 1
02335 #define MAXBIOSCHARACTERISTICS 100
02336
02337 #define MAXPROCSOCKETS 8
02338
02339 #define MAXNUMCDDVD 20
02340
02341 #define WMISI_MAXPAGEFILES 2
02342 #define MAX_FILENAME 512
02343
02344 #define SYSINFO_MAXNUMDISKS 200
02345 #define MAXLOGICALDISKS 26
02346 #define MAXRAMMODULES 64
02347 #define MAXCOMPUTERSYSTEMS 1
02348 #define MAXBASEBOARDS 1
02349 #define MAXSERIALPORTS 64
02350 #define MAXSPARALLELPORTS 10
02351 #define MAXNETWORKADAPTERS 20
02352 #define MAXPORTCONNECTORS 50
02353 #define MAXSYSTEMSLOTS 20
02354
02355
02356
02357 typedef struct _BIOSINFO
02358 {
02359 wchar_t szBIOS_Manufacturer[MAXBIOSMODULES][WMISI_INFO_SHORTSTRING];
02360 wchar_t szBIOS_ReleaseDate[MAXBIOSMODULES][WMISI_INFO_SHORTSTRING];
02361 wchar_t szBIOS_BIOSVersion[MAXBIOSMODULES][WMISI_INFO_SHORTSTRING];
02362 wchar_t szBIOS_SerialNumber[MAXBIOSMODULES][WMISI_INFO_SHORTSTRING];
02363 } BIOSINFO;
02364
02365 typedef struct _VIRTUALMEMORYINFO
02366 {
02368 int NumberPageFiles;
02370 wchar_t PageFileName[WMISI_MAXPAGEFILES][MAX_FILENAME];
02371 DWORD dwPageFileAllocatedBaseSize[WMISI_MAXPAGEFILES];
02372 } VIRTUALMEMORYINFO;
02373
02374 typedef struct _OPTICALDRIVEINFO
02375 {
02376 wchar_t OpticalDriveSummary[LONG_STRING_LEN];
02377 wchar_t OpticalDriveModel[MAXNUMCDDVD][WMISI_SHORTSTRING];
02378 int OpticalDrivesNum;
02379 } OPTICALDRIVEINFO;
02380
02381 typedef struct _PHYSDISKINFO
02382 {
02383 DWORD dwDisk_Index;
02384 UINT64 Size;
02385 bool bFixed;
02386 bool bSSD;
02387 bool bHotPlug;
02388 wchar_t Name[WMISI_SHORTSTRING];
02389 wchar_t szDisk_Description[WMISI_SHORTSTRING];
02390 wchar_t szSummary[WMISI_INFO_SHORTSTRING];
02391 wchar_t szSerial[WMISI_INFO_SHORTSTRING];
02392 } PHYSDISKINFO;
02393
02394 typedef struct _PHYSDISKINFOSUMMARY
02395 {
02396 UINT64 Size;
02397 int iNum;
02398 bool bSSD;
02399
02400 } PHYSDISKINFOSUMMARY;
02401
02402 typedef struct _PHYSICALDRIVEINFO
02403 {
02404 int iNumPhysDisks;
02405 wchar_t tszHDDSummary[LONG_STRING_LEN];
02406 PHYSDISKINFO PhysDisk[SYSINFO_MAXNUMDISKS];
02407 } PHYSICALDRIVEINFO;
02408
02409 typedef struct _DISKVOLUMEINFO
02410 {
02411 int iNumLogicalDisks;
02412 wchar_t szLogicalDisk_VolumeName[MAXLOGICALDISKS][WMISI_SHORTSTRING];
02413 wchar_t szLogicalDisk_VolumeGUID[MAXLOGICALDISKS][WMISI_SHORTSTRING];
02414 wchar_t szLogicalDisk_Name[MAXLOGICALDISKS][WMISI_SHORTSTRING];
02415 wchar_t szLogicalDisk_Description[MAXLOGICALDISKS][WMISI_SHORTSTRING];
02416 wchar_t szLogicalDisk_FileSystem[MAXLOGICALDISKS][WMISI_SHORTSTRING];
02417 wchar_t szLogicalDisk_ProductName[MAXLOGICALDISKS][WMISI_SHORTSTRING];
02418 wchar_t szLogicalDisk_VolumeSummary[MAXLOGICALDISKS][LONG_STRING_LEN];
02419 wchar_t szLogicalDisk_Serial[MAXLOGICALDISKS][LONG_STRING_LEN];
02420 int iLogicalDisk_DriveType[MAXLOGICALDISKS];
02421 ULONGLONG ullLogicalDisk_Totalbytes[MAXLOGICALDISKS];
02422 ULONGLONG ullLogicalDisk_Freebytes[MAXLOGICALDISKS];
02423 } DISKVOLUMEINFO;
02424
02425
02426
02427
02428
02429
02430
02431
02432
02433
02434
02435
02436
02437
02438
02439
02440
02441
02442
02443
02444
02445
02446
02447
02448
02449
02450
02451 enum RAMTYPE
02452 {
02453 RAMTYPE_UNDEFINED = 0,
02454 RAMTYPE_OTHER,
02455 RAMTYPE_UNKNOWN,
02456 RAMTYPE_DRAM,
02457 RAMTYPE_EDRAM,
02458 RAMTYPE_VRAM,
02459 RAMTYPE_SRAM,
02460 RAMTYPE_RAM,
02461 RAMTYPE_ROM,
02462 RAMTYPE_FLASH,
02463 RAMTYPE_EEPROM,
02464 RAMTYPE_FEPROM,
02465 RAMTYPE_EPROM,
02466 RAMTYPE_CDRAM,
02467 RAMTYPE_3DRAM,
02468 RAMTYPE_SDRAM,
02469 RAMTYPE_SGRAM,
02470 RAMTYPE_RDRAM,
02471 RAMTYPE_DDR,
02472 RAMTYPE_DDR2,
02473 RAMTYPE_DDR2_FB_DIMM,
02474 RAMTYPE_DDR3 = 0x18,
02475 RAMTYPE_FBD2,
02476 RAMTYPE_DDR4,
02477 RAMTYPE_LPDDR,
02478 RAMTYPE_LPDDR2,
02479 RAMTYPE_LPDDR3,
02480 RAMTYPE_LPDDR4,
02481 RAMTYPE_LNVD,
02482 RAMTYPE_HBM,
02483 RAMTYPE_HBM2,
02484 RAMTYPE_DDR5,
02485 RAMTYPE_LPDDR5,
02486 RAMTYPE_HBM3,
02487 RAMTYPE_TERMINATOR,
02488 };
02489
02490 typedef struct _RAMINFO_WMI
02491 {
02492 DWORD dwRAM_MemoryType[MAXRAMMODULES];
02493 ULONGLONG ullWMI_RAM_Capacity[MAXRAMMODULES];
02494 DWORD dwWMI_RAM_MemoryType[MAXRAMMODULES];
02495 } RAMINFO_WMI;
02496
02497 typedef struct _COMPUTERMODELINFO
02498 {
02499 wchar_t szComputer_Model[MAXCOMPUTERSYSTEMS][WMISI_INFO_SHORTSTRING];
02500 } COMPUTERMODELINFO;
02501
02502 typedef struct _BASEBOARDINFO
02503 {
02504 wchar_t szBaseBoard_Manufacturer[MAXBASEBOARDS][WMISI_INFO_SHORTSTRING];
02505 wchar_t szBaseBoard_Product[MAXBASEBOARDS][WMISI_INFO_SHORTSTRING];
02506 wchar_t szBaseBoard_SerialNumber[MAXBASEBOARDS][WMISI_INFO_SHORTSTRING];
02507 wchar_t szBaseBoard_Version[MAXBASEBOARDS][WMISI_INFO_SHORTSTRING];
02508 } BASEBOARDINFO;
02509
02510 typedef struct _SERIALPORTINFO
02511 {
02512 wchar_t szSerialPort_DeviceID[MAXSERIALPORTS][WMISI_VSHORTSTRING];
02513 wchar_t szSerialPort_Description[MAXSERIALPORTS][WMISI_VSHORTSTRING];
02514 wchar_t szSerialPort_ProviderType[MAXSERIALPORTS][WMISI_VSHORTSTRING];
02515 DWORD dwSerialPort_MaxBaudRate[MAXSERIALPORTS];
02516 bool WinPEstartAtZero;
02517 } SERIALPORTINFO;
02518
02519 typedef struct _PARALLELPORTINFO
02520 {
02521 wchar_t szParallelPort_Caption[MAXSPARALLELPORTS][WMISI_VSHORTSTRING];
02522 } PARALLELPORTINFO;
02523
02524 typedef struct _NETWORKADAPTERINFO
02525 {
02526 wchar_t szNetworkAdapter_PNPDeviceID[MAXNETWORKADAPTERS][WMISI_INFO_SHORTSTRING];
02527 wchar_t szNetworkAdapter_Description[MAXNETWORKADAPTERS][WMISI_INFO_SHORTSTRING];
02528 wchar_t szNetworkAdapter_Summary[MAXNETWORKADAPTERS][LONG_STRING_LEN];
02529 UINT64 ui64Speed[MAXNETWORKADAPTERS];
02530 wchar_t szNetworkAdapter_MACAddress[MAXNETWORKADAPTERS][SHORT_STRING_LEN];
02531 wchar_t szIPString_IPv4[MAXNETWORKADAPTERS][INET_ADDRSTRLEN];
02532 wchar_t szIPString_IPv6[MAXNETWORKADAPTERS][INET6_ADDRSTRLEN];
02533 } NETWORKADAPTERINFO;
02534
02536 #define Win32_PortConnector_PortType_PS2 2
02537 #define Win32_PortConnector_PortType_Keyboard 13
02538 #define Win32_PortConnector_PortType_Mouse 14
02539 #define Win32_PortConnector_PortType_USB 16
02540 #define Win32_PortConnector_PortType_Firewire 17
02541 #define Win32_PortConnector_PortType_Audio 29
02542 #define Win32_PortConnector_PortType_NUM 33
02543
02544
02545
02546 typedef struct _PORTCONNECTORINFO
02547 {
02548 DWORD dwPortConnector_PortType[MAXPORTCONNECTORS];
02549 wchar_t szPortConnector_PortType[MAXPORTCONNECTORS][WMISI_SHORTSTRING];
02550 wchar_t szPortConnector_ConnectorType[MAXPORTCONNECTORS][WMISI_SHORTSTRING];
02551 DWORD dwPortConnector_NumUSBPorts;
02552 DWORD dwPortConnector_NumFirewirePorts;
02553 } PORTCONNECTORINFO;
02554
02555 typedef struct _DISKPARTITIONINFO
02556 {
02558 int iNumDiskPartitions[SYSINFO_MAXNUMDISKS];
02559 } DISKPARTITIONINFO;
02560
02561 typedef struct _SYSINFO_WMI
02562 {
02563 BIOSINFO BIOSInfo;
02564 VIRTUALMEMORYINFO VirtualMemoryInfo;
02565 OPTICALDRIVEINFO OpticalDriveInfo;
02566 PHYSICALDRIVEINFO PhyscialDriveInfo;
02567 DISKVOLUMEINFO DiskVolumeInfo;
02568 RAMINFO_WMI RAMInfo;
02569 COMPUTERMODELINFO ComputerModelInfo;
02570 BASEBOARDINFO BaseBoardInfo;
02571 SERIALPORTINFO SerialPortInfo;
02572 PARALLELPORTINFO ParallelPortInfo;
02573 NETWORKADAPTERINFO NetworkAdapterInfo;
02574 PORTCONNECTORINFO PortConnectorInfo;
02575 DISKPARTITIONINFO DiskPartitionInfo;
02576
02577 } SYSINFO_WMI;
02578
02592 SYSINFO_API BOOL SysInfoDll_GetSystemInfo_WMI ( SYSINFO_WMI *SysInfo);
02593
02608 SYSINFO_API BOOL SysInfoDll_GetSystemInfo_WMI_async (SYSINFO_WMI *SysInfo_WMI);
02609
02610
02621 SYSINFO_API BOOL SysInfoDll_GetSystemInfo_WMI_async_complete (SYSINFO_WMI *SysInfo , int *iProgressPercent);
02622
02623
02634 int SysInfoDll_GetHDDetails(PHYSICALDRIVEINFO *PhyscialDriveInfo);
02635
02636
02647 int SysInfoDll_GetBaseBoardDetails(BASEBOARDINFO *BaseBoardInfo);
02648
02649
02658 SYSINFO_API wchar_t * SysInfoDll_GetHDDSummaryLine(SYSINFO_WMI *SysInfo_WMI, wchar_t * line, int iLen);
02659
02660
02662
02663
02664
02665
02670 #define MAXBURNERSTRLEN 60
02671 #define IMAPI2_MAX_FEATURES 70
02672
02673 typedef struct _IMAPI_INFO_DRIVE
02674 {
02675 TCHAR szVolume[MAXBURNERSTRLEN];
02676 TCHAR szVendor[MAXBURNERSTRLEN];
02677 TCHAR szProduct[MAXBURNERSTRLEN];
02678 int iFeatures[IMAPI2_MAX_FEATURES];
02679 TCHAR szFeatureSummary[LONG_STRING_LEN];
02680 } IMAPI_INFO_DRIVE;
02681
02682 typedef struct _IMAPI_INFO
02683 {
02684 int iNumDrives;
02685 IMAPI_INFO_DRIVE Drive[MAXNUMCDDVD];
02686 } IMAPI_INFO;
02687
02694 HRESULT SysInfoDll_GetIMAPI2OpticalBurners(wchar_t szIMAPI2BurnersSummary[MAXBURNERSTRLEN], wchar_t szIMAPI2Burners[MAXNUMCDDVD][MAXBURNERSTRLEN], IMAPI_INFO *pIMAPI_Drives);
02696
02697
02698
02699
02703
02704 #define SMB_VSHORT_STRINGLEN 32
02705 #define SMB_STRINGLEN 64
02706
02707 typedef struct _PROCINFO
02708 {
02709 int iNumProcessors;
02710 wchar_t szSocketDesignation[MAXPROCSOCKETS][SMB_STRINGLEN];
02711 wchar_t szManufacturer[MAXPROCSOCKETS][SMB_STRINGLEN];
02712 wchar_t szVersion[MAXPROCSOCKETS][SMB_STRINGLEN];
02713 float fVoltage[MAXPROCSOCKETS];
02714 WORD wExternalClock[MAXPROCSOCKETS];
02715 WORD wCurrentSpeed[MAXPROCSOCKETS];
02716 wchar_t szSerialNumber[MAXPROCSOCKETS][SMB_STRINGLEN];
02717 wchar_t szAssetTag[MAXPROCSOCKETS][SMB_STRINGLEN];
02718 wchar_t szPartNumber[MAXPROCSOCKETS][SMB_STRINGLEN];
02719 DWORD dwCoreCount[MAXPROCSOCKETS];
02720 DWORD dwCoreEnabled[MAXPROCSOCKETS];
02721 DWORD dwThreadCount[MAXPROCSOCKETS];
02722 } SI_PROCINFO;
02723
02724 typedef struct _RAMINFO_SMBIOS
02725 {
02726 int iNumberRAMModules;
02727 ULONGLONG ullRAM_Capacity[MAXRAMMODULES];
02728 DWORD dwRAM_MemoryType[MAXRAMMODULES];
02729 DWORD dwRAM_PositionInRow[MAXRAMMODULES];
02730 wchar_t szRAM_MemoryLocation[MAXRAMMODULES][SMB_VSHORT_STRINGLEN];
02731 DWORD dwRAM_Speed[MAXRAMMODULES];
02732 wchar_t szRAM_Manufacturer[MAXRAMMODULES][SMB_VSHORT_STRINGLEN];
02733 wchar_t szRAM_PartNumber[MAXRAMMODULES][SMB_STRINGLEN];
02734 wchar_t szRAM_szSerialNumber[MAXRAMMODULES][SMB_STRINGLEN];
02735 wchar_t szRAM_RAMModuleHeading[MAXRAMMODULES][SMB_VSHORT_STRINGLEN];
02736 wchar_t szRAM_RAMModuleLine1[MAXRAMMODULES][WMISI_INFO_VSHORTSTRING];
02737 wchar_t szRAM_RAMModuleLine2[MAXRAMMODULES][WMISI_INFO_VSHORTSTRING];
02738 } RAMINFO_SMBIOS;
02739
02740 typedef struct _SYSINFO_SMBIOS
02741 {
02742 BIOSINFO BIOSInfo;
02743 SI_PROCINFO ProcInfo;
02744 RAMINFO_SMBIOS RAMInfo;
02745 } SYSINFO_SMBIOS;
02746
02747 typedef struct _RAMINFO_SMBIOS_EX
02748 {
02749 ULONGLONG ullRAM_Capacity;
02750 DWORD dwRAM_MemoryType;
02751 DWORD dwRAM_PositionInRow;
02752 wchar_t szRAM_MemoryLocation[SMB_VSHORT_STRINGLEN];
02753 DWORD dwRAM_Speed;
02754 wchar_t szRAM_Manufacturer[SMB_VSHORT_STRINGLEN];
02755 wchar_t szRAM_PartNumber[SMB_STRINGLEN];
02756 wchar_t szRAM_szSerialNumber[SMB_STRINGLEN];
02757 wchar_t szRAM_RAMModuleHeading[SMB_VSHORT_STRINGLEN];
02758 wchar_t szRAM_RAMModuleLine1[WMISI_INFO_VSHORTSTRING];
02759 wchar_t szRAM_RAMModuleLine2[WMISI_INFO_VSHORTSTRING];
02760 } RAMINFO_SMBIOS_EX;
02761
02762 #define MAXSYSINFOGENERIC 20
02763
02764 typedef struct _SYSINFO_GENERIC_ENTRIES
02765 {
02766 int iNumEntries;
02767 wchar_t szHeading[MAXSYSINFOGENERIC][SHORT_STRING_LEN];
02768 wchar_t szContent[MAXSYSINFOGENERIC][SHORT_STRING_LEN];
02769 } SYSINFO_GENERIC_ENTRIES;
02770
02771 enum SMB_STATUS {
02772 SMBERR_SUCCESS,
02773 SMBERR_MEMALLOC,
02774 SMBERR_INIT_DIRECTIO,
02775 SMBERR_NO_SMBIOS,
02776 SMBERR_ACCESS_DENIED,
02777 SMBERR_FAILURE,
02778 SMBERR_BUFFER_TOO_SMALL,
02779 };
02780
02781
02787 SYSINFO_API int SysInfoDll_GetSystemInfo_SMBIOS( SYSINFO_SMBIOS *SysInfo );
02788
02796 SYSINFO_API int SysInfoDll_GetSystemInfo_SMBIOS_RAMInfo(RAMINFO_SMBIOS_EX* RAMInfo, int* ioNumRAMInfo);
02797
02799
02800
02801
02802
02807
02810 #define PART_UNKNOWN 0x00
02811
02812 #define PART_DOS2_FAT 0x01
02813
02814 #define PART_DOS3_FAT 0x04
02815
02816 #define PART_EXTENDED 0x05
02817
02818 #define PART_DOS4_FAT 0x06
02819
02820 #define PART_NTFS 0x07
02821
02822 #define PART_EXFAT 0x0107
02823
02824 #define PART_DOS32 0x0B
02825
02826 #define PART_DOS32X 0x0C
02827
02828 #define PART_DOSX13 0x0E
02829
02830 #define PART_DOSX13X 0x0F
02831
02832 #define PART_DYNAMICDISK 0x42
02833
02834 #define PART_LINUX 0x83
02835
02836 #define PART_LINUX_LVM 0x8E
02837
02838 #define PART_HFS 0xAF
02839
02840 #define PART_APFS 0x01AF
02841
02842 #define PART_GPT 0xEE
02843
02844 #define PART_RAW 0xF0
02845
02847 #define MAX_PARTITIONS 256 //Arbitrary number
02848
02849 #define MAX_NUM_PHYSDISKS (SYSINFO_MAXNUMDISKS + 26 + 1) //SYSINFO_MAXNUMDISKS physcial disks, 26 volumes with no physcial disk + 1 raw dd image
02850 #define START_VOLUME_INDEX SYSINFO_MAXNUMDISKS
02851 #define START_IMAGE_INDEX (START_VOLUME_INDEX + 26)
02852
02853 #define DRIVE_NOT_MOUNTED (DWORD) -1
02854
02855
02856
02857 typedef struct
02858 {
02860 WORD wPhyDisk;
02862 WORD wCylinder;
02863 WORD wHead;
02864 WORD wSector;
02866 ULONGLONG ullNumSectors;
02867 WORD wType;
02869 ULONGLONG ullRelativeSector;
02870 ULONGLONG ullNTRelativeSector;
02872 DWORD dwBytesPerSector;
02874 DWORD dwBytesPerCluster;
02876 WORD wMFTRecordSz;
02879 TCHAR szDrive[3];
02881 WORD chType;
02882 } DRIVEPACKET;
02883
02886 #define UNKNOWN_DISK_TYPE 0
02887
02888 #define BASIC_DISK 1
02889
02890 #define DYNAMIC_DISK 2
02891
02892
02895 #define UNKNOWN_DISK_PARTITION 0
02896
02897 #define MBR_DISK 1
02898
02899 #define GPT_DISK 2
02900
02901 #define APM_DISK 3
02902
02903 typedef struct
02904 {
02906 WORD nDiskType;
02908 WORD nPartitionTableType;
02910 WORD nNumPartitions;
02912 bool bNFTSImage;
02914 bool bVolumeImage;
02916 bool bDDImage;
02917
02918 WORD sectorSize;
02920 DRIVEPACKET PartitionInfo[MAX_PARTITIONS];
02921 }PHYSDISK;
02922
02923
02929 SYSINFO_API DWORD SysInfoDll_GetPartitionInfo(PHYSDISK *PhyDisks[MAX_NUM_PHYSDISKS]);
02930
02931
02938 SYSINFO_API DWORD SysInfoDll_GetPartitionInfoAll(PHYSDISK *PhyDisks[MAX_NUM_PHYSDISKS]);
02939
02940
02954
02955 SYSINFO_API DWORD SysInfoDll_ScanPartitionTableBlock(HANDLE hDrive, DWORD wDrive, PHYSDISK *Disk);
02956
02957
02959
02960
02961
02962
02963
02984 SYSINFO_API BOOL SysInfoDll_GetAll( LPWSTR szComputerName ,
02985 LPWSTR szszOSName ,
02986 CPUINFO *pCPUinfo ,
02987 MEMORYSTATUSEX *pMemInfoEx ,
02988 MULTIMONITOR_DYN *MM ,
02989 DISPLAY_DEVICES *DD ,
02990 LPWSTR szGraphicsSummary ,
02991 SYSINFO_WMI *SysInfo_WMI ,
02992 SYSINFO_SMBIOS *SysInfo_SMBIOS ,
02993 USB_HOST_CONTROLLERS *USBHostControllers );
02994
02995
03019 SYSINFO_API BOOL SysInfoDll_GetAll_async( LPWSTR szComputerName ,
03020 LPWSTR szszOSName ,
03021 CPUINFO *pCPUinfo ,
03022 MEMORYSTATUSEX *pMemInfoEx ,
03023 MULTIMONITOR_DYN *MM ,
03024 DISPLAY_DEVICES *DD ,
03025 LPWSTR szGraphicsSummary ,
03026 SYSINFO_WMI *SysInfo_WMI ,
03027 SYSINFO_SMBIOS *SysInfo_SMBIOS ,
03028 USB_HOST_CONTROLLERS *USBHostControllers );
03029
03031
03032
03033
03034
03035
03039
03040 enum SYSINFO_FORMAT_TYPE {
03042 FORMAT_TEXT = 0,
03044 FORMAT_HTML,
03046 FORMAT_TEXT_CLIPBOARD,
03047 };
03048
03067 SYSINFO_API BOOL SysInfoDll_FormatAll( SYSINFO_FORMAT_TYPE Format ,
03068 LPWSTR szComputerName ,
03069 LPWSTR szOSName ,
03070 CPUINFO *pCPUinfo ,
03071 MEMORYSTATUSEX *pMemInfoEx ,
03072 MEMMODULEINFO *pMemModuleInfo,
03073 MULTIMONITOR_DYN *MM ,
03074 DISPLAY_DEVICES *DD ,
03075 LPWSTR szGraphicsSummary ,
03076 SYSINFO_WMI *SysInfo_WMI ,
03077 SYSINFO_SMBIOS *SysInfo_SMBIOS ,
03078 USB_HOST_CONTROLLERS *USBHostControllers ,
03079 LPWSTR pszRes ,
03080 int *iResLen );
03081
03101 SYSINFO_API BOOL SysInfoDll_FormatAll2( SYSINFO_FORMAT_TYPE Format ,
03102 LPWSTR szComputerName ,
03103 LPWSTR szOSName ,
03104 CPUINFO *pCPUinfo ,
03105 MEMORYSTATUSEX *pMemInfoEx ,
03106 MEMMODULEINFO *pMemModuleInfo,
03107 MULTIMONITOR_DYN *MM ,
03108 DISPLAY_DEVICES *DD ,
03109 LPWSTR szGraphicsSummary ,
03110 SYSINFO_WMI *SysInfo_WMI ,
03111 SYSINFO_SMBIOS *SysInfo_SMBIOS ,
03112 USB_HOST_CONTROLLERS *USBHostControllers ,
03113 IMAPI_INFO *pIMAPI_Drives,
03114 LPWSTR pszRes ,
03115 int *iResLen );
03116
03131 SYSINFO_API BOOL SysInfoDll_FormatSummary( SYSINFO_FORMAT_TYPE Format ,
03132 LPWSTR szComputerName ,
03133 LPWSTR szOSName ,
03134 CPUINFO *pCPUinfo ,
03135 MEMORYSTATUSEX *pMemInfoEx ,
03136 LPWSTR szGraphicsSummary ,
03137 SYSINFO_WMI *SysInfo_WMI ,
03138 SYSINFO_SMBIOS *SysInfo_SMBIOS ,
03139 LPWSTR pszRes ,
03140 int *iResLen );
03141
03157 SYSINFO_API BOOL SysInfoDll_FormatSummary2(SYSINFO_FORMAT_TYPE Format,
03158 wchar_t *szComputerName,
03159 wchar_t *szOSName,
03160 CPUINFO *pCPUinfo,
03161 MEMORYSTATUSEX *pMemInfoEx,
03162 wchar_t *szGraphicsSummary,
03163 SYSINFO_WMI *SysInfo_WMI,
03164 SYSINFO_SMBIOS *SysInfo_SMBIOS,
03165 IMAPI_INFO *pIMAPI_Drives,
03166 wchar_t *pszRes,
03167 int *iResLen);
03168
03179 SYSINFO_API BOOL SysInfoDll_FormatGeneral( SYSINFO_FORMAT_TYPE Format ,
03180 LPWSTR szComputerName ,
03181 SYSINFO_WMI *SysInfo_WMI ,
03182 SYSINFO_SMBIOS *SysInfo_SMBIOS ,
03183 LPWSTR pszRes ,
03184 int *iResLen );
03185
03186 SYSINFO_API BOOL SysInfoDll_FormatGeneralExtended( SYSINFO_FORMAT_TYPE Format,
03187 LPWSTR szComputerName,
03188 SYSINFO_WMI *SysInfo_WMI,
03189 SYSINFO_SMBIOS *SysInfo_SMBIOS,
03190 SYSINFO_GENERIC_ENTRIES *SysInfo_Generic,
03191 LPWSTR pszRes,
03192 int *iResLen);
03193
03201 SYSINFO_API BOOL SysInfoDll_FormatPCI( SYSINFO_FORMAT_TYPE Format ,
03202 LPWSTR pszRes ,
03203 int *iResLen );
03204
03213 SYSINFO_API BOOL SysInfoDll_FormatCPU( SYSINFO_FORMAT_TYPE Format ,
03214 CPUINFO *pCPUinfo ,
03215 LPWSTR pszRes ,
03216 int *iResLen );
03217
03229 SYSINFO_API BOOL SysInfoDll_FormatMemory( SYSINFO_FORMAT_TYPE Format ,
03230 MEMORYSTATUSEX *pMemInfoEx ,
03231 SYSINFO_WMI *SysInfo_WMI ,
03232 SYSINFO_SMBIOS *SysInfo_SMBIOS ,
03233 MEMMODULEINFO *pMemModuleInfo ,
03234 LPWSTR pszRes ,
03235 int *iResLen );
03236
03245 SYSINFO_API BOOL SysInfoDll_FormatMemSPD( SYSINFO_FORMAT_TYPE Format ,
03246 MEMMODULEINFO *pMemModuleInfo ,
03247 LPWSTR pszRes ,
03248 int *iResLen );
03249
03250
03259 SYSINFO_API BOOL SysInfoDll_FormatMemSPD_Short(SYSINFO_FORMAT_TYPE Format,
03260 MEMMODULEINFO *pMemModuleInfo,
03261 LPWSTR pszRes,
03262 int *iResLen);
03263
03274 SYSINFO_API BOOL SysInfoDll_FormatGraphics( SYSINFO_FORMAT_TYPE Format,
03275 MULTIMONITOR_DYN *MM,
03276 DISPLAY_DEVICES *DD,
03277 LPWSTR szGraphicsSummary,
03278 LPWSTR pszRes,
03279 int *iResLen);
03280
03289 SYSINFO_API BOOL SysInfoDll_FormatDiskVolumes ( SYSINFO_FORMAT_TYPE Format ,
03290 SYSINFO_WMI *SysInfo_WMI ,
03291 LPWSTR pszRes ,
03292 int *iResLen );
03293
03302 SYSINFO_API BOOL SysInfoDll_FormatDiskDrives( SYSINFO_FORMAT_TYPE Format ,
03303 SYSINFO_WMI *SysInfo_WMI ,
03304 LPWSTR pszRes ,
03305 int *iResLen );
03306
03315 SYSINFO_API BOOL SysInfoDll_FormatOpticalDrives( SYSINFO_FORMAT_TYPE Format,
03316 SYSINFO_WMI *SysInfo_WMI,
03317 LPWSTR pszRes,
03318 int *iResLen);
03319
03329 SYSINFO_API BOOL SysInfoDll_FormatOpticalDrives2(SYSINFO_FORMAT_TYPE Format,
03330 SYSINFO_WMI *SysInfo_WMI,
03331 IMAPI_INFO *pIMAPI_Drives,
03332 wchar_t *pszRes,
03333 int *iResLen);
03334
03343 SYSINFO_API BOOL SysInfoDll_FormatNetwork( SYSINFO_FORMAT_TYPE Format,
03344 SYSINFO_WMI *SysInfo_WMI,
03345 LPWSTR pszRes,
03346 int *iResLen);
03347
03356 SYSINFO_API BOOL SysInfoDll_FormatPorts( SYSINFO_FORMAT_TYPE Format,
03357 SYSINFO_WMI *SysInfo_WMI,
03358 LPWSTR pszRes,
03359 int *iResLen);
03360
03369 SYSINFO_API BOOL SysInfoDll_FormatUSB( SYSINFO_FORMAT_TYPE Format,
03370 USB_HOST_CONTROLLERS *USBHostControllers,
03371 LPWSTR pszRes,
03372 int *iResLen);
03373
03375
03376
03377
03378
03379
03380
03381
03382
03383
03384
03385
03386
03387
03388
03389
03390
03391
03392
03393
03394
03399
03400
03401 #define SERIAL_NUM_LEN 20
03402 #define FIRMWARE_REV_LEN 8
03403 #define MODEL_NUM_LEN 40
03404 #define VENDOR_UNIQUE_LEN 3
03405 #define WWN_LEN 8
03406
03407 #define MAX_PARTITIONS_PER_DEVICE 8
03408
03412
03413 #define SMART_STATUS_SUCCESS 0
03414
03416 #define SMART_ERR_DEVICE_ID_DNE -1000
03417
03418 #define SMART_ERR_DEVICE_ID_NOT_SMART -1001
03419 #define SMART_ERR_DEVICE_OPEN -1002
03420
03421 #define SMART_ERR_DRIVE_NUMBER_INVALID -1100
03422
03423 #define SMART_ERR_DRIVE_NUMBER_DNE -1101
03424
03425 #define SMART_ERR_DRIVE_NUMBER_NOT_FIXED -1102
03426
03428 #define SMART_ERR_BUFFER_INVALID -2000
03429
03430 #define SMART_ERR_BUFFER_TOO_SMALL -2001
03431
03432 #define SMART_ERR_BUFFER_FAILED_ALLOCATE -2002
03433
03435 #define SMART_ERR_SMART_DEVICE_ID_EMPTY -3001
03436
03437 #define SMART_ERR_SMART_DEVICE_ID_EOL -3002
03438
03440 #define SMART_ERR_SMART_ATTR_ID_EMPTY -4001
03441
03442 #define SMART_ERR_SMART_ATTR_ID_EOL -4002
03443
03444 #define SMART_ERR_SMART_ATTR_ID_INVALID -4003
03445
03446 #define SMART_WARN_SMART_ATTR_ID_UNKNOWN -4004
03447
03449 #define SMART_ERR_FOPEN_FAIL -5001
03450
03451 #define SMART_ERR_FWRITE_FAIL -5002
03452
03453 #define SMART_ERR_FREAD_FAIL -5003
03454
03455 #define SMART_ERR_ACCESS_RW -5101
03456
03457 #define SMART_ERR_ACCESS_RO -5102
03458
03459 #define SMART_ERR_FSEEK_FAIL -5201
03460
03462 #define SMART_ERR_GET_PHY_CAPACITY -6001
03463
03465 #define SMART_ERR_BUILD_DRIVES_INFO_NO_ACCESS -7001
03466
03467 #define SMART_ERR_NO_ADMIN_RIGHTS -7002
03468
03470 #define SMART_ERR_SELFTEST_FAILED -8001
03471
03473 #define SMART_WARN_48BITCMD_UNSUPPORTED -9001
03474
03476 #define SMART_ERR_48BITCMD_UNSUPPORTED -9002
03477
03479 #define SMART_ERR_DLL_NOT_INIT -10001
03480
03481 #define SMART_ERR_DLL_INIT_MEMORY_ALLOC_FAIL -10002
03482
03483 #define SMART_ERR_FUNCTION_NOT_SUPPORTED -10003
03484
03485 #define SMART_ERR_EMPTY_STRING -10004
03486
03487 #define SMART_ERR_INVALID_PARAM -10005
03488
03490 #define SMART_ERR_TEC_NO_ATTRIBUTES -20001
03491
03492 #define SMART_ERR_TEC_SIGNATURE_HEAD -20002
03493
03494 #define SMART_ERR_TEC_SIGNATURE_TAIL -20003
03495
03496 #define SMART_ERR_TEC_FILE_DNE -20004
03497
03498 #define SMART_WARN_TEC_NOT_ENOUGH_DATA -20005
03499
03500 #define SMART_WARN_TEC_ATTR_ID_NA -20006
03501
03502 #define SMART_WARN_TEC_UNABLE_TO_PREDICT -20007
03503
03504 #define SMART_ERR_UNEXPECTED -30001
03505
03507
03511 #define ATTR_INVALID 0x0
03512
03513 #define ATTR_READ_ERROR_RATE 0x1
03514
03515 #define ATTR_THROUGHPUT_PERF 0x2
03516
03517 #define ATTR_SPIN_UP_TIME 0x3
03518
03519 #define ATTR_START_STOP_COUNT 0x4
03520
03521 #define ATTR_REALLOC_SECTOR_COUNT 0x5
03522
03523 #define ATTR_READ_CHANNEL_MARGIN 0x6
03524
03525 #define ATTR_SEEK_ERROR_RATE 0x7
03526
03527 #define ATTR_SEEK_TIME_PERF 0x8
03528
03529 #define ATTR_POWER_ON_TIME 0x9
03530
03531 #define ATTR_SPIN_RETRY_COUNT 0xA
03532
03533 #define ATTR_CALIBRATION_RETRY_COUNT 0xB
03534
03535 #define ATTR_POWER_CYCLE_COUNT 0xC
03536
03537 #define ATTR_SOFT_READ_ERROR_RATE 0xD
03538
03539 #define ATTR_DOWNSHIFT_ERROR_COUNT 0xB7
03540 #define ATTR_END_TO_END_ERROR 0xB8
03541 #define ATTR_HEAD_STABILITY 0xB9
03542 #define ATTR_INDUCED_OP_VIB_DETECT 0xBA
03543 #define ATTR_UNCORRECTABLE_ERRORS 0xBB
03544 #define ATTR_COMMAND_TIMEOUT 0xBC
03545 #define ATTR_COMMAND_HIGH_FLY_WRITES 0xBD
03546
03547 #define ATTR_100_MINUS_TEMPERATURE 0xBE
03548
03549 #define ATTR_GSENSE_ERROR_RATE_BF 0xBF
03550
03552 #define ATTR_POWER_OFF_RETRACT_COUNT 0xC0
03553
03554 #define ATTR_LOAD_CYCLE_COUNT 0xC1
03555
03556 #define ATTR_TEMPERATURE_C2 0xC2
03557
03558 #define ATTR_HARDWARE_ECC_RECOVERED 0xC3
03559
03560 #define ATTR_REALLOC_EVENT_COUNT 0xC4
03561
03562 #define ATTR_PENDING_SECTOR_COUNT 0xC5
03563
03564 #define ATTR_UNCORRECTABLE_SECTOR_COUNT 0xC6
03565
03566 #define ATTR_ULTRADMA_CRC_ERROR_COUNT 0xC7
03567
03568 #define ATTR_WRITE_ERROR_COUNT 0xC8
03569
03570 #define ATTR_OFF_TRACK_ERRORS 0xC9
03571
03572 #define ATTR_DATA_ADDRESS_MARK_ERRORS 0xCA
03573
03574 #define ATTR_ECC_ERRORS 0xCB
03575
03576 #define ATTR_SOFT_ECC_CORRECTION 0xCC
03577
03578 #define ATTR_THERMAL_ASPERITY_RATE 0xCD
03579
03580 #define ATTR_FLYING_HEIGHT 0xCE
03581
03582 #define ATTR_SPIN_HIGH_CURRENT 0xCF
03583
03585 #define ATTR_SPIN_BUZZ 0xD0
03586
03587 #define ATTR_OFFLINE_SEEK_PERFORMANCE 0xD1
03588 #define ATTR_VIBRATION_DURING_WRITE 0xD3
03589 #define ATTR_SHOCK_DURING_WRITE 0xD4
03590
03591 #define ATTR_DISK_SHIFT 0xDC
03592
03593 #define ATTR_GSENSE_ERROR_RATE_DD 0xDD
03594
03595 #define ATTR_LOADED_HOURS 0xDE
03596
03597 #define ATTR_LOAD_UNLOAD_RERTY_COUNT 0xDF
03598
03600 #define ATTR_LOAD_FRICTION 0xE0
03601
03602 #define ATTR_LOAD_UNLOAD_CYCLE_COUNT 0xE1
03603
03604 #define ATTR_LOAD_IN_TIME 0xE2
03605
03606 #define ATTR_TORQUE_AMPLIFICATION_COUNT 0xE3
03607
03608 #define ATTR_POWEROFF_RETRACT_CYCLE 0xE4
03609
03610 #define ATTR_GMR_HEAD_AMPLITUDE 0xE6
03611
03612 #define ATTR_TEMPERATURE_E7 0xE7
03613
03615 #define ATTR_HEAD_FLYING_HOURS 0xF0
03616 #define ATTR_TOTAL_LBAS_WRITTEN 0xF1
03617 #define ATTR_TOTAL_LBAS_READ 0xF2
03618
03619 #define ATTR_READ_ERROR_RETRY_RATE 0xFA
03620 #define ATTR_FREE_FALL_PROTECTION 0xFE
03621
03625 enum NVME_SMART_ATTR
03626 {
03628 NVME_ATTR_CRITICAL_WARN,
03630 NVME_ATTR_TEMPERATURE,
03632 NVME_ATTR_AVAILABE_SPARE,
03634 NVME_ATTR_AVAILABLE_SPARE_THRESHOLD,
03636 NVME_ATTR_PERCENTAGE_USED,
03638 NVME_ATTR_DATA_UNITS_READ,
03640 NVME_ATTR_DATA_UNITS_WRITTEN,
03642 NVME_ATTR_HOST_READ_COMMANDS,
03644 NVME_ATTR_HOST_WRITE_COMMANDS,
03646 NVME_ATTR_CONTROLLER_BUSY_TIME,
03648 NVME_ATTR_POWER_CYCLES,
03650 NVME_ATTR_POWER_ON_HOURS,
03652 NVME_ATTR_UNSAFE_SHUTDOWNS,
03654 NVME_ATTR_MEDIA_ERRORS,
03656 NVME_ATTR_NUM_ERR_INFO_LOG_ENTRIES
03657 };
03658
03660
03661
03663 #define ATTR_TYPE_STR_DESC 0x20
03664
03665 #define ATTR_TYPE_INT_STATUS 0x40
03666
03667 #define ATTR_TYPE_INT_TYPE 0x80
03668
03669 #define ATTR_TYPE_INT_VALUE 0x01
03670
03671 #define ATTR_TYPE_ULONGLONG_RAW 0x02
03672
03673 #define ATTR_TYPE_INT_WORST 0x04
03674
03675 #define ATTR_TYPE_INT_THRESHOLD 0x08
03676
03677 enum SMART_TYPE
03678 {
03680 SMART_TYPE_ATA = 0,
03682 SMART_TYPE_NVME = 1
03683 };
03684
03685 enum SMART_SELFTEST
03686 {
03688 SMART_SELFTEST_ABORT = 0,
03690 SMART_SELFTEST_SHORT = 1,
03692 SMART_SELFTEST_EXT = 2,
03694 SMART_SELFTEST_CONVEYANCE = 3,
03696 SMART_SELFTEST_SELECTIVE = 4,
03697 SMART_SELFTEST_MAX = 5
03698 };
03699
03701 #define SMART_SELFTEST_STATUS_NOERR 0x0
03702
03703 #define SMART_SELFTEST_STATUS_ABORTED 0x1
03704
03705 #define SMART_SELFTEST_STATUS_INTERRUPTED 0x2
03706
03707 #define SMART_SELFTEST_STATUS_FATALERR 0x3
03708
03709 #define SMART_SELFTEST_STATUS_FAILED_UNKNOWN 0x4
03710
03711 #define SMART_SELFTEST_STATUS_FAILED_ELECTRICAL 0x5
03712
03713 #define SMART_SELFTEST_STATUS_FAILED_SERVOSEEK 0x6
03714
03715 #define SMART_SELFTEST_STATUS_FAILED_READ 0x7
03716
03717 #define SMART_SELFTEST_STATUS_FAILED_HANDLING 0x8
03718
03719 #define SMART_SELFTEST_STATUS_IN_PROGRESS 0xF
03720
03721
03726
03727 #define INTERFACE_TYPE_UNKNOWN 0x00
03728 #define INTERFACE_TYPE_SCSI 0x01
03729 #define INTERFACE_TYPE_ATAPI 0x02
03730 #define INTERFACE_TYPE_ATA 0x03
03731 #define INTERFACE_TYPE_1394 0x04
03732 #define INTERFACE_TYPE_SSA 0x05
03733 #define INTERFACE_TYPE_FIBRE 0x06
03734 #define INTERFACE_TYPE_USB 0x07
03735 #define INTERFACE_TYPE_RAID 0x08
03736 #define INTERFACE_TYPE_ISCSI 0x09
03737 #define INTERFACE_TYPE_SAS 0x0A
03738 #define INTERFACE_TYPE_SATA 0x0B
03739 #define INTERFACE_TYPE_NVME 0x11
03740
03741
03742
03743 #define ATA_COMPLIANCE(x) (x != 0x0000 && x != 0xFFFF)
03744 #define ATA8_SUPPORTED(x) (x & (1 << 8))
03745 #define ATA7_SUPPORTED(x) (x & (1 << 7))
03746 #define ATA6_SUPPORTED(x) (x & (1 << 6))
03747 #define ATA5_SUPPORTED(x) (x & (1 << 5))
03748 #define ATA4_SUPPORTED(x) (x & (1 << 4))
03749
03750
03751 #define TRANSPORT_TYPE_AVAILABLE(x) (x != 0x0000 && x != 0xFFFF)
03752 #define TRANSPORT_TYPE_SERIAL(x) (x & (1 << 12))
03753 #define TRANSPORT_TYPE_PARALLEL(x) ((x & (1 << 12)) == 0)
03754 #define SATA3_0_COMPLIANCE(x) (x & (1 << 5))
03755 #define SATA2_6_COMPLIANCE(x) (x & (1 << 4))
03756 #define SATA2_5_COMPLIANCE(x) (x & (1 << 3))
03757 #define SATA2_EXT_COMPLIANCE(x) (x & (1 << 2))
03758 #define SATA1_COMPLIANCE(x) (x & (1 << 1))
03759 #define ATA7_COMPLIANCE(x) (x & (1 << 1))
03760 #define ATA8_COMPLIANCE(x) (x & 1)
03761
03762
03763 #define ROTATION_RATE_AVAILABLE(x) (x != 0)
03764 #define ROTATION_RATE_SSD(x) (x == 0x0001)
03765
03766
03767 #define MULTIDMA_MODE2_SUPPORTED(x) (x & (1 << 2))
03768 #define MULTIDMA_MODE1_SUPPORTED(x) (x & (1 << 1))
03769 #define MULTIDMA_MODE0_SUPPORTED(x) (x & 1)
03770
03771
03772 #define MULTIDMA_MODE2_SELECTED(x) (x & (1 << 2))
03773 #define MULTIDMA_MODE1_SELECTED(x) (x & (1 << 1))
03774 #define MULTIDMA_MODE0_SELECTED(x) (x & 1)
03775
03776
03777 #define ULTRADMA_MODE6_SUPPORTED(x) (x & (1 << 6))
03778 #define ULTRADMA_MODE5_SUPPORTED(x) (x & (1 << 5))
03779 #define ULTRADMA_MODE4_SUPPORTED(x) (x & (1 << 4))
03780 #define ULTRADMA_MODE3_SUPPORTED(x) (x & (1 << 3))
03781 #define ULTRADMA_MODE2_SUPPORTED(x) (x & (1 << 2))
03782 #define ULTRADMA_MODE1_SUPPORTED(x) (x & (1 << 1))
03783 #define ULTRADMA_MODE0_SUPPORTED(x) (x & 1)
03784
03785
03786 #define ULTRADMA_MODE6_SELECTED(x) (x & (1 << 6))
03787 #define ULTRADMA_MODE5_SELECTED(x) (x & (1 << 5))
03788 #define ULTRADMA_MODE4_SELECTED(x) (x & (1 << 4))
03789 #define ULTRADMA_MODE3_SELECTED(x) (x & (1 << 3))
03790 #define ULTRADMA_MODE2_SELECTED(x) (x & (1 << 2))
03791 #define ULTRADMA_MODE1_SELECTED(x) (x & (1 << 1))
03792 #define ULTRADMA_MODE0_SELECTED(x) (x & 1)
03793
03794
03795 #define PIO_MODE3_SUPPORTED(x) (x & 1)
03796 #define PIO_MODE4_SUPPORTED(x) (x & (1 << 1))
03797
03798
03799 #define SATA_NCQ_PRIO_INFO_SUPPORTED(x) (x & (1 << 12))
03800 #define SATA_UNLOAD_NCQ_PENDING_SUPPORTED(x) (x & (1 << 11))
03801 #define SATA_PHY_EVENT_COUNTERS_SUPPORTED(x) (x & (1 << 10))
03802 #define SATA_POWER_MGMT_REQUESTS_SUPPORTED(x) (x & (1 << 9))
03803 #define SATA_NCQ_FEATURES_SUPPORTED(x) (x & (1 << 8))
03804 #define SATA_GEN3_SIGNAL_SPEED_SUPPORTED(x) (x & (1 << 3))
03805 #define SATA_GEN2_SIGNAL_SPEED_SUPPORTED(x) (x & (1 << 2))
03806 #define SATA_GEN1_SIGNAL_SPEED_SUPPORTED(x) (x & (1 << 1))
03807
03808
03809 #define SATA_SSP_SUPPORTED(x) (x & (1 << 6))
03810 #define SATA_IN_ORDER_DELIVERY_SUPPORTED(x) (x & (1 << 4))
03811 #define SATA_INIT_POWER_MGMT_SUPPORTED(x) (x & (1 << 3))
03812 #define SATA_DMA_SETUP_AUTO_ACT_SUPPORTED(x) (x & (1 << 2))
03813 #define SATA_NON_ZERO_BUFOFF_SUPPORTED(x) (x & (1 << 1))
03814
03815
03816 #define SATA_SSP_ENABLED(x) (x & (1 << 6))
03817 #define SATA_IN_ORDER_DELIVERY_ENABLED(x) (x & (1 << 4))
03818 #define SATA_INIT_POWER_MGMT_ENABLED(x) (x & (1 << 3))
03819 #define SATA_DMA_SETUP_AUTO_ACT_ENABLED(x) (x & (1 << 2))
03820 #define SATA_NON_ZERO_BUFOFF_ENABLED(x) (x & (1 << 1))
03821
03822
03823 #define AAM_LEVEL_VENDOR_SPECIFIC(x) (x == 0x00)
03824 #define AAM_LEVEL_MIN_ACOUSTIC(x) (x == 0x80)
03825 #define AAM_LEVEL_INT_ACOUSTIC(x) (x >= 0x81 && x <= 0xFD)
03826 #define AAM_LEVEL_MAX_PERFORMANCE(x) (x == 0xFE)
03827
03828
03829 #define APM_LEVEL_MIN_POWER_WITH_STANDBY(x) (x == 0x01)
03830 #define APM_LEVEL_INT_POWER_WITH_STANDBY(x) (x >= 0x02 && x <= 0x7F)
03831 #define APM_LEVEL_MIN_POWER_WITHOUT_STANDBY(x) (x == 0x80)
03832 #define APM_LEVEL_INT_POWER_WITHOUT_STANDBY(x) (x >= 0x81 && x <= 0xFD)
03833 #define APM_LEVEL_MAX_PERFORMANCE(x) (x == 0xFE)
03834
03835
03836 #define SCT_TRANSPORT_SUPPORTED(x) (x & 1)
03837 #define SCT_DATA_TABLES_SUPPORTED(x) (x & (1 << 5))
03838 #define SCT_FEATURES_CTRL_SUPPORTED(x) (x & (1 << 4))
03839 #define SCT_ERROR_RECOVERY_CTRL_SUPPORTED(x) (x & (1 << 3))
03840 #define SCT_WRITE_SAME_SUPPORTED(x) (x & (1 << 2))
03841
03842
03843 typedef struct _DEVICEINFO
03844 {
03845
03846 BYTE bChannelId;
03847 BYTE bTargetId;
03848 BYTE bLun;
03849 BYTE bInterfaceType;
03850
03851
03852 UINT64 qwNumCylinders;
03853 WORD wBytesPerSector;
03854 WORD wSectorsPerTrack;
03855 WORD wTracksPerCylinder;
03857 WORD wLogicalSectorSize;
03859 WORD wPhysicalSectorSize;
03861 DWORD dwBufferSize;
03863 WORD wECCSize;
03865 WORD wMediaRotationRate;
03866
03867
03869 WORD wATAVersionSupported;
03871 WORD wTransportTypeSupported;
03872 UINT64 qwTotalAddressableSectors;
03873
03875 BYTE bSerialNumber[SERIAL_NUM_LEN+1];
03877 BYTE bFirmwareRev[FIRMWARE_REV_LEN+1];
03879 BYTE bModelNumber[MODEL_NUM_LEN+1];
03880 BYTE bWorldWideID[WWN_LEN];
03881
03882
03883 BOOLEAN bSMARTSupported;
03884 BOOLEAN bSMARTEnabled;
03885 BOOLEAN bSMARTSelfTestSupported;
03886 BOOLEAN bSMARTErrorLoggingSupported;
03887
03888 BOOLEAN bLBASupported;
03889 BOOLEAN bIORDYSupported;
03890 BOOLEAN bCFastSupported;
03891
03892 BOOLEAN bDMASupported;
03894 BYTE bMultiwordDMASupported ;
03896 BYTE bMultiwordDMASelected ;
03897
03899 BYTE bUltraDMASupported ;
03901 BYTE bUltraDMASelected ;
03902
03904 BYTE bPIOSupported;
03905
03906 BOOLEAN bSATACompliance;
03908 WORD wSATACapabilities;
03910 WORD wSATAFeaturesSupported;
03912 WORD wSATAFeaturesEnabled;
03913
03914 BOOLEAN bTrustedComputingSupported;
03915 BOOLEAN bHPASupported;
03916 BOOLEAN bReadLookAheadSupported;
03917 BOOLEAN bReadLookAheadEnabled;
03918 BOOLEAN bWriteCacheSupported;
03919 BOOLEAN bWriteCacheEnabled;
03920 BOOLEAN bPowerManagementSupported;
03921 BOOLEAN bSecurityModeSupported;
03922 BOOLEAN bSecurityModeEnabled;
03923 BOOLEAN bDeviceConfigOverlaySupported;
03924 BOOLEAN b48BitAddressSupported;
03925 BOOLEAN bAutoAcousticSupported;
03926 BOOLEAN bAutoAcousticEnabled;
03927 BYTE bRecommendedAAMLevel;
03928 BYTE bCurrentAAMLevel;
03929 BOOLEAN bPowerUpStandbySupported;
03930 BOOLEAN bPowerUpStandbyEnabled;
03931 BOOLEAN bAutoPowerManagementSupported;
03932 BOOLEAN bAutoPowerManagementEnabled;
03933 BYTE bCurrentAPMLevel;
03934 BOOLEAN bCFASupported;
03935 BOOLEAN bGPLoggingSupported;
03936 BOOLEAN bStreamingSupported;
03937 BOOLEAN bMediaCardPassthroughSupported;
03938 BOOLEAN bMediaCardPassthroughEnabled;
03939 BOOLEAN bExtPowerConditionsSupported;
03940 BOOLEAN bExtPowerConditionsEnabled;
03941 BOOLEAN bExtStatusReportingSupported;
03942 BOOLEAN bExtStatusReportingEnabled;
03943 BOOLEAN bFreefallControlSupported;
03944 BOOLEAN bFreefallControlEnabled;
03945 BOOLEAN bWriteReadVerifySupported;
03946 BOOLEAN bWriteReadVerifyEnabled;
03947 BOOLEAN bTrimSupported;
03949 WORD wSCTCommandTransportSupported;
03950 BOOLEAN bNVCacheEnabled;
03951 BOOLEAN bNVCachePMSupported;
03952 BOOLEAN bNVCachePMEnabled;
03953
03954 } DEVICEINFO, *LPDEVICEINFO;
03955
03957
03972 SYSINFO_API int SysInfoDll_Smart_Init( bool debug,
03973 wchar_t *iDebugFile = NULL,
03974 bool iRecordTEC = true );
03975
03985 SYSINFO_API void SysInfoDll_Smart_Cleanup( void );
03986
03997 SYSINFO_API int SysInfoDll_Smart_Refresh( bool iRecordTEC = false );
03998
04005 SYSINFO_API int SysInfoDll_Smart_SetInitTimeout( DWORD iTimeoutMs );
04006
04011 SYSINFO_API int SysInfoDll_Smart_GetNumSmartDevices( void );
04012
04017 SYSINFO_API int SysInfoDll_Smart_GetNumDetectedDrives( void );
04018
04024 SYSINFO_API int SysInfoDll_Smart_GetPhysicalDeviceIDFirst( void );
04025
04034 SYSINFO_API int SysInfoDll_Smart_GetPhysicalDeviceIDNext( void );
04035
04041 SYSINFO_API int SysInfoDll_Smart_IsValidSmartDevice( int iDeviceID );
04042
04064 SYSINFO_API int SysInfoDll_Smart_GetDevicePartitionInfo( int *ioDriveNumSameDisk ,
04065 int* ioNumPartition ,
04066 int iDeviceID );
04067
04074 SYSINFO_API int SysInfoDll_Smart_GetDriveLetterFromDriveNum( wchar_t* ioDriveLetter,
04075 int iDriveNum );
04076
04083 SYSINFO_API int SysInfoDll_Smart_GetDeviceIDFromDriveNum( int iDriveNum );
04084
04093 SYSINFO_API int SysInfoDll_Smart_GetDeviceSerialNumber( wchar_t* ioBuf ,
04094 int* ioLen ,
04095 int iDeviceID );
04096
04105 SYSINFO_API int SysInfoDll_Smart_GetDeviceFirmWareRev( wchar_t* ioBuf ,
04106 int* ioLen ,
04107 int iDeviceID );
04108
04117 SYSINFO_API int SysInfoDll_Smart_GetDeviceModelNumber( wchar_t* ioBuf ,
04118 int* ioLen ,
04119 int iDeviceID );
04120
04127 SYSINFO_API int SysInfoDll_Smart_GetDeviceCapacity( int* ioCapacity ,
04128 int iDeviceID );
04129
04138 SYSINFO_API int SysInfoDll_Smart_GetDeviceInterface(wchar_t* ioBuf, int* ioLen, bool* isSSD, int iDeviceID);
04139
04146 SYSINFO_API int SysInfoDll_Smart_GetVolumeCapacity( int* ioCapacity ,
04147 int iDriveNum );
04148
04154 SYSINFO_API int SysInfoDll_Smart_GetSmartDeviceIDFirst( void );
04155
04164 SYSINFO_API int SysInfoDll_Smart_GetSmartDeviceIDNext( void );
04165
04171 SYSINFO_API int SysInfoDll_Smart_GetNumSmartAttr( int iDeviceID );
04172
04179 SYSINFO_API int SysInfoDll_Smart_GetSmartAttributeIDFirst( int iDeviceID );
04180
04189 SYSINFO_API int SysInfoDll_Smart_GetSmartAttributeIDNext( int iDeviceID );
04190
04196 SYSINFO_API int SysInfoDll_Smart_RefreshSmartAttributes( int iDeviceID );
04197
04204 SYSINFO_API int SysInfoDll_Smart_ExecuteSelfTest(int iDeviceID, int iTestType);
04205
04213 SYSINFO_API int SysInfoDll_Smart_GetSelfTestStatus(int iDeviceID, int* ioStatus, int* ioPercentRem);
04214
04222 SYSINFO_API int SysInfoDll_Smart_GetMaxLBA(int iDeviceID, unsigned long long* oMaxLBA);
04223
04231 SYSINFO_API int SysInfoDll_Smart_GetMax28bitLBA(int iDeviceID, unsigned int* oMaxLBA);
04232
04240 SYSINFO_API int SysInfoDll_Smart_SetMaxLBA(int iDeviceID, unsigned long long iMaxLBA);
04241
04249 SYSINFO_API int SysInfoDll_Smart_GetDCOMaxLBA(int iDeviceID, unsigned long long* oMaxLBA);
04250
04258 SYSINFO_API int SysInfoDll_Smart_SetDCOMaxLBA(int iDeviceID, unsigned long long iMaxLBA);
04259
04266 SYSINFO_API int SysInfoDll_Smart_RestoreDCO(int iDeviceID);
04267
04277 SYSINFO_API int SysInfoDll_Smart_ReadSectors(int iDeviceID, unsigned long long iLBA, unsigned int iNumSectors, unsigned char* oBuffer);
04278
04297 SYSINFO_API int SysInfoDll_Smart_GetSmartAttributeByID( void* ioPtr ,
04298 int* ioLen ,
04299 int iAttrID ,
04300 int inAttrType ,
04301 int iDeviceID );
04302
04303
04312 SYSINFO_API int SysInfoDll_Smart_GetAttrDescByID( wchar_t *oBuf ,
04313 int *ioLen ,
04314 int iAttrID ,
04315 int iDeviceID);
04316
04317
04324 SYSINFO_API int SysInfoDll_Smart_GetDeviceInfo( DEVICEINFO *oDeviceInfo ,
04325 int iDeviceID );
04326
04340 SYSINFO_API int SysInfoDll_Smart_ExportReport( wchar_t *filename ,
04341 int iDeviceID ,
04342 wchar_t *iHeaderText ,
04343 int iHeaderTextLen ,
04344 int iExportFlags = 3 ,
04345 int iHistoryAttr = 0 );
04346
04353 SYSINFO_API int SysInfoDll_Smart_RecordTECData( int iDeviceID );
04354
04362 SYSINFO_API int SysInfoDll_Smart_GetTECDataSetCount( int* ioCount ,
04363 int iDeviceID );
04364
04377 SYSINFO_API int SysInfoDll_Smart_ExportTECData( time_t* ioTimeArray ,
04378 int* ioNormValArray ,
04379 int* ioWorstValArray ,
04380 unsigned long long* ioRawValArray,
04381 int* ioArraySize ,
04382 int iAttrID ,
04383 int iDeviceID );
04396 SYSINFO_API int SysInfoDll_Smart_GetTECDataAtIndex( time_t* ioTime ,
04397 int* ioNormVal ,
04398 int* ioWorstVal ,
04399 unsigned long long* ioRawVal,
04400 int inIndex ,
04401 int iAttrID ,
04402 int iDeviceID );
04403
04419 SYSINFO_API int SysInfoDll_Smart_EstimateTECByAttributeID( time_t* ioEarliest ,
04420 time_t* ioLatest ,
04421 int iAttrID ,
04422 int iDeviceID );
04423
04440 SYSINFO_API int SysInfoDll_Smart_EstimateTEC( time_t* ioEarliest ,
04441 time_t* ioLatest ,
04442 int* oAttrID ,
04443 int iDeviceID );
04444
04446
04447
04448
04449
04450
04451
04452
04453
04454
04455
04460
04461
04463 #define INT_NOVALUEAVAILABLE -1001
04464 #define NOVALUEAVAILABLE nanf("")
04465
04466
04468 #define NUMTEMPSAMPLES 1000
04469
04470 #define MAXNUMTEMPVALUES 200
04471
04472 #define MAXNUMTEMPSOURCES 64
04473
04475 #define TEMP_MIN_DISK 1
04476
04477 #define TEMP_MAX_DISK 128
04478
04480 #define MAXNUMFANVALUES 5
04481
04482 #define MAXVOLTAGEVALUES 7
04483
04485 enum PM_Temp_Type
04486 {
04487 PM_TEMP_NONE = 0,
04489 PM_TEMP_CPU_AVE = 1,
04491 PM_TEMP_CPU = 2,
04493 PM_TEMP_CPU_CORE = 4,
04495 PM_TEMP_HDD = 8,
04497 PM_TEMP_GPU = 16,
04499 PM_TEMP_SENSOR = 32,
04500 };
04501
04502 enum PM_Auto_Type
04503 {
04504 PM_TEMP_AUTO_ALL = 0,
04505 PM_TEMP_AUTO_CPU,
04506 PM_TEMP_AUTO_HDD,
04507 PM_TEMP_AUTO_GPU,
04508 };
04509
04511 typedef struct _MSR_TEMP
04512 {
04513 bool bDataCollected;
04514 WORD wCPUGroup;
04515 DWORD_PTR pdwCPUAffinityMask;
04516 ULONGLONG ullMSR0x19C;
04517 int iPROCHOT1;
04518 int iPROCHOT2;
04519 int iResolutionInDegreesCelcius;
04520 int iReadingValid;
04522 int iDigitalReadout;
04524 int iTemperature;
04525 } MSR_TEMP;
04526
04528 #define DRIVE_TYPE_UNKNOWN -1
04529 #define DRIVE_TYPE_FIXED 3
04530 #define DRIVE_TYPE_FIXED_HOTPLUG 100
04531
04532 typedef struct _PM_TEMP_KEY
04533 {
04535 PM_Temp_Type iType;
04537 int iID;
04539 int iIDSubvalue;
04541 WORD wCPUGroup;
04542 INT64 iCPUMask;
04543 bool ReadBEasC2;
04544
04545
04546 } PM_TEMP_KEY;
04547
04549 typedef struct TSensorsdata
04550 {
04552 PM_TEMP_KEY iKey[MAXNUMTEMPVALUES];
04554 int iPMKeySelected[MAXNUMTEMPVALUES];
04556 TCHAR szTempCaption[MAXNUMTEMPVALUES][SHORT_STRING_LEN];
04558 float Temp[MAXNUMTEMPVALUES];
04560 float MaxTemp[MAXNUMTEMPVALUES];
04562 float MinTemp[MAXNUMTEMPVALUES];
04564 TCHAR szVoltageCaption[MAXVOLTAGEVALUES][SHORT_STRING_LEN];
04566 float VIO,VCORE,VCORE2;
04567 float VP5,VP12,VN12,VN5;
04569 TCHAR szFanCaption[MAXNUMFANVALUES][SHORT_STRING_LEN];
04571 int FAN1,FAN2,FAN3,FAN4,FAN5;
04573 MSR_TEMP CPUMSRTemp[MAXNUMTEMPVALUES];
04575 int iTempIndex;
04577 bool bTempHistoryWrap;
04579 SYSTEMTIME TempHistorySampleTime[NUMTEMPSAMPLES];
04581 float flTempHistory[MAXNUMTEMPVALUES][NUMTEMPSAMPLES];
04582
04583 } TSENSORSDATA;
04584
04606 SYSINFO_API bool SysInfoDll_InitPassMarkTemp(DWORD dwTempTypes, CPUINFO *pCPUinfo, SYSINFO_WMI *WMI_HDDinfo, bool *pbSMARTInitialized, TSENSORSDATA * psdata, bool allowMutlipleGPUs = false);
04607
04621 SYSINFO_API bool SysInfoDll_GetPassMarkTemps(DWORD dwTempTypes, HANDLE hDirectIO, wchar_t sztemp_C_or_F, CPUINFO *pCPUinfo, TSENSORSDATA * psdata);
04622
04624
04625
04626
04627
04628
04629
04630
04631
04632
04633
04638
04639 #define MAX_SOFTWARE_RECORDS 1000
04640 #define MAX_SOFTWARE_NAME_LEN 128
04641 #define MAX_USER_NAME_LEN 64
04642
04644 typedef struct _SOFTWARE_RECORD {
04646 wchar_t SoftwareName[MAX_SOFTWARE_NAME_LEN];
04648 wchar_t Path[MAX_PATH];
04649 }SOFTWARE_RECORD, *PSOFTWARE_RECORD;
04650
04651 typedef struct _SOFTWARE_LIST {
04653 int iCount;
04655 SOFTWARE_RECORD *sw[MAX_SOFTWARE_RECORDS];
04656 }SOFTWARE_LIST, *PSOFTWARE_LIST;
04657
04658
04664 SYSINFO_API int SysInfoDll_GetInstalledProgramsSystem(SOFTWARE_LIST *swl);
04665
04671 SYSINFO_API int SysInfoDll_GetInstalledProgramsUser(SOFTWARE_LIST *swl);
04672
04678 SYSINFO_API int SysInfoDll_GetInstalledAppsSystem(SOFTWARE_LIST* swl);
04679
04685 SYSINFO_API int SysInfoDll_GetInstalledAppsUser(SOFTWARE_LIST* swl);
04686
04692 SYSINFO_API void SysInfoDll_GetInstalledPrograms_ReleaseMem(SOFTWARE_LIST *swl);
04693
04695
04696 #endif