- Fix GetLogicalDriveStringsA/W. +5 passed tests

- Add params check for GetVolumeNameForVolumeMountPointW

svn path=/trunk/; revision=38428
This commit is contained in:
Dmitry Chapyshev 2008-12-28 15:38:17 +00:00
parent 21421f90d2
commit e4739139f7

View file

@ -81,7 +81,7 @@ InternalOpenDirW(LPCWSTR DirName,
/*
* @implemented
*/
/* Synced to Wine-? */
/* Synced to Wine-2008/12/28 */
DWORD WINAPI
GetLogicalDriveStringsA(DWORD nBufferLength,
LPSTR lpBuffer)
@ -98,8 +98,8 @@ GetLogicalDriveStringsA(DWORD nBufferLength,
}
if (count * 4 <= nBufferLength)
{
if ((count * 4) + 1 > nBufferLength) return ((count * 4) + 1);
LPSTR p = lpBuffer;
for (drive = 0; drive < MAX_DOS_DRIVES; drive++)
@ -111,7 +111,7 @@ GetLogicalDriveStringsA(DWORD nBufferLength,
*p++ = '\0';
}
*p = '\0';
}
return (count * 4);
}
@ -119,7 +119,7 @@ GetLogicalDriveStringsA(DWORD nBufferLength,
/*
* @implemented
*/
/* Synced to Wine-? */
/* Synced to Wine-2008/12/28 */
DWORD WINAPI
GetLogicalDriveStringsW(DWORD nBufferLength,
LPWSTR lpBuffer)
@ -135,19 +135,19 @@ GetLogicalDriveStringsW(DWORD nBufferLength,
count++;
}
if (count * 4 <= nBufferLength)
{
LPWSTR p = lpBuffer;
for (drive = 0; drive < MAX_DOS_DRIVES; drive++)
if (dwDriveMap & (1<<drive))
{
*p++ = (WCHAR)('A' + drive);
*p++ = (WCHAR)':';
*p++ = (WCHAR)'\\';
*p++ = (WCHAR)'\0';
}
*p = (WCHAR)'\0';
}
if ((count * 4) + 1 > nBufferLength) return ((count * 4) + 1);
LPWSTR p = lpBuffer;
for (drive = 0; drive < MAX_DOS_DRIVES; drive++)
if (dwDriveMap & (1<<drive))
{
*p++ = (WCHAR)('A' + drive);
*p++ = (WCHAR)':';
*p++ = (WCHAR)'\\';
*p++ = (WCHAR)'\0';
}
*p = (WCHAR)'\0';
return (count * 4);
}
@ -872,6 +872,12 @@ GetVolumeNameForVolumeMountPointW(
BOOL Result;
NTSTATUS Status;
if (!VolumeMountPoint || !VolumeMountPoint[0])
{
SetLastError(ERROR_PATH_NOT_FOUND);
return FALSE;
}
/*
* First step is to convert the passed volume mount point name to
* an NT acceptable name.