// Copyright Leon Freist // Author Leon Freist #include "hwinfo/platform.h" #ifdef HWINFO_WINDOWS #include #include "hwinfo/WMIwrapper.h" #include "hwinfo/disk.h" #include "hwinfo/utils/stringutils.h" namespace hwinfo { // _____________________________________________________________________________________________________________________ std::vector getAllDisks() { std::vector disks; std::vector res{}; wmi::queryWMI("Win32_DiskDrive", "Manufacturer", res); if (res.empty()) { return {}; } for (const auto& v : res) { std::wstring tmp(v); disks.push_back(Disk()); disks.back()._vendor = {tmp.begin(), tmp.end()}; } res.clear(); wmi::queryWMI("Win32_DiskDrive", "Model", res); for (int i = 0; i < res.size(); ++i) { if (i >= disks.size()) { break; } std::wstring tmp(res[i]); disks[i]._model = {tmp.begin(), tmp.end()}; } res.clear(); wmi::queryWMI("Win32_DiskDrive", "SerialNumber", res); for (int i = 0; i < res.size(); ++i) { if (i >= disks.size()) { break; } std::wstring tmp(res[i]); disks[i]._serialNumber = {tmp.begin(), tmp.end()}; } std::vector res2; // this returns a random same number for all disks... wmi::queryWMI("Win32_DiskDrive", "Size", res2); for (int i = 0; i < res.size(); ++i) { if (i >= disks.size()) { break; } // TODO: fix this error // disks[i]._size_Bytes = res2[i]; disks[i]._size_Bytes = -1; } return disks; } } // namespace hwinfo #endif // HWINFO_WINDOWS