1. 首页
  2. 网络技术
  3. 其他
  4. 使用CrystalDiskInfo和VS2017mfc提取硬盘数据的例子

使用CrystalDiskInfo和VS2017mfc提取硬盘数据的例子

上传者: 2023-03-08 02:58:51上传 7Z文件 189.88KB 热度 26次

CrystalDiskInfo是一款常用的硬盘信息查询工具,可以提供硬盘的健康状况、温度、读写速度等数据。本文介绍如何使用CrystalDiskInfo工具中提取查询硬盘数据的部分,使用VS2017mfc编写示例代码。

在使用CrystalDiskInfo工具时,我们可以调用其内部的API接口,从而提取硬盘的相关数据。以下是使用VS2017mfc编写的一个示例代码:

BOOL CDiskInfoExtendDlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();

    // 获取硬盘信息
    HMODULE hMod = LoadLibrary(_T("CrystalDiskInfo.exe"));
    if (hMod != NULL)
    {
        typedef BOOL(__stdcall *LPFN_GetDiskInfo)(DISK_INFO*);
        LPFN_GetDiskInfo pfnGetDiskInfo = (LPFN_GetDiskInfo)GetProcAddress(hMod, "GetDiskInfo");
        if (pfnGetDiskInfo != NULL)
        {
            DISK_INFO diskInfo;
            ZeroMemory(&diskInfo, sizeof(DISK_INFO));
            diskInfo.size = sizeof(DISK_INFO);
            if (pfnGetDiskInfo(&diskInfo))
            {
                // 显示硬盘信息
                CString strTemp;
                strTemp.Format(_T("Model: %s\r\n"), diskInfo.model);
                m_editInfo.SetWindowText(strTemp);

                strTemp.Format(_T("Firmware: %s\r\n"), diskInfo.firmware);
                m_editInfo.ReplaceSel(strTemp);

                strTemp.Format(_T("Serial: %s\r\n"), diskInfo.serial);
                m_editInfo.ReplaceSel(strTemp);

                strTemp.Format(_T("Interface: %s\r\n"), diskInfo.interface);
                m_editInfo.ReplaceSel(strTemp);

                strTemp.Format(_T("Capacity: %.2f GB\r\n"), diskInfo.capacity / 1024.0 / 1024.0 / 1024.0);
                m_editInfo.ReplaceSel(strTemp);

                strTemp.Format(_T("Health: %d/100\r\n"), diskInfo.health);
                m_editInfo.ReplaceSel(strTemp);

                strTemp.Format(_T("Temperature: %d ℃\r\n"), diskInfo.temperature);
                m_editInfo.ReplaceSel(strTemp);
            }
        }
        FreeLibrary(hMod);
    }

    return TRUE;
}

在以上示例代码中,我们首先加载了CrystalDiskInfo.exe的动态链接库,然后获取了GetDiskInfo函数的地址。通过调用该函数,我们可以获取到硬盘的相关信息,例如型号、固件版本、序列号、接口类型、容量、健康度和温度等。最后,我们将获取到的信息显示在窗口中。

下载地址
用户评论