使用vc++2010从usb读取文件/文件夹

read files/folders from usb using vc++2010

本文关键字:文件 文件夹 读取 usb vc++2010 使用      更新时间:2023-10-16

我想使用Visual studio 2010从windows7中的USB大容量存储中读取/写入文件/文件夹。

使用WM_DEVICECHANGE可以检测USB设备的连接/移除。但现在我不知道如何从USB(Pendrive(读取文件和文件夹。

我不想为此安装任何软件包。通过使用windows类让我知道我是否可以工作。

请在这方面帮助我。

提前谢谢。

使用RegisterDeviceNotification注册窗口,可以成功接收DEV_BROADCAST_DEVICEINTERFACE消息。在WM_DEVICECHANGE处理程序中,您必须获取dbcc_name。它会像\?\USB#VID_05AC&PID_1294&MI_00#0#{6bdd1fc6-810f-11d0-bec7-08002be2092f}

此id标识USB设备。

可以使用以下psuedo(代码使用C#,但可以很容易地移植到C++(。

Private static string GetDeviceName(String DbccName)
{
    string[] Parts = DbccName.Split('#');
    if (Parts.Length >= 3)
    {
        string DevType = Parts[0].Substring(Parts[0].IndexOf(@"?") + 2);
        string DeviceInstanceId = Parts[1];
        string DeviceUniqueID = Parts[2];
        string RegPath = @"SYSTEMCurrentControlSetEnum" + DevType + "\" + DeviceInstanceId + "\" + DeviceUniqueID;
        RegistryKey key = Registry.LocalMachine.OpenSubKey(RegPath);
        if (key != null)
        {
            object result = key.GetValue("FriendlyName");
            if (result != null)
                return result.ToString();
            result = key.GetValue("DeviceDesc");
            if (result != null)
                return result.ToString();
        }
    }
    return String.Empty;
}

一旦获得友好的名称,您就可以使用windows API将文件读/写到USB驱动器。