zoukankan      html  css  js  c++  java
  • Win32 设备管理(1)

     

    一.获得物理内存参数

    使用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);
    }


    二.获取驱动器

    使用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
    ++;
            }
        }
    }

    三.获取驱动器类型

    使用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
    ++;
            }
        }
    }

    四.获得驱动器卷标

    使用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);

    五.设置驱动器卷标

     使用SetVolumeLabel函数,需要管理员权限

    View Code
        //设置驱动器卷标
        SetVolumeLabel(_T("C:\\"), _T("系统盘"));

     六.获得驱动器序列号

    还是使用GetVolumeInformation函数,第4个参数为输出结果,第一个参数是必须的

                    //获得驱动器序列号
                    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);

    八.获取驱动器磁盘空间信息

    使用GetDiskFreeSpaceEx函数

                    //获得磁盘空间信息
                    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);
  • 相关阅读:
    【读书笔记】iOS-UDID
    【读书笔记】iOS-优化内存
    【读书笔记】iOS-处理内存警告
    【读书笔记】iOS-方法声明
    【读书笔记】iOS-属性
    【读书笔记】iOS-强类型与弱类型
    【读书笔记】iOS-Objective-C编程
    【读书笔记】iOS-Interface Builder
    【读书笔记】iOS-开发者证书
    【读书笔记】iOS-成为一名开发者
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/2003296.html
Copyright © 2011-2022 走看看