主机性能监控之wmi 获取磁盘信息
标 题: 主机性能监控之wmi 获取磁盘信息
作 者: itdef
链 接: http://www.cnblogs.com/itdef/p/3990541.html
欢迎转帖 请保持文本完整并注明出处
仅在《主机性能监控之wmi 获取系统信息及内存性能信息》 代码中添加一个函数
使用的结构体位为Win32_LogicalDisk
class Win32_LogicalDisk : CIM_LogicalDisk { uint16 Access; uint16 Availability; uint64 BlockSize; string Caption; boolean Compressed; uint32 ConfigManagerErrorCode; boolean ConfigManagerUserConfig; string CreationClassName; string Description; string DeviceID; uint32 DriveType; boolean ErrorCleared; string ErrorDescription; string ErrorMethodology; string FileSystem; uint64 FreeSpace; datetime InstallDate; uint32 LastErrorCode; uint32 MaximumComponentLength; uint32 MediaType; string Name; uint64 NumberOfBlocks; string PNPDeviceID; uint16 PowerManagementCapabilities[]; boolean PowerManagementSupported; string ProviderName; string Purpose; boolean QuotasDisabled; boolean QuotasIncomplete; boolean QuotasRebuilding; uint64 Size; string Status; uint16 StatusInfo; boolean SupportsDiskQuotas; boolean SupportsFileBasedCompression; string SystemCreationClassName; string SystemName; boolean VolumeDirty; string VolumeName; string VolumeSerialNumber; };
添加的函数
bool CMyWMI::QueryDiskInfo() { HRESULT hres; //定义COM调用的返回 IEnumWbemClassObject* pEnumerator = NULL; bool bRet = false; try{ hres = pSvc_->ExecQuery( bstr_t("WQL"), bstr_t("SELECT * FROM Win32_LogicalDisk"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator); if (FAILED(hres)) { throw exception("ExecQuery() error."); } while (pEnumerator) { IWbemClassObject *pclsObj; ULONG uReturn = 0; HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn); if(0 == uReturn) { break; } GetInfo(L"Name",pclsObj); GetInfo(L"VolumeName",pclsObj); GetInfo(L"FileSystem",pclsObj); GetInfo(L"VolumeSerialNumber",pclsObj); GetInfo(L"FreeSpace",pclsObj); ; cout << endl; pclsObj->Release(); } }catch(exception& e) { cout << e.what() << endl; if(pEnumerator != NULL) { pEnumerator->Release(); pEnumerator = NULL; } return bRet; } if(pEnumerator != NULL) { pEnumerator->Release(); pEnumerator = NULL; } bRet = true; return bRet; }
python 代码
#!/usr/bin/env python # -*- coding: cp936 -*- import wmi import os import sys import platform import time def disk_info(): c = wmi.WMI() for p in c.Win32_LogicalDisk(): print p.Name, p.VolumeName , p.FileSystem, p.FreeSpace def main(): disk_info(); if __name__ == '__main__': main()
作 者: itdef
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力