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

时间:2014-03-18 20:07:24

标签: c++ visual-studio-2010 visual-c++

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

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

我不想安装任何软件包来执行此操作。通过使用Windows类,让我知道我是否可以工作。

请帮助我。

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

此ID标识USB设备。

可以使用以下伪代码(代码在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 = @"SYSTEM\CurrentControlSet\Enum\" + 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驱动器。