用下面代码可以找出所有可移动设备的盘符和名称,获取其它信息需要用WMI,比较复杂。
char root[] = "A:\\";
for (*root='C'; *roor<='Z'; *roor++)
{
    if (GetDriveType() == DRIVE_REMOVABLE)
    {
       // *root是一个可移动设备的盘符
        char name[MAX_PATH];
        GetVolumeInformation(root, name, MAX_PATH, NULL, NULL, NULL, NULL, 0);
       // name是该盘的名称。
    }
}

解决方案 »

  1.   

    更正一下:
    for (*root='C'; *roor<='Z'; *roor++)
    应该是:
    for (*root='C'; *root<='Z'; *root++)
      

  2.   

    GetVolumeInformation()能得到ID 等信息.
      

  3.   

    你要的信息用DeviceIOControl这个API基本都可以得到.
      

  4.   

    http://msdn.microsoft.com/en-us/library/aa363411.aspx例如获取序列号:
    IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER Control Code
    Retrieves the serial number of a USB device.BOOL DeviceIoControl(
      (HANDLE) hDevice,                      // handle to device
      IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER, // dwIoControlCode
      NULL,                                  // lpInBuffer
      0,                                     // nInBufferSize
      (LPVOID) lpOutBuffer,                  // output buffer
      (DWORD) nOutBufferSize,                // size of output buffer
      (LPDWORD) lpBytesReturned,             // number of bytes returned
      (LPOVERLAPPED) lpOverlapped            // OVERLAPPED structure
    );