kernel32: Reimplement GetLogicalDrives using the mountmgr

Alexandre Goujon ale.goujon at gmail.com
Sun Jul 22 06:56:35 CDT 2012


Previous approach was patch #88280
---
 dlls/kernel32/volume.c |   18 +++---------------
 1 file changed, 3 insertions(+), 15 deletions(-)

diff --git a/dlls/kernel32/volume.c b/dlls/kernel32/volume.c
index 8377e41..57453bb 100644
--- a/dlls/kernel32/volume.c
+++ b/dlls/kernel32/volume.c
@@ -1435,27 +1435,15 @@ DWORD WINAPI QueryDosDeviceA( LPCSTR devname, LPSTR target, DWORD bufsize )
  */
 DWORD WINAPI GetLogicalDrives(void)
 {
-    const char *config_dir = wine_get_config_dir();
-    struct stat st;
-    char *buffer, *dev;
     DWORD ret = 0;
+    WCHAR drive;
     int i;
 
-    if (!(buffer = HeapAlloc( GetProcessHeap(), 0, strlen(config_dir) + sizeof("/dosdevices/a:") )))
-    {
-        SetLastError( ERROR_NOT_ENOUGH_MEMORY );
-        return 0;
-    }
-    strcpy( buffer, config_dir );
-    strcat( buffer, "/dosdevices/a:" );
-    dev = buffer + strlen(buffer) - 2;
-
     for (i = 0; i < 26; i++)
     {
-        *dev = 'a' + i;
-        if (!stat( buffer, &st )) ret |= (1 << i);
+        drive = 'A'+i;
+        if (get_mountmgr_drive_type(&drive) != DRIVE_UNKNOWN) ret |= (1 << i);
     }
-    HeapFree( GetProcessHeap(), 0, buffer );
     return ret;
 }
 
-- 
1.7.9.5




More information about the wine-patches mailing list