https://git.reactos.org/?p=reactos.git;a=commitdiff;h=118fa50269c8af2a14dca…
commit 118fa50269c8af2a14dcab9ca97db7c4a42f4dac
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Thu Nov 26 01:25:53 2020 +0100
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Thu Nov 26 03:33:37 2020 +0100
[ROSAPPS:PARTINFO] Code formatting.
---
.../sysutils/utils/partinfo/partinfo.c | 288 ++++++++++-----------
1 file changed, 142 insertions(+), 146 deletions(-)
diff --git a/modules/rosapps/applications/sysutils/utils/partinfo/partinfo.c
b/modules/rosapps/applications/sysutils/utils/partinfo/partinfo.c
index aebb04a5f79..7d72e8cbacd 100644
--- a/modules/rosapps/applications/sysutils/utils/partinfo/partinfo.c
+++ b/modules/rosapps/applications/sysutils/utils/partinfo/partinfo.c
@@ -2,210 +2,206 @@
* partinfo - partition info program
*/
+#include <stdio.h>
+#include <stdlib.h>
+
#define WIN32_NO_STATUS
#include <windows.h>
-#include <stdlib.h>
#include <ntndk.h>
-#include <stdio.h>
-//#define DUMP_DATA
+// #define DUMP_DATA
#define DUMP_SIZE_INFO
#ifdef DUMP_DATA
-void HexDump(char *buffer, ULONG size)
+void HexDump(
+ IN PVOID buffer,
+ IN ULONG size)
{
- ULONG offset = 0;
- unsigned char *ptr;
+ ULONG_PTR offset = 0;
+ PUCHAR ptr;
- while (offset < (size & ~15))
+ while (offset < (size & ~15))
{
- ptr = (unsigned char*)((ULONG)buffer + offset);
- printf("%08lx %02hx %02hx %02hx %02hx %02hx %02hx %02hx %02hx-%02hx %02hx
%02hx %02hx %02hx %02hx %02hx %02hx\n",
- offset,
- ptr[0],
- ptr[1],
- ptr[2],
- ptr[3],
- ptr[4],
- ptr[5],
- ptr[6],
- ptr[7],
- ptr[8],
- ptr[9],
- ptr[10],
- ptr[11],
- ptr[12],
- ptr[13],
- ptr[14],
- ptr[15]);
+ ptr = (PUCHAR)((ULONG_PTR)buffer + offset);
+ printf("%08lx %02hx %02hx %02hx %02hx %02hx %02hx %02hx %02hx-%02hx %02hx
%02hx %02hx %02hx %02hx %02hx %02hx\n",
+ offset,
+ ptr[0], ptr[1], ptr[2] , ptr[3] , ptr[4] , ptr[5] , ptr[6] , ptr[7],
+ ptr[8], ptr[9], ptr[10], ptr[11], ptr[12], ptr[13], ptr[14], ptr[15]);
offset += 16;
}
- ptr = (unsigned char*)((ULONG)buffer + offset);
- printf("%08lx ", offset);
- while (offset < size)
+ ptr = (PUCHAR)((ULONG_PTR)buffer + offset);
+ printf("%08lx ", offset);
+ while (offset < size)
{
- printf(" %02hx", *ptr);
- offset++;
- ptr++;
+ printf(" %02hx", *ptr);
+ offset++;
+ ptr++;
}
- printf("\n\n\n");
+ printf("\n\n\n");
}
#endif
-
void Usage(void)
{
- puts("Usage: partinfo <drive number>");
+ puts("Usage: partinfo <drive number>");
}
-
-int main (int argc, char *argv[])
+int main(int argc, char *argv[])
{
- HANDLE hDisk;
- DWORD dwRead;
- DWORD i;
- char *Buffer;
- DRIVE_LAYOUT_INFORMATION *LayoutBuffer;
- DISK_GEOMETRY DiskGeometry;
- ULONG ulDrive;
- CHAR DriveName[40];
- SYSTEM_DEVICE_INFORMATION DeviceInfo;
- NTSTATUS Status;
-
- if (argc != 2)
+ NTSTATUS Status;
+ ULONG ulDrive;
+ HANDLE hDisk;
+ DWORD dwRead;
+ DWORD i;
+ SYSTEM_DEVICE_INFORMATION DeviceInfo;
+ DISK_GEOMETRY DiskGeometry;
+ PDRIVE_LAYOUT_INFORMATION LayoutBuffer;
+ CHAR DriveName[40];
+
+ if (argc != 2)
{
- Usage();
- return(0);
+ Usage();
+ return 0;
}
- ulDrive = strtoul(argv[1], NULL, 10);
- if (errno != 0)
+ ulDrive = strtoul(argv[1], NULL, 10);
+ if (errno != 0)
{
- printf("Error: Malformed drive number\n");
- return(0);
+ printf("Error: Malformed drive number\n");
+ return 0;
}
- /* Check drive number */
- Status = NtQuerySystemInformation(SystemDeviceInformation,
- &DeviceInfo,
- sizeof(SYSTEM_DEVICE_INFORMATION),
- &i);
- if (!NT_SUCCESS(Status))
+ /*
+ * Retrieve the number of disks on the system.
+ */
+ Status = NtQuerySystemInformation(SystemDeviceInformation,
+ &DeviceInfo,
+ sizeof(DeviceInfo),
+ &i);
+ if (!NT_SUCCESS(Status))
{
- printf("NtQuerySystemInformation() failed (Status %lx)\n", Status);
- return(0);
+ printf("NtQuerySystemInformation() failed (Status %lx)\n", Status);
+ return 0;
}
-
- if (DeviceInfo.NumberOfDisks == 0)
+ if (DeviceInfo.NumberOfDisks == 0)
{
- printf("No disk drive installed!\n");
- return(0);
+ printf("No disk drive installed!\n");
+ return 0;
}
- if (ulDrive >= DeviceInfo.NumberOfDisks)
+ if (ulDrive >= DeviceInfo.NumberOfDisks)
{
- printf("Invalid disk drive number! Valid drive numbers [0-%lu]\n",
- DeviceInfo.NumberOfDisks-1);
- return(0);
+ printf("Invalid disk drive number! Valid drive numbers [0-%lu]\n",
+ DeviceInfo.NumberOfDisks-1);
+ return 0;
}
- /* Build full drive name */
- sprintf(DriveName, "\\\\.\\PHYSICALDRIVE%lu", ulDrive);
-
- /* Open drive */
- hDisk = CreateFileA(DriveName,
- GENERIC_READ,
- FILE_SHARE_READ | FILE_SHARE_WRITE,
- NULL,
- OPEN_EXISTING,
- 0,
- NULL);
- if (hDisk == INVALID_HANDLE_VALUE)
+ /* Build the full drive name */
+ sprintf(DriveName, "\\\\.\\PHYSICALDRIVE%lu", ulDrive);
+
+ /* Open the drive */
+ hDisk = CreateFileA(DriveName,
+ GENERIC_READ,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ NULL,
+ OPEN_EXISTING,
+ 0,
+ NULL);
+ if (hDisk == INVALID_HANDLE_VALUE)
{
- printf("Invalid disk handle!");
- return 0;
+ printf("Invalid disk handle!");
+ return 0;
}
- /* Get drive geometry */
- if (!DeviceIoControl(hDisk,
- IOCTL_DISK_GET_DRIVE_GEOMETRY,
- NULL,
- 0,
- &DiskGeometry,
- sizeof(DISK_GEOMETRY),
- &dwRead,
- NULL))
+ /*
+ * Get the drive geometry.
+ */
+ if (!DeviceIoControl(hDisk,
+ IOCTL_DISK_GET_DRIVE_GEOMETRY,
+ NULL,
+ 0,
+ &DiskGeometry,
+ sizeof(DiskGeometry),
+ &dwRead,
+ NULL))
{
- CloseHandle(hDisk);
- printf("DeviceIoControl failed! Error: %lu\n",
- GetLastError());
- return 0;
+ printf("DeviceIoControl(IOCTL_DISK_GET_DRIVE_GEOMETRY) failed! Error:
%lu\n",
+ GetLastError());
+ CloseHandle(hDisk);
+ return 0;
}
#ifdef DUMP_DATA
- HexDump((char*)&DiskGeometry, dwRead);
+ HexDump(&DiskGeometry, dwRead);
+#endif
+ printf("Drive number: %lu\n", ulDrive);
+ printf("Cylinders: %I64u\nMediaType: %x\nTracksPerCylinder: %lu\n"
+ "SectorsPerTrack: %lu\nBytesPerSector: %lu\n\n",
+ DiskGeometry.Cylinders.QuadPart,
+ DiskGeometry.MediaType,
+ DiskGeometry.TracksPerCylinder,
+ DiskGeometry.SectorsPerTrack,
+ DiskGeometry.BytesPerSector);
+
+#if 0 // TODO!
+ /* Get extended drive geometry */
+ // IOCTL_DISK_GET_DRIVE_GEOMETRY_EX
#endif
- printf("Drive number: %lu\n", ulDrive);
- printf("Cylinders: %I64u\nMediaType: %x\nTracksPerCylinder: %lu\n"
- "SectorsPerTrack: %lu\nBytesPerSector: %lu\n\n",
- DiskGeometry.Cylinders.QuadPart,
- DiskGeometry.MediaType,
- DiskGeometry.TracksPerCylinder,
- DiskGeometry.SectorsPerTrack,
- DiskGeometry.BytesPerSector);
-
-
- Buffer = (char*)malloc(8192);
- if (Buffer == NULL)
+
+ /*
+ * Retrieve the legacy partition layout
+ */
+ LayoutBuffer = (PDRIVE_LAYOUT_INFORMATION)malloc(8192);
+ if (LayoutBuffer == NULL)
{
- CloseHandle(hDisk);
- printf("Out of memory!");
- return 0;
+ printf("Out of memory!");
+ CloseHandle(hDisk);
+ return 0;
}
- memset(Buffer, 0, 8192);
-
- if (!DeviceIoControl(hDisk,
- IOCTL_DISK_GET_DRIVE_LAYOUT,
- NULL,
- 0,
- Buffer,
- 8192,
- &dwRead,
- NULL))
+ memset(LayoutBuffer, 0, 8192);
+
+ if (!DeviceIoControl(hDisk,
+ IOCTL_DISK_GET_DRIVE_LAYOUT,
+ NULL,
+ 0,
+ LayoutBuffer,
+ 8192,
+ &dwRead,
+ NULL))
{
- CloseHandle(hDisk);
- printf("DeviceIoControl(IOCTL_DISK_GET_DRIVE_LAYOUT) failed! Error:
%lu\n",
- GetLastError());
- free(Buffer);
- return 0;
+ printf("DeviceIoControl(IOCTL_DISK_GET_DRIVE_LAYOUT) failed! Error:
%lu\n",
+ GetLastError());
+ CloseHandle(hDisk);
+ free(LayoutBuffer);
+ return 0;
}
- CloseHandle(hDisk);
+ CloseHandle(hDisk);
#ifdef DUMP_DATA
- HexDump(Buffer, dwRead);
+ HexDump(LayoutBuffer, dwRead);
#endif
- LayoutBuffer = (DRIVE_LAYOUT_INFORMATION*)Buffer;
-
- printf("Partitions %lu Signature %lx\n",
- LayoutBuffer->PartitionCount,
- LayoutBuffer->Signature);
+ printf("Partitions %lu Signature %lx\n",
+ LayoutBuffer->PartitionCount,
+ LayoutBuffer->Signature);
- for (i = 0; i < LayoutBuffer->PartitionCount; i++)
+ for (i = 0; i < LayoutBuffer->PartitionCount; i++)
{
- printf(" %ld: nr: %ld boot: %1x type: %x start: 0x%I64x count:
0x%I64x\n",
- i,
- LayoutBuffer->PartitionEntry[i].PartitionNumber,
- LayoutBuffer->PartitionEntry[i].BootIndicator,
- LayoutBuffer->PartitionEntry[i].PartitionType,
- LayoutBuffer->PartitionEntry[i].StartingOffset.QuadPart,
- LayoutBuffer->PartitionEntry[i].PartitionLength.QuadPart);
+ printf(" %ld: nr: %ld boot: %1x type: %x start: 0x%I64x count:
0x%I64x\n",
+ i,
+ LayoutBuffer->PartitionEntry[i].PartitionNumber,
+ LayoutBuffer->PartitionEntry[i].BootIndicator,
+ LayoutBuffer->PartitionEntry[i].PartitionType,
+ LayoutBuffer->PartitionEntry[i].StartingOffset.QuadPart,
+ LayoutBuffer->PartitionEntry[i].PartitionLength.QuadPart);
}
- free(Buffer);
+ free(LayoutBuffer);
+
+ // TODO: Retrieve the extended partition layout
- return 0;
+ return 0;
}