927 PSTR Buffer1, Buffer2, LoadOptions;
944 if (Buffer1 ==
NULL || Buffer2 ==
NULL)
955 Last =
strrchr(LoaderBlock->NtBootPathName,
'\\');
969 Last =
strrchr(LoaderBlock->NtBootPathName,
'\\');
980 NtSystemPath[0] =
'X';
981 NtSystemPath[1] =
':';
999 for (
i = 0;
i < DiskCount; ++
i)
1002 sprintf(Buffer1,
"\\Device\\Harddisk%d\\Partition%d",
i, 0);
1025 sprintf(Buffer2,
"\\DosDevices\\PhysicalDrive%d",
i);
1036 RealDiskCount =
i + 1;
1057 if (LoaderBlock->LoadOptions !=
NULL)
1059 LoadOptions =
_strupr(LoaderBlock->LoadOptions);
1067 if (LoadOptions !=
NULL &&
1068 strstr(LoadOptions,
"MININT") != 0 &&
1073 *NtSystemPath =
'X';
1081 if (RealDiskCount > DiskCount)
1083 DiskCount = RealDiskCount;
1091 for (
i = 0;
i < DiskCount; ++
i)
1094 if (Devices !=
NULL)
1096 HarddiskCount = Devices[
i];
1108 SystemFound =
FALSE;
1109 swprintf(
Buffer,
L"\\Device\\Harddisk%d\\Partition%d", HarddiskCount, 1);
1115 for (PartitionCount = 1; ; ++PartitionCount)
1117 swprintf(
Buffer,
L"\\Device\\Harddisk%d\\Partition%d", HarddiskCount, PartitionCount);
1135 for (PartitionCount = 2; ; ++PartitionCount)
1151 swprintf(
Buffer,
L"\\Device\\Harddisk%d\\Partition%d", HarddiskCount, PartitionCount);
1158 for (PartitionCount = 1; ; ++PartitionCount)
1160 swprintf(
Buffer,
L"\\Device\\Harddisk%d\\Partition%d", HarddiskCount, PartitionCount);
1181 if (LayoutInfo !=
NULL)
1186 HarddiskCount =
i + 1;
1190 for (
i = 0;
i < DiskCount; ++
i)
1193 if (Devices !=
NULL)
1195 HarddiskCount = Devices[
i];
1211 for (PartitionCount = 1; ; ++PartitionCount)
1213 swprintf(
Buffer,
L"\\Device\\Harddisk%d\\Partition%d", HarddiskCount, PartitionCount);
1227 if (LayoutInfo !=
NULL)
1234 for (
i = 0;
i < DiskCount; ++
i)
1237 if (Devices !=
NULL)
1239 HarddiskCount = Devices[
i];
1256 for (PartitionCount = 1; ; ++PartitionCount)
1258 swprintf(
Buffer,
L"\\Device\\Harddisk%d\\Partition%d", HarddiskCount, PartitionCount);
1272 for (PartitionCount = 1; ; ++PartitionCount)
1276 swprintf(
Buffer,
L"\\Device\\Harddisk%d\\Partition%d", HarddiskCount, PartitionCount);
1280 if (LayoutInfo !=
NULL)
1297 if (Devices !=
NULL)
1326 if (DriveLetter != 0)
1328 if (DriveLetter != 0xFF)
1330 *NtSystemPath = DriveLetter;
1357 if (DriveLetter >
'Z')
1364 if (DriveLetter >
'Z')
1369 *NtSystemPath =
'Z';
1374 *NtSystemPath = DriveLetter;
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define OBJ_CASE_INSENSITIVE
ACPI_SIZE strlen(const char *String)
PCONFIGURATION_INFORMATION NTAPI IoGetConfigurationInformation(VOID)
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
char * strstr(char *String1, char *String2)
VOID HalpEnableAutomaticDriveLetterAssignment(VOID)
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
NTSTATUS HalpDeleteMountLetter(UCHAR DriveLetter)
NTSTATUS HalpQueryPartitionType(IN PUNICODE_STRING DeviceName, IN PDRIVE_LAYOUT_INFORMATION LayoutInfo, OUT PPARTITION_TYPE PartitionType)
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
#define sprintf(buf, format,...)
DECLSPEC_NORETURN VOID NTAPI KeBugCheck(ULONG BugCheckCode)
UCHAR HalpNextDriveLetter(IN PUNICODE_STRING DeviceName, IN PSTRING NtDeviceName, OUT PUCHAR NtSystemPath, BOOLEAN IsRemovable)
NTSTATUS NTAPI IoCreateSymbolicLink(IN PUNICODE_STRING SymbolicLinkName, IN PUNICODE_STRING DeviceName)
#define NT_SUCCESS(StatCode)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
static PPARTENTRY SystemPartition
#define ExAllocatePoolWithTag(hernya, size, tag)
NTSYSAPI NTSTATUS NTAPI ZwOpenFile(_Out_ PHANDLE FileHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes, _Out_ PIO_STATUS_BLOCK IoStatusBlock, _In_ ULONG ShareAccess, _In_ ULONG OpenOptions)
NTSTATUS HalpSetMountLetter(IN PUNICODE_STRING DeviceName, UCHAR DriveLetter)
NTSYSAPI VOID NTAPI RtlInitString(PSTRING DestinationString, PCSZ SourceString)
_CRTIMP char *__cdecl _strupr(_Inout_z_ char *_String)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
PULONG IopComputeHarddiskDerangements(IN ULONG DiskCount)
NTSYSAPI BOOLEAN NTAPI RtlPrefixUnicodeString(IN PUNICODE_STRING String1, IN PUNICODE_STRING String2, IN BOOLEAN CaseInSensitive)
BOOLEAN HalpIsOldStyleFloppy(PUNICODE_STRING DeviceName)
#define FILE_SYNCHRONOUS_IO_NONALERT
char * strcpy(char *DstString, const char *SrcString)
NTSTATUS FASTCALL HalpQueryDriveLayout(IN PUNICODE_STRING DeviceName, OUT PDRIVE_LAYOUT_INFORMATION *LayoutInfo)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define InitializeObjectAttributes(p, n, a, r, s)
#define ExFreePoolWithTag(_P, _T)
enum _PARTITION_TYPE PARTITION_TYPE
IN OUT PLONG IN OUT PLONG Addend IN OUT PLONG IN LONG Increment
BOOLEAN IoRemoteBootClient