You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows系统下如何获取已连接存储设备及其相关信息

Windows存储设备信息查询API选型说明

核心选型判断标准

  • 仅需识别带盘符的常规存储设备(本地硬盘、U盘、挂载后有盘符的SD卡、移动硬盘等):优先使用fileapi.h中的卷管理函数,开发门槛最低
  • 需要识别无盘符设备、MTP/PTP协议便携设备(手机、相机、未挂载的SD卡读卡器等):选择IPortableDeviceManager相关的WPD(Windows Portable Devices)API

卷管理函数实现方案(入门首选)

核心调用接口

  • 枚举系统所有盘符:调用GetLogicalDriveStringsW() 或 GetLogicalDrives()
  • 单盘符属性查询:
    • 设备类型判断:GetDriveTypeW(),返回值可区分固定硬盘、可移动磁盘、光盘、RAM盘等类别
    • 容量信息获取:GetDiskFreeSpaceExW(),可直接返回总容量、空闲容量、当前用户可用容量三个数值
    • 显示名称获取:GetVolumeInformationW(),可读取到卷标作为设备显示名称

示例代码片段

#include <windows.h>
#include <tchar.h>
#include <stdio.h>

int _tmain()
{
    WCHAR driveBuf[512] = {0};
    // 枚举所有盘符
    GetLogicalDriveStringsW(ARRAYSIZE(driveBuf)-1, driveBuf);
    WCHAR* pCurDrive = driveBuf;
    while (*pCurDrive)
    {
        wprintf(L"盘符:%s\n", pCurDrive);
        // 获取设备类型
        UINT driveType = GetDriveTypeW(pCurDrive);
        wprintf(L"设备类型:%d\n", driveType); // 对应宏可查Win32文档,比如DRIVE_REMOVABLE是可移动盘
        // 获取容量信息
        ULARGE_INTEGER freeAvail, total, totalFree;
        if (GetDiskFreeSpaceExW(pCurDrive, &freeAvail, &total, &totalFree))
        {
            wprintf(L"总容量:%llu 字节\n", total.QuadPart);
            wprintf(L"空闲容量:%llu 字节\n", totalFree.QuadPart);
        }
        // 获取卷标
        WCHAR volName[MAX_PATH] = {0};
        GetVolumeInformationW(pCurDrive, volName, ARRAYSIZE(volName), NULL, NULL, NULL, NULL, 0);
        wprintf(L"卷标(显示名称):%s\n\n", volName);
        pCurDrive += wcslen(pCurDrive) + 1;
    }
    return 0;
}

方案优缺点

  • 优点:调用逻辑简单,不需要掌握COM编程知识,运行速度快,适合新手快速实现需求
  • 缺点:无法识别无盘符的设备,也不支持MTP协议的手机、相机等便携设备,设备类型判断粒度较粗

WPD API实现方案(全设备支持)

核心调用逻辑

  1. 先初始化COM运行环境,调用CoInitializeEx()
  2. 实例化IPortableDeviceManager接口
  3. 调用GetDevices()方法枚举所有连接的便携设备
  4. 对每个设备打开连接后,可读取设备型号、存储容量、设备类型等全量属性

方案优缺点

  • 优点:覆盖所有类型的外接存储/便携设备,可识别SD卡、手机、相机等细分设备类型,支持读取无盘符设备信息
  • 缺点:基于COM接口开发,需要掌握COM编程的基础规则,代码量更大,调试成本更高

内容的提问来源于stack exchange,提问作者Toasdn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:45:00