Alexandre Goujon <ale.gou...@gmail.com> writes: > --- > dlls/kernel32/volume.c | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/dlls/kernel32/volume.c b/dlls/kernel32/volume.c > index 8377e41..67e2eb1 100644 > --- a/dlls/kernel32/volume.c > +++ b/dlls/kernel32/volume.c > @@ -1441,19 +1441,26 @@ DWORD WINAPI GetLogicalDrives(void) > DWORD ret = 0; > int i; > > - if (!(buffer = HeapAlloc( GetProcessHeap(), 0, strlen(config_dir) + > sizeof("/dosdevices/a:") ))) > + 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; > + strcat( buffer, "/dosdevices/a::" ); > + dev = buffer + strlen(buffer) - 3; > > for (i = 0; i < 26; i++) > { > *dev = 'a' + i; > + dev[2] = 0; > if (!stat( buffer, &st )) ret |= (1 << i); > + /* Windows also report empty drives as available */ > + else > + { > + dev[2] = ':'; > + if (!stat( buffer, &st )) ret |= (1 << i); > + }
You can't do that, the device symlinks don't reflect the availability of the drive. It would have to go through the mountmgr. -- Alexandre Julliard julli...@winehq.org