kernel32: Use drive types returned by mountmgr in the first place (eterbug #4061).
authorAlexander Morozov <amorozov@etersoft.ru>
Wed, 15 Jul 2009 15:45:28 +0000 (19:45 +0400)
committerVitaly Lipatov <lav@etersoft.ru>
Tue, 21 Jul 2009 08:39:53 +0000 (08:39 +0000)
dlls/kernel32/volume.c

index 9addeab955ffd09bf9816b0caff9b12d86b3b8c4..878bd0428cefe6bc1e06093d2f4bd3e03dc2915e 100644 (file)
@@ -1237,6 +1237,7 @@ UINT WINAPI GetDriveTypeW(LPCWSTR root) /* [in] String describing drive */
 
     if (!open_device_root( root, &handle )) return DRIVE_NO_ROOT_DIR;
 
+    if ((ret = get_mountmgr_drive_type( root )) != DRIVE_UNKNOWN) goto ret;
     status = NtQueryVolumeInformationFile( handle, &io, &info, sizeof(info), FileFsDeviceInformation );
     NtClose( handle );
     if (status != STATUS_SUCCESS)
@@ -1254,13 +1255,14 @@ UINT WINAPI GetDriveTypeW(LPCWSTR root) /* [in] String describing drive */
         case FILE_DEVICE_DISK_FILE_SYSTEM:
             if (info.Characteristics & FILE_REMOTE_DEVICE) ret = DRIVE_REMOTE;
             else if (info.Characteristics & FILE_REMOVABLE_MEDIA) ret = DRIVE_REMOVABLE;
-            else if ((ret = get_mountmgr_drive_type( root )) == DRIVE_UNKNOWN) ret = DRIVE_FIXED;
+            else ret = DRIVE_FIXED;
             break;
         default:
             ret = DRIVE_UNKNOWN;
             break;
         }
     }
+ret:
     TRACE( "%s -> %d\n", debugstr_w(root), ret );
     return ret;
 }