134 lines
4.6 KiB
C++
134 lines
4.6 KiB
C++
#include "include.h"
|
|
#pragma comment(lib, "wbemuuid.lib")
|
|
|
|
Napi::Value mem_used_size(const Napi::CallbackInfo& info){
|
|
Napi::Env env = info.Env();
|
|
|
|
for (Hardware hardware:computer->getHardware()){
|
|
if(hardware.getHardwareType()==HardwareType::Memory){
|
|
for(Sensor sen:hardware.getSensors()){
|
|
char *name=sen.getName();
|
|
if(sen.getType()==SensorType::Data && (strcmp(name, "Memory Used")==0)){
|
|
delete[] name;
|
|
return Napi::Number::New(env, sen.getValue());
|
|
}
|
|
delete[] name;
|
|
}
|
|
}
|
|
}
|
|
return env.Null();
|
|
|
|
}
|
|
Napi::Value vmem_used_size(const Napi::CallbackInfo& info){
|
|
Napi::Env env = info.Env();
|
|
|
|
for (Hardware hardware:computer->getHardware()){
|
|
if(hardware.getHardwareType()==HardwareType::Memory){
|
|
for(Sensor sen:hardware.getSensors()){
|
|
char *name=sen.getName();
|
|
if(sen.getType()==SensorType::Data && (strcmp(name, "Virtual Memory Used")==0)){
|
|
delete[] name;
|
|
return Napi::Number::New(env, sen.getValue());
|
|
}
|
|
delete[] name;
|
|
}
|
|
}
|
|
}
|
|
return env.Null();
|
|
|
|
}
|
|
Napi::Value mem_free_size(const Napi::CallbackInfo& info){
|
|
Napi::Env env = info.Env();
|
|
|
|
for (Hardware hardware:computer->getHardware()){
|
|
if(hardware.getHardwareType()==HardwareType::Memory){
|
|
for(Sensor sen:hardware.getSensors()){
|
|
char *name=sen.getName();
|
|
if(sen.getType()==SensorType::Data && (strcmp(name, "Memory Available")==0)){
|
|
delete[] name;
|
|
return Napi::Number::New(env, sen.getValue());
|
|
}
|
|
delete[] name;
|
|
}
|
|
}
|
|
}
|
|
return env.Null();
|
|
|
|
}
|
|
Napi::Value vmem_free_size(const Napi::CallbackInfo& info){
|
|
Napi::Env env = info.Env();
|
|
|
|
for (Hardware hardware:computer->getHardware()){
|
|
if(hardware.getHardwareType()==HardwareType::Memory){
|
|
for(Sensor sen:hardware.getSensors()){
|
|
char *name=sen.getName();
|
|
if(sen.getType()==SensorType::Data && (strcmp(name, "Virtual Memory Available")==0)){
|
|
delete[] name;
|
|
return Napi::Number::New(env, sen.getValue());
|
|
}
|
|
delete[] name;
|
|
}
|
|
}
|
|
}
|
|
return env.Null();
|
|
|
|
}
|
|
|
|
Napi::Value mem_clock(const Napi::CallbackInfo& info){
|
|
Napi::Env env = info.Env();
|
|
|
|
for (Hardware hardware:computer->getHardware()){
|
|
if(hardware.getHardwareType()==HardwareType::Memory){
|
|
for(Sensor sen:hardware.getSensors()){
|
|
if(sen.getType()==SensorType::Clock){
|
|
return Napi::Number::New(env, sen.getValue());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return env.Null();
|
|
}
|
|
|
|
|
|
|
|
Napi::Value mem_size(const Napi::CallbackInfo& info) {
|
|
Napi::Env env = info.Env();
|
|
HRESULT hr;
|
|
IWbemLocator* pLoc = nullptr;
|
|
hr = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID*)&pLoc);
|
|
IWbemServices* pSvc = nullptr;
|
|
hr = pLoc->ConnectServer(_bstr_t(L"ROOT\\CIMV2"), nullptr, nullptr, 0, NULL, 0, 0, &pSvc);
|
|
hr = CoSetProxyBlanket(pSvc, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, nullptr, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, nullptr, EOAC_NONE);
|
|
|
|
// 查询总容量
|
|
IEnumWbemClassObject* pEnumerator = nullptr;
|
|
hr = pSvc->ExecQuery(_bstr_t(L"WQL"), _bstr_t(L"SELECT Capacity FROM Win32_PhysicalMemory"), WBEM_FLAG_FORWARD_ONLY, nullptr, &pEnumerator);
|
|
|
|
ULONG uReturn = 0;
|
|
IWbemClassObject* pObj = nullptr;
|
|
DWORD totalCapacity = 0;
|
|
while (pEnumerator->Next(WBEM_INFINITE, 1, &pObj, &uReturn) == S_OK) {
|
|
VARIANT vtCapacity;
|
|
hr = pObj->Get(L"Capacity", 0, &vtCapacity, nullptr, nullptr);
|
|
totalCapacity += vtCapacity.ullVal / (1024 * 1024 * 1024); // 转换为GB
|
|
VariantClear(&vtCapacity);
|
|
pObj->Release();
|
|
}
|
|
|
|
pSvc->Release();
|
|
pLoc->Release();
|
|
return Napi::Number::New(env, totalCapacity);
|
|
|
|
}
|
|
Napi::String mem_name(const Napi::CallbackInfo& info) {
|
|
Napi::Env env = info.Env();
|
|
|
|
for (Hardware hardware:computer->getHardware()){
|
|
if(hardware.getHardwareType()==HardwareType::Memory){
|
|
return Napi::String::New(env, hardware.Name());
|
|
|
|
}
|
|
}
|
|
return Napi::String::New(env, "");
|
|
|
|
} |