Win32 设备管理(1)
2011-04-02 13:56 Clingingboy 阅读(570) 评论(0) 编辑 收藏 举报一.获得物理内存参数
使用GlobalMemoryStatus函数
View Code
void CDemoDlg::OnTest()
{
CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST);
pListBox->ResetContent();
//获得物理内存参数
MEMORYSTATUS MemoryStatus;
GlobalMemoryStatus(&MemoryStatus);
CString strText = _T("");
strText.Format(_T("物理内存使用率:%d%s"),
MemoryStatus.dwMemoryLoad, _T("%"));
pListBox->AddString(strText);
strText.Format(_T("物理内存总数: %dK"),
MemoryStatus.dwTotalPhys / 1024);
pListBox->AddString(strText);
strText.Format(_T("物理内存可用数:%dK"),
MemoryStatus.dwAvailPhys / 1024);
pListBox->AddString(strText);
strText.Format(_T("页文件总数: %dK"),
MemoryStatus.dwTotalPageFile / 1024);
pListBox->AddString(strText);
strText.Format(_T("页文件用数: %dK"),
MemoryStatus.dwAvailPageFile / 1024);
pListBox->AddString(strText);
strText.Format(_T("虚拟内存总数: %dK"),
MemoryStatus.dwTotalVirtual / 1024);
pListBox->AddString(strText);
strText.Format(_T("虚拟内存可用数:%dK"),
MemoryStatus.dwAvailVirtual / 1024);
pListBox->AddString(strText);
}
{
CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST);
pListBox->ResetContent();
//获得物理内存参数
MEMORYSTATUS MemoryStatus;
GlobalMemoryStatus(&MemoryStatus);
CString strText = _T("");
strText.Format(_T("物理内存使用率:%d%s"),
MemoryStatus.dwMemoryLoad, _T("%"));
pListBox->AddString(strText);
strText.Format(_T("物理内存总数: %dK"),
MemoryStatus.dwTotalPhys / 1024);
pListBox->AddString(strText);
strText.Format(_T("物理内存可用数:%dK"),
MemoryStatus.dwAvailPhys / 1024);
pListBox->AddString(strText);
strText.Format(_T("页文件总数: %dK"),
MemoryStatus.dwTotalPageFile / 1024);
pListBox->AddString(strText);
strText.Format(_T("页文件用数: %dK"),
MemoryStatus.dwAvailPageFile / 1024);
pListBox->AddString(strText);
strText.Format(_T("虚拟内存总数: %dK"),
MemoryStatus.dwTotalVirtual / 1024);
pListBox->AddString(strText);
strText.Format(_T("虚拟内存可用数:%dK"),
MemoryStatus.dwAvailVirtual / 1024);
pListBox->AddString(strText);
}
二.获取驱动器
使用GetLogicalDrives方法,使用位掩码方式获得驱动器
View Code
void CDemoDlg::OnTest()
{
CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);
pList->DeleteAllItems();
//获得驱动器位掩码
DWORD dwBitMask = ::GetLogicalDrives();
if (dwBitMask != 0)
{
int n = 0;
TCHAR ch = 'A';
while (dwBitMask > 0)
{
if (dwBitMask % 2 == 1)
{
//驱动器名
CString strDiriveName = _T("");
strDiriveName.Format(_T("%c:\\"), ch);
pList->InsertItem(n, strDiriveName);
n++;
}
dwBitMask /= 2;
ch++;
}
}
}
{
CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);
pList->DeleteAllItems();
//获得驱动器位掩码
DWORD dwBitMask = ::GetLogicalDrives();
if (dwBitMask != 0)
{
int n = 0;
TCHAR ch = 'A';
while (dwBitMask > 0)
{
if (dwBitMask % 2 == 1)
{
//驱动器名
CString strDiriveName = _T("");
strDiriveName.Format(_T("%c:\\"), ch);
pList->InsertItem(n, strDiriveName);
n++;
}
dwBitMask /= 2;
ch++;
}
}
}
三.获取驱动器类型
使用GetDriveType函数,输入参数如C:\,根据返回的值判别类型
View Code
void CDemoDlg::OnTest()
{
CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);
pList->DeleteAllItems();
//获得驱动器位掩码
DWORD dwBitMask = ::GetLogicalDrives();
if (dwBitMask != 0)
{
int n = 0;
TCHAR ch = 'A';
while (dwBitMask > 0)
{
if (dwBitMask % 2 == 1)
{
//驱动器名
CString strDiriveName = _T("");
strDiriveName.Format(_T("%c:\\"), ch);
pList->InsertItem(n, strDiriveName);
//获得驱动器类型
UINT nDriveType = GetDriveType(strDiriveName);
CString strDiriveType = _T("");
if (nDriveType == DRIVE_UNKNOWN)
{
strDiriveType = _T("未知");
}
else if (nDriveType == DRIVE_NO_ROOT_DIR)
{
strDiriveType = _T("无效路径");
}
else if (nDriveType == DRIVE_REMOVABLE)
{
strDiriveType = _T("可移动驱动器");
}
else if (nDriveType == DRIVE_FIXED)
{
strDiriveType = _T("固定驱动器");
}
else if (nDriveType == DRIVE_REMOTE)
{
strDiriveType = _T("远程(网络)驱动器");
}
else if (nDriveType == DRIVE_CDROM)
{
strDiriveType = _T("CDROM驱动器");
}
else if (nDriveType == DRIVE_RAMDISK)
{
strDiriveType = _T("RAM磁盘");
}
pList->SetItemText(n, 1, strDiriveType);
n++;
}
dwBitMask /= 2;
ch++;
}
}
}
{
CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);
pList->DeleteAllItems();
//获得驱动器位掩码
DWORD dwBitMask = ::GetLogicalDrives();
if (dwBitMask != 0)
{
int n = 0;
TCHAR ch = 'A';
while (dwBitMask > 0)
{
if (dwBitMask % 2 == 1)
{
//驱动器名
CString strDiriveName = _T("");
strDiriveName.Format(_T("%c:\\"), ch);
pList->InsertItem(n, strDiriveName);
//获得驱动器类型
UINT nDriveType = GetDriveType(strDiriveName);
CString strDiriveType = _T("");
if (nDriveType == DRIVE_UNKNOWN)
{
strDiriveType = _T("未知");
}
else if (nDriveType == DRIVE_NO_ROOT_DIR)
{
strDiriveType = _T("无效路径");
}
else if (nDriveType == DRIVE_REMOVABLE)
{
strDiriveType = _T("可移动驱动器");
}
else if (nDriveType == DRIVE_FIXED)
{
strDiriveType = _T("固定驱动器");
}
else if (nDriveType == DRIVE_REMOTE)
{
strDiriveType = _T("远程(网络)驱动器");
}
else if (nDriveType == DRIVE_CDROM)
{
strDiriveType = _T("CDROM驱动器");
}
else if (nDriveType == DRIVE_RAMDISK)
{
strDiriveType = _T("RAM磁盘");
}
pList->SetItemText(n, 1, strDiriveType);
n++;
}
dwBitMask /= 2;
ch++;
}
}
}
四.获得驱动器卷标
使用GetVolumeInformation函数,即硬盘分区的名字(卷标)
View Code
//驱动器名
CString strDiriveName = _T("");
strDiriveName.Format(_T("%c:\\"), ch);
pList->InsertItem(n, strDiriveName);
//获得驱动器卷标
CString strVolumeName = _T("");
GetVolumeInformation(strDiriveName, strVolumeName.GetBuffer(1024),
1024, NULL, NULL, NULL, NULL, 0);
strVolumeName.ReleaseBuffer();
pList->SetItemText(n, 1, strVolumeName);
CString strDiriveName = _T("");
strDiriveName.Format(_T("%c:\\"), ch);
pList->InsertItem(n, strDiriveName);
//获得驱动器卷标
CString strVolumeName = _T("");
GetVolumeInformation(strDiriveName, strVolumeName.GetBuffer(1024),
1024, NULL, NULL, NULL, NULL, 0);
strVolumeName.ReleaseBuffer();
pList->SetItemText(n, 1, strVolumeName);
五.设置驱动器卷标
使用SetVolumeLabel函数,需要管理员权限
View Code
//设置驱动器卷标
SetVolumeLabel(_T("C:\\"), _T("系统盘"));
SetVolumeLabel(_T("C:\\"), _T("系统盘"));
六.获得驱动器序列号
还是使用GetVolumeInformation函数,第4个参数为输出结果,第一个参数是必须的
//获得驱动器序列号
DWORD dwSerialNumber = 0;
GetVolumeInformation(strDiriveName, NULL,
NULL, &dwSerialNumber, NULL, NULL, NULL, 0);
DWORD dwSerialNumber = 0;
GetVolumeInformation(strDiriveName, NULL,
NULL, &dwSerialNumber, NULL, NULL, NULL, 0);
七.获得驱动器文件系统
用GetVolumeInformation函数,最后两个参数填充,即获取装载文件系统的名称(如FAT,NTFS以及其他)
//获得驱动器文件系统
CString strFileSystemName = _T("");
GetVolumeInformation(strDiriveName, NULL, 0, NULL, NULL, NULL,
strFileSystemName.GetBuffer(1024), 1024);
strFileSystemName.ReleaseBuffer();
pList->SetItemText(n, 1, strFileSystemName);
CString strFileSystemName = _T("");
GetVolumeInformation(strDiriveName, NULL, 0, NULL, NULL, NULL,
strFileSystemName.GetBuffer(1024), 1024);
strFileSystemName.ReleaseBuffer();
pList->SetItemText(n, 1, strFileSystemName);
八.获取驱动器磁盘空间信息
//获得磁盘空间信息
ULARGE_INTEGER FreeBytes;
ULARGE_INTEGER TotalBytes;
if (!GetDiskFreeSpaceEx(strDiriveName, &FreeBytes,
&TotalBytes, NULL))
{
FreeBytes.QuadPart=0;
TotalBytes.QuadPart=0;
}
UINT nFreeSize = (UINT)(FreeBytes.QuadPart / 1024 / 1024);
UINT nTotalSize = (UINT)(TotalBytes.QuadPart / 1024 / 1024);
CString strText = _T("");
strText.Format(_T("%d MB"), nFreeSize);
pList->SetItemText(n, 1, strText);
strText.Format(_T("%d MB"),nTotalSize);
pList->SetItemText(n, 2, strText);
ULARGE_INTEGER FreeBytes;
ULARGE_INTEGER TotalBytes;
if (!GetDiskFreeSpaceEx(strDiriveName, &FreeBytes,
&TotalBytes, NULL))
{
FreeBytes.QuadPart=0;
TotalBytes.QuadPart=0;
}
UINT nFreeSize = (UINT)(FreeBytes.QuadPart / 1024 / 1024);
UINT nTotalSize = (UINT)(TotalBytes.QuadPart / 1024 / 1024);
CString strText = _T("");
strText.Format(_T("%d MB"), nFreeSize);
pList->SetItemText(n, 1, strText);
strText.Format(_T("%d MB"),nTotalSize);
pList->SetItemText(n, 2, strText);