From 29fc781674d8fe9e3b9dfad39e49c3347f28787a Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Tue, 24 Aug 2004 17:15:42 +0000 Subject: [PATCH] - Fix Get[System/Window]Directory[AW] for Buffer == NULL case. - Fix return value of GetDriveType[AW]. svn path=/trunk/; revision=10667 --- reactos/lib/kernel32/file/curdir.c | 24 +++++++++++++----------- reactos/lib/kernel32/file/volume.c | 22 ++++++++++++++++++++-- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/reactos/lib/kernel32/file/curdir.c b/reactos/lib/kernel32/file/curdir.c index 56405adfc9d..aebfd7d77e6 100644 --- a/reactos/lib/kernel32/file/curdir.c +++ b/reactos/lib/kernel32/file/curdir.c @@ -1,4 +1,4 @@ -/* $Id: curdir.c,v 1.43 2004/06/06 17:29:57 hbirr Exp $ +/* $Id: curdir.c,v 1.44 2004/08/24 17:15:42 navaraf Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -270,11 +270,11 @@ GetSystemDirectoryA ( ULONG Length; NTSTATUS Status; - if (lpBuffer == NULL) - return 0; - Length = RtlUnicodeStringToAnsiSize (&SystemDirectory); //len of ansi str incl. nullchar + if (lpBuffer == NULL) + return Length; + if (uSize >= Length){ String.Length = 0; String.MaximumLength = uSize; @@ -312,10 +312,11 @@ GetSystemDirectoryW ( { ULONG Length; + Length = SystemDirectory.Length / sizeof (WCHAR); + if (lpBuffer == NULL) - return 0; + return Length + 1; - Length = SystemDirectory.Length / sizeof (WCHAR); if (uSize > Length) { memmove (lpBuffer, SystemDirectory.Buffer, @@ -342,11 +343,11 @@ GetWindowsDirectoryA ( ULONG Length; NTSTATUS Status; - if (lpBuffer == NULL) - return 0; - Length = RtlUnicodeStringToAnsiSize (&WindowsDirectory); //len of ansi str incl. nullchar + if (lpBuffer == NULL) + return Length; + if (uSize >= Length){ String.Length = 0; @@ -385,10 +386,11 @@ GetWindowsDirectoryW ( { ULONG Length; + Length = WindowsDirectory.Length / sizeof (WCHAR); + if (lpBuffer == NULL) - return 0; + return Length + 1; - Length = WindowsDirectory.Length / sizeof (WCHAR); if (uSize > Length) { memmove (lpBuffer, diff --git a/reactos/lib/kernel32/file/volume.c b/reactos/lib/kernel32/file/volume.c index 0b3e26a167d..cc3513479a8 100644 --- a/reactos/lib/kernel32/file/volume.c +++ b/reactos/lib/kernel32/file/volume.c @@ -1,4 +1,4 @@ -/* $Id: volume.c,v 1.40 2004/02/25 09:55:30 gvg Exp $ +/* $Id: volume.c,v 1.41 2004/08/24 17:15:42 navaraf Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -448,7 +448,25 @@ GetDriveTypeW(LPCWSTR lpRootPathName) return 0; } CloseHandle(hFile); - return (UINT)FileFsDevice.DeviceType; + + switch (FileFsDevice.DeviceType) + { + case FILE_DEVICE_CD_ROM_FILE_SYSTEM: + return DRIVE_CDROM; + case FILE_DEVICE_VIRTUAL_DISK: + return DRIVE_RAMDISK; + case FILE_DEVICE_NETWORK_FILE_SYSTEM: + return DRIVE_REMOTE; + case FILE_DEVICE_DISK: + case FILE_DEVICE_DISK_FILE_SYSTEM: + if (FileFsDevice.Characteristics & FILE_REMOTE_DEVICE) + return DRIVE_REMOTE; + if (FileFsDevice.Characteristics & FILE_REMOVABLE_MEDIA) + return DRIVE_REMOVABLE; + return DRIVE_FIXED; + } + + return DRIVE_UNKNOWN; } -- 2.17.1