mirror of
https://github.com/BeneficialCode/WinArk.git
synced 2026-10-17 04:40:35 +08:00
129 lines
3.4 KiB
C++
129 lines
3.4 KiB
C++
#pragma once
|
|
|
|
|
|
namespace WinSys {
|
|
int SetLastStatus(int status);
|
|
int GetLastStatus();
|
|
|
|
struct PerformanceInformation {
|
|
int64_t IdleProcessTime;
|
|
int64_t IoReadTransferCount;
|
|
int64_t IoWriteTransferCount;
|
|
int64_t IoOtherTransferCount;
|
|
uint32_t IoReadOperationCount;
|
|
uint32_t IoWriteOperationCount;
|
|
uint32_t IoOtherOperationCount;
|
|
uint32_t AvailablePages;
|
|
uint32_t CommittedPages;
|
|
uint32_t CommitLimit;
|
|
uint32_t PeakCommitment;
|
|
uint32_t PageFaultCount;
|
|
uint32_t CopyOnWriteCount;
|
|
uint32_t TransitionCount;
|
|
uint32_t CacheTransitionCount;
|
|
uint32_t DemandZeroCount;
|
|
uint32_t PageReadCount;
|
|
uint32_t PageReadIoCount;
|
|
uint32_t CacheReadCount;
|
|
uint32_t CacheIoCount;
|
|
uint32_t DirtyPagesWriteCount;
|
|
uint32_t DirtyWriteIoCount;
|
|
uint32_t MappedPagesWriteCount;
|
|
uint32_t MappedWriteIoCount;
|
|
uint32_t PagedPoolPages;
|
|
uint32_t NonPagedPoolPages;
|
|
uint32_t PagedPoolAllocs;
|
|
uint32_t PagedPoolFrees;
|
|
uint32_t NonPagedPoolAllocs;
|
|
uint32_t NonPagedPoolFrees;
|
|
uint32_t FreeSystemPtes;
|
|
uint32_t ResidentSystemCodePage;
|
|
uint32_t TotalSystemDriverPages;
|
|
uint32_t TotalSystemCodePages;
|
|
uint32_t NonPagedPoolLookasideHits;
|
|
uint32_t PagedPoolLookasideHits;
|
|
uint32_t AvailablePagedPoolPages;
|
|
uint32_t ResidentSystemCachePage;
|
|
uint32_t ResidentPagedPoolPage;
|
|
uint32_t ResidentSystemDriverPage;
|
|
uint32_t CcFastReadNoWait;
|
|
uint32_t CcFastReadWait;
|
|
uint32_t CcFastReadResourceMiss;
|
|
uint32_t CcFastReadNotPossible;
|
|
uint32_t CcFastMdlReadNoWait;
|
|
uint32_t CcFastMdlReadWait;
|
|
uint32_t CcFastMdlReadResourceMiss;
|
|
uint32_t CcFastMdlReadNotPossible;
|
|
uint32_t CcMapDataNoWait;
|
|
uint32_t CcMapDataWait;
|
|
uint32_t CcMapDataNoWaitMiss;
|
|
uint32_t CcMapDataWaitMiss;
|
|
uint32_t CcPinMappedDataCount;
|
|
uint32_t CcPinReadNoWait;
|
|
uint32_t CcPinReadWait;
|
|
uint32_t CcPinReadNoWaitMiss;
|
|
uint32_t CcPinReadWaitMiss;
|
|
uint32_t CcCopyReadNoWait;
|
|
uint32_t CcCopyReadWait;
|
|
uint32_t CcCopyReadNoWaitMiss;
|
|
uint32_t CcCopyReadWaitMiss;
|
|
uint32_t CcMdlReadNoWait;
|
|
uint32_t CcMdlReadWait;
|
|
uint32_t CcMdlReadNoWaitMiss;
|
|
uint32_t CcMdlReadWaitMiss;
|
|
uint32_t CcReadAheadIos;
|
|
uint32_t CcLazyWriteIos;
|
|
uint32_t CcLazyWritePages;
|
|
uint32_t CcDataFlushes;
|
|
uint32_t CcDataPages;
|
|
uint32_t ContextSwitches;
|
|
uint32_t FirstLevelTbFills;
|
|
uint32_t SecondLevelTbFills;
|
|
uint32_t SystemCalls;
|
|
uint64_t CcTotalDirtyPages; // since THRESHOLD
|
|
uint64_t CcDirtyPageThreshold; // since THRESHOLD
|
|
int64_t ResidentAvailablePages; // since THRESHOLD
|
|
uint64_t SharedCommittedPages; // since THRESHOLD
|
|
};
|
|
|
|
struct WindowsVersion {
|
|
uint32_t Major, Minor;
|
|
uint32_t Build;
|
|
};
|
|
|
|
enum class ProcessorArchitecture :uint16_t {
|
|
x64 = 9,
|
|
ARM = 5,
|
|
x86 = 0,
|
|
Itanium = 6,
|
|
Unknown = 0xffff
|
|
};
|
|
|
|
struct BasicSystemInfo {
|
|
ProcessorArchitecture ProcessorArchitecture;
|
|
uint32_t PageSize;
|
|
uint32_t NumberOfProcessors;
|
|
uint16_t ProcessorLevel;
|
|
uint16_t ProcessorRevision;
|
|
size_t TotalPhysicalInPages;
|
|
size_t CommitLimitInPages;
|
|
void* MinimumAppAddress;
|
|
void* MaximumAppAddress;
|
|
};
|
|
|
|
struct CodeIntegrityInformation {
|
|
ULONG Length;
|
|
ULONG CodeIntegrityOptions;
|
|
};
|
|
|
|
class SystemInformation {
|
|
public:
|
|
static PerformanceInformation GetPerformanceInformation();
|
|
static const WindowsVersion& GetWindowsVersion();
|
|
static const BasicSystemInfo& GetBasicSystemInfo();
|
|
static uint64_t GetBootTime();
|
|
static std::string GetCpuBrand();
|
|
static BOOL GetCodeIntegrityInformation(PBOOLEAN pbKMCI,PBOOLEAN pbStrictMode,
|
|
PBOOLEAN pIUM);
|
|
};
|
|
} |