2014-03-18 58 views
0

我想读/写文件/在Windows7从USB大容量存储的文件夹使用Visual Studio 2010用vC++ 2010

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

我不想安装任何软件包来做到这一点。通过使用Windows类让我知道我是否可以工作。

请在这方面帮助我。

在此先感谢。

回答

0

用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 = @"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驱动器。