* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-/*
+/* $Id$
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS text-mode setup
* FILE: subsys/system/usetup/drivesup.c
}
-#if 0
CHAR
-GetDriveLetter(IN ULONG DriveNumber,
- IN ULONG PartitionNumber)
+GetDriveLetter(ULONG DriveNumber,
+ ULONG PartitionNumber)
{
OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING LinkName;
WCHAR LinkBuffer[8];
- WCHAR Letter;
+ CHAR Letter;
HANDLE LinkHandle;
UNICODE_STRING TargetName;
- WCHAR TargetBuffer[MAX_PATH];
-// WCHAR DeviceBuffer[MAX_PATH];
+ PWCHAR TargetBuffer;
+ PWCHAR DeviceBuffer;
ULONG Length;
+ NTSTATUS Status;
- wcscpy(LinkBuffer,
- L"\\??\\A:");
+ wcscpy(LinkBuffer, L"\\??\\A:");
RtlInitUnicodeString(&LinkName,
LinkBuffer);
NULL,
NULL);
+ TargetBuffer = RtlAllocateHeap(ProcessHeap, 0, MAX_PATH * sizeof(WCHAR));
+ DeviceBuffer = RtlAllocateHeap(ProcessHeap, 0, MAX_PATH * sizeof(WCHAR));
+
TargetName.Length = 0;
TargetName.MaximumLength = MAX_PATH * sizeof(WCHAR);
TargetName.Buffer = TargetBuffer;
- for (Letter = L'C'; Letter <= L'Z'; Letter++)
+ swprintf(DeviceBuffer,
+ L"\\Device\\Harddisk%lu\\Partition%lu",
+ DriveNumber,
+ PartitionNumber);
+
+ for (Letter = 'C'; Letter <= 'Z'; Letter++)
{
- LinkBuffer[4] = Letter;
+ LinkBuffer[4] = (WCHAR)Letter;
TargetName.Length = 0;
Status = NtOpenSymbolicLinkObject(&LinkHandle,
Status = NtQuerySymbolicLinkObject(LinkHandle,
&TargetName,
&Length);
+ NtClose(LinkHandle);
if (NT_SUCCESS(Status))
{
-
-
-
+ if (_wcsicmp(DeviceBuffer, TargetBuffer) == 0)
+ {
+ RtlFreeHeap(ProcessHeap, 0, DeviceBuffer);
+ RtlFreeHeap(ProcessHeap, 0, TargetBuffer);
+ return(Letter);
+ }
}
- NtClose(LinkHandle);
}
}
- return((CHAR)0);
-}
-#endif
-
-#if 0
-STATUS
-GetFileSystem()
-{
+ RtlFreeHeap(ProcessHeap, 0, DeviceBuffer);
+ RtlFreeHeap(ProcessHeap, 0, TargetBuffer);
+ return((CHAR)0);
}
-#endif
/* EOF */