VOID
GetPartTypeStringFromPartitionType(
- UCHAR partitionType,
- PCHAR strPartType,
- DWORD cchPartType)
+ IN UCHAR partitionType,
+ OUT PCHAR strPartType,
+ IN ULONG cchPartType)
{
/* Determine partition type */
if (IsContainerPartition(partitionType))
{
- StringCchCopy(strPartType, cchPartType, MUIGetString(STRING_EXTENDED_PARTITION));
+ RtlStringCchCopyA(strPartType, cchPartType, MUIGetString(STRING_EXTENDED_PARTITION));
}
else if (partitionType == PARTITION_ENTRY_UNUSED)
{
- StringCchCopy(strPartType, cchPartType, MUIGetString(STRING_FORMATUNUSED));
+ RtlStringCchCopyA(strPartType, cchPartType, MUIGetString(STRING_FORMATUNUSED));
}
else
{
{
if (partitionType == PartitionTypes[i].Type)
{
- StringCchCopy(strPartType, cchPartType, PartitionTypes[i].Description);
+ RtlStringCchCopyA(strPartType, cchPartType, PartitionTypes[i].Description);
return;
}
}
/* We are here because the partition type is unknown */
- StringCchCopy(strPartType, cchPartType, MUIGetString(STRING_FORMATUNKNOWN));
+ RtlStringCchCopyA(strPartType, cchPartType, MUIGetString(STRING_FORMATUNKNOWN));
}
}
return Temp * Alignment;
}
-
ULONGLONG
AlignUp(
IN ULONGLONG Value,
static
VOID
GetDriverName(
- PDISKENTRY DiskEntry)
+ IN PDISKENTRY DiskEntry)
{
RTL_QUERY_REGISTRY_TABLE QueryTable[2];
WCHAR KeyName[32];
static
VOID
AssignDriveLetters(
- PPARTLIST List)
+ IN PPARTLIST List)
{
PDISKENTRY DiskEntry;
PPARTENTRY PartEntry;
}
-NTSTATUS
+static NTSTATUS
NTAPI
DiskIdentifierQueryRoutine(
PWSTR ValueName,
}
-NTSTATUS
+static NTSTATUS
NTAPI
DiskConfigurationDataQueryRoutine(
PWSTR ValueName,
}
-NTSTATUS
+static NTSTATUS
NTAPI
SystemConfigurationDataQueryRoutine(
PWSTR ValueName,
static VOID
EnumerateBiosDiskEntries(
- PPARTLIST PartList)
+ IN PPARTLIST PartList)
{
RTL_QUERY_REGISTRY_TABLE QueryTable[3];
WCHAR Name[120];
static
VOID
AddPartitionToDisk(
- ULONG DiskNumber,
- PDISKENTRY DiskEntry,
- ULONG PartitionIndex,
- BOOLEAN LogicalPartition)
+ IN ULONG DiskNumber,
+ IN PDISKENTRY DiskEntry,
+ IN ULONG PartitionIndex,
+ IN BOOLEAN LogicalPartition)
{
PPARTITION_INFORMATION PartitionInfo;
PPARTENTRY PartEntry;
PartitionInfo = &DiskEntry->LayoutBuffer->PartitionEntry[PartitionIndex];
- if (PartitionInfo->PartitionType == 0 ||
+ if (PartitionInfo->PartitionType == PARTITION_ENTRY_UNUSED ||
((LogicalPartition != FALSE) && IsContainerPartition(PartitionInfo->PartitionType)))
return;
static
VOID
ScanForUnpartitionedDiskSpace(
- PDISKENTRY DiskEntry)
+ IN PDISKENTRY DiskEntry)
{
ULONGLONG LastStartSector;
ULONGLONG LastSectorCount;
{
DPRINT1("No primary partition!\n");
- /* Create a partition table that represents the empty disk */
+ /* Create a partition entry that represents the empty disk */
NewPartEntry = RtlAllocateHeap(ProcessHeap,
HEAP_ZERO_MEMORY,
sizeof(PARTENTRY));
{
DPRINT1("No logical partition!\n");
- /* Create a partition table entry that represents the empty extended partition */
+ /* Create a partition entry that represents the empty extended partition */
NewPartEntry = RtlAllocateHeap(ProcessHeap,
HEAP_ZERO_MEMORY,
sizeof(PARTENTRY));
static
VOID
UpdateDiskSignatures(
- PPARTLIST List)
+ IN PPARTLIST List)
{
PLIST_ENTRY Entry;
PDISKENTRY DiskEntry;
- /* Print partition lines*/
+ /* Print partition lines */
Entry = List->DiskListHead.Flink;
while (Entry != &List->DiskListHead)
{
static
VOID
AddDiskToList(
- HANDLE FileHandle,
- ULONG DiskNumber,
- PPARTLIST List)
+ IN HANDLE FileHandle,
+ IN ULONG DiskNumber,
+ IN PPARTLIST List)
{
DISK_GEOMETRY DiskGeometry;
SCSI_ADDRESS ScsiAddress;
&DiskGeometry,
sizeof(DISK_GEOMETRY));
if (!NT_SUCCESS(Status))
- {
return;
- }
if (DiskGeometry.MediaType != FixedMedia &&
DiskGeometry.MediaType != RemovableMedia)
&ScsiAddress,
sizeof(SCSI_ADDRESS));
if (!NT_SUCCESS(Status))
- {
return;
- }
Mbr = (PARTITION_SECTOR*)RtlAllocateHeap(ProcessHeap,
0,
DiskGeometry.BytesPerSector);
if (Mbr == NULL)
- {
return;
- }
FileOffset.QuadPart = 0;
Status = NtReadFile(FileHandle,
else
DiskEntry->NoMbr = FALSE;
- /* Free Mbr sector buffer */
+ /* Free the MBR sector buffer */
RtlFreeHeap(ProcessHeap, 0, Mbr);
ListEntry = List->BiosDiskListHead.Flink;
BiosDiskEntry = CONTAINING_RECORD(ListEntry, BIOSDISKENTRY, ListEntry);
/* FIXME:
* Compare the size from bios and the reported size from driver.
- * If we have more than one disk with a zero or with the same signatur
+ * If we have more than one disk with a zero or with the same signature
* we must create new signatures and reboot. After the reboot,
* it is possible to identify the disks.
*/
if (DiskEntry->LayoutBuffer->PartitionEntry[0].StartingOffset.QuadPart != 0 &&
DiskEntry->LayoutBuffer->PartitionEntry[0].PartitionLength.QuadPart != 0 &&
- DiskEntry->LayoutBuffer->PartitionEntry[0].PartitionType != 0)
+ DiskEntry->LayoutBuffer->PartitionEntry[0].PartitionType != PARTITION_ENTRY_UNUSED)
{
if ((DiskEntry->LayoutBuffer->PartitionEntry[0].StartingOffset.QuadPart / DiskEntry->BytesPerSector) % DiskEntry->SectorsPerTrack == 0)
{
if (IsListEmpty(&List->CurrentDisk->PrimaryPartListHead))
{
- List->CurrentPartition = 0;
+ List->CurrentPartition = NULL;
}
else
{
VOID
DestroyPartitionList(
- PPARTLIST List)
+ IN PPARTLIST List)
{
PDISKENTRY DiskEntry;
PBIOSDISKENTRY BiosDiskEntry;
static
VOID
PrintEmptyLine(
- PPARTLIST List)
+ IN PPARTLIST List)
{
COORD coPos;
- DWORD Written;
+ ULONG Written;
USHORT Width;
USHORT Height;
static
VOID
PrintPartitionData(
- PPARTLIST List,
- PDISKENTRY DiskEntry,
- PPARTENTRY PartEntry)
+ IN PPARTLIST List,
+ IN PDISKENTRY DiskEntry,
+ IN PPARTENTRY PartEntry)
{
CHAR LineBuffer[128];
COORD coPos;
- DWORD Written;
+ ULONG Written;
USHORT Width;
USHORT Height;
LARGE_INTEGER PartSize;
static
VOID
PrintDiskData(
- PPARTLIST List,
- PDISKENTRY DiskEntry)
+ IN PPARTLIST List,
+ IN PDISKENTRY DiskEntry)
{
PPARTENTRY PrimaryPartEntry, LogicalPartEntry;
PLIST_ENTRY PrimaryEntry, LogicalEntry;
CHAR LineBuffer[128];
COORD coPos;
- DWORD Written;
+ ULONG Written;
USHORT Width;
USHORT Height;
ULARGE_INTEGER DiskSize;
VOID
DrawPartitionList(
- PPARTLIST List)
+ IN PPARTLIST List)
{
PLIST_ENTRY Entry, Entry2;
PDISKENTRY DiskEntry;
PPARTENTRY PartEntry = NULL;
COORD coPos;
- DWORD Written;
+ ULONG Written;
SHORT i;
SHORT CurrentDiskLine;
SHORT CurrentPartLine;
SHORT LastLine;
- BOOL CurrentPartLineFound = FALSE;
- BOOL CurrentDiskLineFound = FALSE;
+ BOOLEAN CurrentPartLineFound = FALSE;
+ BOOLEAN CurrentDiskLineFound = FALSE;
/* Calculate the line of the current disk and partition */
CurrentDiskLine = 0;
}
-DWORD
+ULONG
SelectPartition(
- PPARTLIST List,
- ULONG DiskNumber,
- ULONG PartitionNumber)
+ IN PPARTLIST List,
+ IN ULONG DiskNumber,
+ IN ULONG PartitionNumber)
{
PDISKENTRY DiskEntry;
PPARTENTRY PartEntry;
BOOL
ScrollDownPartitionList(
- PPARTLIST List)
+ IN PPARTLIST List)
{
PLIST_ENTRY DiskListEntry;
PLIST_ENTRY PartListEntry;
BOOL
ScrollUpPartitionList(
- PPARTLIST List)
+ IN PPARTLIST List)
{
PLIST_ENTRY DiskListEntry;
PLIST_ENTRY PartListEntry;
static
BOOLEAN
IsEmptyLayoutEntry(
- PPARTITION_INFORMATION PartitionInfo)
+ IN PPARTITION_INFORMATION PartitionInfo)
{
if (PartitionInfo->StartingOffset.QuadPart == 0 &&
PartitionInfo->PartitionLength.QuadPart == 0)
static
ULONG
GetLogicalPartitionCount(
- PDISKENTRY DiskEntry)
+ IN PDISKENTRY DiskEntry)
{
PLIST_ENTRY ListEntry;
PPARTENTRY PartEntry;
static
-BOOL
+BOOLEAN
ReAllocateLayoutBuffer(
- PDISKENTRY DiskEntry)
+ IN PDISKENTRY DiskEntry)
{
PDRIVE_LAYOUT_INFORMATION NewLayoutBuffer;
ULONG NewPartitionCount;
/* If the layout buffer grows, make sure the new (empty) entries are written to the disk */
if (NewPartitionCount > CurrentPartitionCount)
{
- for (i = CurrentPartitionCount; i < NewPartitionCount; i++)
- NewLayoutBuffer->PartitionEntry[i].RewritePartition = TRUE;
+ for (i = CurrentPartitionCount; i < NewPartitionCount; i++)
+ NewLayoutBuffer->PartitionEntry[i].RewritePartition = TRUE;
}
DiskEntry->LayoutBuffer = NewLayoutBuffer;
ListEntry = ListEntry->Flink;
}
- /* Update the logical partition tables */
+ /* Update the logical partition table */
Index = 4;
ListEntry = DiskEntry->LogicalPartListHead.Flink;
while (ListEntry != &DiskEntry->LogicalPartListHead)
PartEntry->PartitionNumber = PartitionNumber;
PartEntry->PartitionIndex = Index;
- /* Fill the link entry of the previous partition table */
+ /* Fill the link entry of the previous partition entry */
if (LinkInfo != NULL)
{
LinkInfo->StartingOffset.QuadPart = (PartEntry->StartSector.QuadPart - DiskEntry->SectorAlignment) * DiskEntry->BytesPerSector;
LinkInfo->RewritePartition = TRUE;
}
- /* Save a pointer to the link entry of the current partition table */
+ /* Save a pointer to the link entry of the current partition entry */
LinkInfo = &DiskEntry->LayoutBuffer->PartitionEntry[Index + 1];
PartitionNumber++;
ListEntry = ListEntry->Flink;
}
- /* Wipe unused primary partition table entries */
+ /* Wipe unused primary partition entries */
for (Index = GetPrimaryPartitionCount(DiskEntry); Index < 4; Index++)
{
DPRINT1("Primary partition entry %lu\n", Index);
}
}
- /* Wipe unused logical partition table entries */
+ /* Wipe unused logical partition entries */
for (Index = 4; Index < DiskEntry->LayoutBuffer->PartitionCount; Index++)
{
if (Index % 4 >= 2)
static
PPARTENTRY
GetPrevUnpartitionedEntry(
- PDISKENTRY DiskEntry,
- PPARTENTRY PartEntry)
+ IN PDISKENTRY DiskEntry,
+ IN PPARTENTRY PartEntry)
{
PPARTENTRY PrevPartEntry;
PLIST_ENTRY ListHead;
static
PPARTENTRY
GetNextUnpartitionedEntry(
- PDISKENTRY DiskEntry,
- PPARTENTRY PartEntry)
+ IN PDISKENTRY DiskEntry,
+ IN PPARTENTRY PartEntry)
{
PPARTENTRY NextPartEntry;
PLIST_ENTRY ListHead;
VOID
CreatePrimaryPartition(
- PPARTLIST List,
- ULONGLONG SectorCount,
- BOOLEAN AutoCreate)
+ IN PPARTLIST List,
+ IN ULONGLONG SectorCount,
+ IN BOOLEAN AutoCreate)
{
PDISKENTRY DiskEntry;
PPARTENTRY PartEntry;
static
VOID
AddLogicalDiskSpace(
- PDISKENTRY DiskEntry)
+ IN PDISKENTRY DiskEntry)
{
PPARTENTRY NewPartEntry;
DPRINT1("AddLogicalDiskSpace()\n");
- /* Create a partition table entry that represents the empty space in the container partition */
+ /* Create a partition entry that represents the empty space in the container partition */
NewPartEntry = RtlAllocateHeap(ProcessHeap,
HEAP_ZERO_MEMORY,
sizeof(PARTENTRY));
VOID
CreateExtendedPartition(
- PPARTLIST List,
- ULONGLONG SectorCount)
+ IN PPARTLIST List,
+ IN ULONGLONG SectorCount)
{
PDISKENTRY DiskEntry;
PPARTENTRY PartEntry;
if (List == NULL ||
List->CurrentDisk == NULL ||
List->CurrentPartition == NULL ||
- (List->CurrentPartition->IsPartitioned != FALSE))
+ List->CurrentPartition->IsPartitioned != FALSE)
{
return;
}
VOID
CreateLogicalPartition(
- PPARTLIST List,
- ULONGLONG SectorCount,
- BOOLEAN AutoCreate)
+ IN PPARTLIST List,
+ IN ULONGLONG SectorCount,
+ IN BOOLEAN AutoCreate)
{
PDISKENTRY DiskEntry;
PPARTENTRY PartEntry;
VOID
DeleteCurrentPartition(
- PPARTLIST List)
+ IN PPARTLIST List)
{
PDISKENTRY DiskEntry;
PPARTENTRY PartEntry;
return;
}
- /* Clear the system disk and partition pointers if the system partition will be deleted */
+ /* Clear the system disk and partition pointers if the system partition is being deleted */
if (List->SystemPartition == List->CurrentPartition)
{
List->SystemDisk = NULL;
BOOLEAN
WritePartitionsToDisk(
- PPARTLIST List)
+ IN PPARTLIST List)
{
PLIST_ENTRY Entry;
PDISKENTRY DiskEntry;
}
-BOOL
+BOOLEAN
SetMountedDeviceValues(
- PPARTLIST List)
+ IN PPARTLIST List)
{
PLIST_ENTRY Entry1, Entry2;
PDISKENTRY DiskEntry;
LARGE_INTEGER StartingOffset;
if (List == NULL)
- {
return FALSE;
- }
Entry1 = List->DiskListHead.Flink;
while (Entry1 != &List->DiskListHead)
PartEntry = CONTAINING_RECORD(Entry2, PARTENTRY, ListEntry);
if (PartEntry->IsPartitioned)
{
+ /* Assign a "\DosDevices\#:" mount point to this partition */
if (PartEntry->DriveLetter)
{
StartingOffset.QuadPart = PartEntry->StartSector.QuadPart * DiskEntry->BytesPerSector;
}
-BOOL
+BOOLEAN
GetNextUnformattedPartition(
IN PPARTLIST List,
- OUT PDISKENTRY *pDiskEntry,
+ OUT PDISKENTRY *pDiskEntry OPTIONAL,
OUT PPARTENTRY *pPartEntry)
{
PLIST_ENTRY Entry1, Entry2;
return FALSE;
}
-
-BOOL
+BOOLEAN
GetNextUncheckedPartition(
IN PPARTLIST List,
- OUT PDISKENTRY *pDiskEntry,
+ OUT PDISKENTRY *pDiskEntry OPTIONAL,
OUT PPARTENTRY *pPartEntry)
{
PLIST_ENTRY Entry1, Entry2;