Fixed the check for removable media in load_pe_exe (spotted by
Francois Gouget).

diff --git a/dlls/kernel/process.c b/dlls/kernel/process.c
index bb029eb..521391a 100644
--- a/dlls/kernel/process.c
+++ b/dlls/kernel/process.c
@@ -36,6 +36,7 @@
 #include "wine/winbase16.h"
 #include "wine/winuser16.h"
 #include "ntstatus.h"
+#include "winioctl.h"
 #include "thread.h"
 #include "module.h"
 #include "kernel_private.h"
@@ -305,13 +306,14 @@
  */
 static HMODULE load_pe_exe( const WCHAR *name, HANDLE file )
 {
+    IO_STATUS_BLOCK io;
+    FILE_FS_DEVICE_INFORMATION device_info;
     IMAGE_NT_HEADERS *nt;
     HANDLE mapping;
     void *module;
     OBJECT_ATTRIBUTES attr;
     LARGE_INTEGER size;
     DWORD len = 0;
-    UINT drive_type;
 
     attr.Length                   = sizeof(attr);
     attr.RootDirectory            = 0;
@@ -342,12 +344,15 @@
                     debugstr_w(name), nt->OptionalHeader.AddressOfEntryPoint );
     }
 
-    drive_type = GetDriveTypeW( name );
-    /* don't keep the file handle open on removable media */
-    if (drive_type == DRIVE_REMOVABLE || drive_type == DRIVE_CDROM)
+    if (NtQueryVolumeInformationFile( file, &io, &device_info, sizeof(device_info),
+                                      FileFsDeviceInformation ) == STATUS_SUCCESS)
     {
-        CloseHandle( main_exe_file );
-        main_exe_file = 0;
+        /* don't keep the file handle open on removable media */
+        if (device_info.Characteristics & FILE_REMOVABLE_MEDIA)
+        {
+            CloseHandle( main_exe_file );
+            main_exe_file = 0;
+        }
     }
 
     return module;