dll加载路径错误
This commit is contained in:
134
hardware_monitor_wrapper/native/memory.cpp
Normal file
134
hardware_monitor_wrapper/native/memory.cpp
Normal file
@ -0,0 +1,134 @@
|
||||
#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, "");
|
||||
|
||||
}
|
Reference in New Issue
Block a user