怎么识别插入后变成“本地磁盘”的u盘?

如何识别插入后变成“本地磁盘”的u盘??求助
因为什么CF卡的缘故,致使插入的u盘都变成“本地磁盘”了,因我写的一个程序是从u盘中自动拷贝,所以我的这个程序在这种情况下无法实现这个功能了,请问哪位大侠可以帮我解决这个问题一下??谢谢

------解决方案--------------------
C/C++ code

BOOL    NUsb::GetDiskProp(HANDLE hDisk, _LogDiskInfo &Info)
{
    STORAGE_PROPERTY_QUERY        PropQuery;
    DWORD                        dwRead;
    BOOL                        bRetVal;
    int                            nError;

    memset(&PropQuery, 0, sizeof(PropQuery));
    PropQuery.PropertyId = StorageDeviceProperty;
    PropQuery.QueryType = PropertyStandardQuery;
    Info.DevDescrip.Size = sizeof(Info.DevDescrip) + sizeof(Info.bzDevDescripEx);
    bRetVal = ::DeviceIoControl(hDisk, IOCTL_STORAGE_QUERY_PROPERTY, &PropQuery, sizeof(PropQuery),    
        &Info.DevDescrip, Info.DevDescrip.Size, &dwRead, NULL);
    if(bRetVal == FALSE)
    {
        nError = GetLastError();
        if(nError != ERROR_INVALID_FUNCTION)
            assert(0);
    }
    if(Info.DevDescrip.VendorIdOffset)
        strcpy(Info.szVendorId, (CHAR *)&Info.DevDescrip + Info.DevDescrip.VendorIdOffset);
    if(Info.DevDescrip.ProductIdOffset)
        strcpy(Info.szProductId, (CHAR *)&Info.DevDescrip + Info.DevDescrip.ProductIdOffset);
    if(Info.DevDescrip.ProductRevisionOffset)
        strcpy(Info.szProductRevision, (CHAR *)&Info.DevDescrip + Info.DevDescrip.ProductRevisionOffset);
    if(Info.DevDescrip.SerialNumberOffset)
        strcpy(Info.szSerialNumber, (CHAR *)&Info.DevDescrip + Info.DevDescrip.SerialNumberOffset);

    memset(&PropQuery, 0, sizeof(PropQuery));
    PropQuery.PropertyId = StorageAdapterProperty;
    PropQuery.QueryType = PropertyStandardQuery;
    Info.AdpDescrip.Size = sizeof(Info.AdpDescrip) + sizeof(Info.bzAdpDescripEx);
    bRetVal = ::DeviceIoControl(hDisk, IOCTL_STORAGE_QUERY_PROPERTY, &PropQuery, sizeof(PropQuery),    
        &Info.AdpDescrip, Info.AdpDescrip.Size, &dwRead, NULL);
    if(bRetVal == FALSE)
    {
        nError = GetLastError();
        if(nError != ERROR_INVALID_FUNCTION)
            assert(0);
    }

    memset(&PropQuery, 0, sizeof(PropQuery));
    PropQuery.PropertyId = StorageDeviceIdProperty;
    PropQuery.QueryType = PropertyStandardQuery;
    Info.DevIdDescrip.Size = sizeof(Info.DevIdDescrip) + sizeof(Info.bzDevIdDescripEx);
    Info.DevIdDescrip.NumberOfIdentifiers = sizeof(Info.bzDevIdDescripEx);
    bRetVal = ::DeviceIoControl(hDisk, IOCTL_STORAGE_QUERY_PROPERTY, &PropQuery, sizeof(PropQuery),    
        &Info.DevIdDescrip, Info.DevIdDescrip.Size, &dwRead, NULL);
    if(bRetVal == FALSE)
    {
        nError = GetLastError();
        if(nError != ERROR_NOT_SUPPORTED &&
            nError != ERROR_INVALID_PARAMETER &&
            nError != ERROR_INVALID_FUNCTION)
            assert(0);
    }

    return TRUE;
}