mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 11:31:40 +00:00
[NTOS:FSTUB] Minor fixes.
- Some "PartitionInfo->PartitionNumber = 0;" are ROS-specific hacks for xHalIoAssignDriveLetters(), that should be fixed... Mark them as such. - Un-hardcode some "magic" values (partition IDs, max number of partition table entries, etc.). - Use NULL instead of '0' for null-pointers. - Fix some typos in comments.
This commit is contained in:
parent
e3c35c2227
commit
e69f845dab
2 changed files with 39 additions and 37 deletions
|
@ -1661,12 +1661,11 @@ xHalExamineMBR(IN PDEVICE_OBJECT DeviceObject,
|
||||||
*MbrBuffer = NULL;
|
*MbrBuffer = NULL;
|
||||||
|
|
||||||
/* Normalize the buffer size */
|
/* Normalize the buffer size */
|
||||||
BufferSize = max(SectorSize, 512);
|
BufferSize = max(512, SectorSize);
|
||||||
|
|
||||||
/* Allocate the buffer */
|
/* Allocate the buffer */
|
||||||
Buffer = ExAllocatePoolWithTag(NonPagedPool,
|
Buffer = ExAllocatePoolWithTag(NonPagedPool,
|
||||||
PAGE_SIZE > BufferSize ?
|
max(PAGE_SIZE, BufferSize),
|
||||||
PAGE_SIZE : BufferSize,
|
|
||||||
TAG_FILE_SYSTEM);
|
TAG_FILE_SYSTEM);
|
||||||
if (!Buffer) return;
|
if (!Buffer) return;
|
||||||
|
|
||||||
|
@ -1724,22 +1723,23 @@ xHalExamineMBR(IN PDEVICE_OBJECT DeviceObject,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Check if this is a secondary entry */
|
/* Check for OnTrack Disk Manager 6.0 / EZ-Drive partitions */
|
||||||
if (PartitionDescriptor->PartitionType == 0x54)
|
|
||||||
|
if (PartitionDescriptor->PartitionType == PARTITION_DM)
|
||||||
{
|
{
|
||||||
/* Return our buffer, but at sector 63 */
|
/* Return our buffer, but at sector 63 */
|
||||||
*(PULONG)Buffer = 63;
|
*(PULONG)Buffer = 63;
|
||||||
*MbrBuffer = Buffer;
|
*MbrBuffer = Buffer;
|
||||||
}
|
}
|
||||||
else if (PartitionDescriptor->PartitionType == 0x55)
|
else if (PartitionDescriptor->PartitionType == PARTITION_EZDRIVE)
|
||||||
{
|
{
|
||||||
/* EZ Drive, return the buffer directly */
|
/* EZ-Drive, return the buffer directly */
|
||||||
*MbrBuffer = Buffer;
|
*MbrBuffer = Buffer;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Otherwise crash on debug builds */
|
/* Otherwise crash on debug builds */
|
||||||
ASSERT(PartitionDescriptor->PartitionType == 0x55);
|
ASSERT(PartitionDescriptor->PartitionType == PARTITION_EZDRIVE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1805,11 +1805,11 @@ xHalIoReadPartitionTable(IN PDEVICE_OBJECT DeviceObject,
|
||||||
/* Normalize the buffer size */
|
/* Normalize the buffer size */
|
||||||
InputSize = max(512, SectorSize);
|
InputSize = max(512, SectorSize);
|
||||||
|
|
||||||
/* Check for EZ Drive */
|
/* Check for EZ-Drive */
|
||||||
HalExamineMBR(DeviceObject, InputSize, 0x55, &MbrBuffer);
|
HalExamineMBR(DeviceObject, InputSize, PARTITION_EZDRIVE, &MbrBuffer);
|
||||||
if (MbrBuffer)
|
if (MbrBuffer)
|
||||||
{
|
{
|
||||||
/* EZ Drive found, bias the offset */
|
/* EZ-Drive found, bias the offset */
|
||||||
IsEzDrive = TRUE;
|
IsEzDrive = TRUE;
|
||||||
ExFreePoolWithTag(MbrBuffer, TAG_FILE_SYSTEM);
|
ExFreePoolWithTag(MbrBuffer, TAG_FILE_SYSTEM);
|
||||||
Offset.QuadPart = 512;
|
Offset.QuadPart = 512;
|
||||||
|
@ -1911,7 +1911,7 @@ xHalIoReadPartitionTable(IN PDEVICE_OBJECT DeviceObject,
|
||||||
/* Start looping partitions */
|
/* Start looping partitions */
|
||||||
j++;
|
j++;
|
||||||
DPRINT("FSTUB: Partition Table %d:\n", j);
|
DPRINT("FSTUB: Partition Table %d:\n", j);
|
||||||
for (Entry = 1, k = 0; Entry <= 4; Entry++, PartitionDescriptor++)
|
for (Entry = 1, k = 0; Entry <= NUM_PARTITION_TABLE_ENTRIES; Entry++, PartitionDescriptor++)
|
||||||
{
|
{
|
||||||
/* Get the partition type */
|
/* Get the partition type */
|
||||||
PartitionType = PartitionDescriptor->PartitionType;
|
PartitionType = PartitionDescriptor->PartitionType;
|
||||||
|
@ -1993,7 +1993,7 @@ xHalIoReadPartitionTable(IN PDEVICE_OBJECT DeviceObject,
|
||||||
TAG_FILE_SYSTEM);
|
TAG_FILE_SYSTEM);
|
||||||
if (!DriveLayoutInfo)
|
if (!DriveLayoutInfo)
|
||||||
{
|
{
|
||||||
/* Out of memory, unto this extra structure */
|
/* Out of memory, undo this extra structure */
|
||||||
--i;
|
--i;
|
||||||
Status = STATUS_INSUFFICIENT_RESOURCES;
|
Status = STATUS_INSUFFICIENT_RESOURCES;
|
||||||
break;
|
break;
|
||||||
|
@ -2058,6 +2058,7 @@ xHalIoReadPartitionTable(IN PDEVICE_OBJECT DeviceObject,
|
||||||
SectorSize);
|
SectorSize);
|
||||||
|
|
||||||
/* Get the partition number */
|
/* Get the partition number */
|
||||||
|
/* FIXME: REACTOS HACK -- Needed for xHalIoAssignDriveLetters() */
|
||||||
PartitionInfo->PartitionNumber = (!IsContainerPartition(PartitionType)) ? i + 1 : 0;
|
PartitionInfo->PartitionNumber = (!IsContainerPartition(PartitionType)) ? i + 1 : 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -2069,6 +2070,7 @@ xHalIoReadPartitionTable(IN PDEVICE_OBJECT DeviceObject,
|
||||||
PartitionInfo->PartitionLength.QuadPart = 0;
|
PartitionInfo->PartitionLength.QuadPart = 0;
|
||||||
PartitionInfo->HiddenSectors = 0;
|
PartitionInfo->HiddenSectors = 0;
|
||||||
|
|
||||||
|
/* FIXME: REACTOS HACK -- Needed for xHalIoAssignDriveLetters() */
|
||||||
PartitionInfo->PartitionNumber = 0;
|
PartitionInfo->PartitionNumber = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2091,7 +2093,7 @@ xHalIoReadPartitionTable(IN PDEVICE_OBJECT DeviceObject,
|
||||||
/* Go back to the descriptor array and loop it */
|
/* Go back to the descriptor array and loop it */
|
||||||
PartitionDescriptor = (PPARTITION_DESCRIPTOR)
|
PartitionDescriptor = (PPARTITION_DESCRIPTOR)
|
||||||
&(((PUSHORT)Buffer)[PARTITION_TABLE_OFFSET]);
|
&(((PUSHORT)Buffer)[PARTITION_TABLE_OFFSET]);
|
||||||
for (Entry = 1; Entry <= 4; Entry++, PartitionDescriptor++)
|
for (Entry = 1; Entry <= NUM_PARTITION_TABLE_ENTRIES; Entry++, PartitionDescriptor++)
|
||||||
{
|
{
|
||||||
/* Check if this is a container partition, since we skipped them */
|
/* Check if this is a container partition, since we skipped them */
|
||||||
if (IsContainerPartition(PartitionDescriptor->PartitionType))
|
if (IsContainerPartition(PartitionDescriptor->PartitionType))
|
||||||
|
@ -2163,7 +2165,7 @@ xHalIoReadPartitionTable(IN PDEVICE_OBJECT DeviceObject,
|
||||||
PartitionInfo->StartingOffset.QuadPart = 0;
|
PartitionInfo->StartingOffset.QuadPart = 0;
|
||||||
PartitionInfo->PartitionLength = DiskGeometryEx.DiskSize;
|
PartitionInfo->PartitionLength = DiskGeometryEx.DiskSize;
|
||||||
|
|
||||||
/* FIXME: REACTOS HACK */
|
/* FIXME: REACTOS HACK -- Needed for xHalIoAssignDriveLetters() */
|
||||||
PartitionInfo->PartitionNumber = 0;
|
PartitionInfo->PartitionNumber = 0;
|
||||||
|
|
||||||
/* Set the signature and set the count back to 0 */
|
/* Set the signature and set the count back to 0 */
|
||||||
|
@ -2224,11 +2226,11 @@ xHalIoSetPartitionInformation(IN PDEVICE_OBJECT DeviceObject,
|
||||||
/* Normalize the buffer size */
|
/* Normalize the buffer size */
|
||||||
BufferSize = max(512, SectorSize);
|
BufferSize = max(512, SectorSize);
|
||||||
|
|
||||||
/* Check for EZ Drive */
|
/* Check for EZ-Drive */
|
||||||
HalExamineMBR(DeviceObject, BufferSize, 0x55, &MbrBuffer);
|
HalExamineMBR(DeviceObject, BufferSize, PARTITION_EZDRIVE, &MbrBuffer);
|
||||||
if (MbrBuffer)
|
if (MbrBuffer)
|
||||||
{
|
{
|
||||||
/* EZ Drive found, bias the offset */
|
/* EZ-Drive found, bias the offset */
|
||||||
IsEzDrive = TRUE;
|
IsEzDrive = TRUE;
|
||||||
ExFreePoolWithTag(MbrBuffer, TAG_FILE_SYSTEM);
|
ExFreePoolWithTag(MbrBuffer, TAG_FILE_SYSTEM);
|
||||||
Offset.QuadPart = 512;
|
Offset.QuadPart = 512;
|
||||||
|
@ -2290,7 +2292,7 @@ xHalIoSetPartitionInformation(IN PDEVICE_OBJECT DeviceObject,
|
||||||
/* Get the partition descriptors and loop them */
|
/* Get the partition descriptors and loop them */
|
||||||
PartitionDescriptor = (PPARTITION_DESCRIPTOR)
|
PartitionDescriptor = (PPARTITION_DESCRIPTOR)
|
||||||
&(((PUSHORT)Buffer)[PARTITION_TABLE_OFFSET]);
|
&(((PUSHORT)Buffer)[PARTITION_TABLE_OFFSET]);
|
||||||
for (Entry = 1; Entry <= 4; Entry++, PartitionDescriptor++)
|
for (Entry = 1; Entry <= NUM_PARTITION_TABLE_ENTRIES; Entry++, PartitionDescriptor++)
|
||||||
{
|
{
|
||||||
/* Check if it's unused or a container partition */
|
/* Check if it's unused or a container partition */
|
||||||
if ((PartitionDescriptor->PartitionType == PARTITION_ENTRY_UNUSED) ||
|
if ((PartitionDescriptor->PartitionType == PARTITION_ENTRY_UNUSED) ||
|
||||||
|
@ -2352,7 +2354,7 @@ xHalIoSetPartitionInformation(IN PDEVICE_OBJECT DeviceObject,
|
||||||
/* Nothing found yet, get the partition array again */
|
/* Nothing found yet, get the partition array again */
|
||||||
PartitionDescriptor = (PPARTITION_DESCRIPTOR)
|
PartitionDescriptor = (PPARTITION_DESCRIPTOR)
|
||||||
&(((PUSHORT)Buffer)[PARTITION_TABLE_OFFSET]);
|
&(((PUSHORT)Buffer)[PARTITION_TABLE_OFFSET]);
|
||||||
for (Entry = 1; Entry <= 4; Entry++, PartitionDescriptor++)
|
for (Entry = 1; Entry <= NUM_PARTITION_TABLE_ENTRIES; Entry++, PartitionDescriptor++)
|
||||||
{
|
{
|
||||||
/* Check if this was a container partition (we skipped these) */
|
/* Check if this was a container partition (we skipped these) */
|
||||||
if (IsContainerPartition(PartitionDescriptor->PartitionType))
|
if (IsContainerPartition(PartitionDescriptor->PartitionType))
|
||||||
|
@ -2425,11 +2427,11 @@ xHalIoWritePartitionTable(IN PDEVICE_OBJECT DeviceObject,
|
||||||
/* Get the partial drive geometry */
|
/* Get the partial drive geometry */
|
||||||
xHalGetPartialGeometry(DeviceObject, &ConventionalCylinders, &DiskSize);
|
xHalGetPartialGeometry(DeviceObject, &ConventionalCylinders, &DiskSize);
|
||||||
|
|
||||||
/* Check for EZ Drive */
|
/* Check for EZ-Drive */
|
||||||
HalExamineMBR(DeviceObject, BufferSize, 0x55, &MbrBuffer);
|
HalExamineMBR(DeviceObject, BufferSize, PARTITION_EZDRIVE, &MbrBuffer);
|
||||||
if (MbrBuffer)
|
if (MbrBuffer)
|
||||||
{
|
{
|
||||||
/* EZ Drive found, bias the offset */
|
/* EZ-Drive found, bias the offset */
|
||||||
IsEzDrive = TRUE;
|
IsEzDrive = TRUE;
|
||||||
ExFreePoolWithTag(MbrBuffer, TAG_FILE_SYSTEM);
|
ExFreePoolWithTag(MbrBuffer, TAG_FILE_SYSTEM);
|
||||||
Offset.QuadPart = 512;
|
Offset.QuadPart = 512;
|
||||||
|
@ -2457,14 +2459,14 @@ xHalIoWritePartitionTable(IN PDEVICE_OBJECT DeviceObject,
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if it needs a rewrite, and disable EZ drive for sure */
|
/* Check if it needs a rewrite, and disable EZ-Drive for sure */
|
||||||
if (PartitionInfo->RewritePartition) DoRewrite = TRUE;
|
if (PartitionInfo->RewritePartition) DoRewrite = TRUE;
|
||||||
IsEzDrive = FALSE;
|
IsEzDrive = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Count the number of partition tables */
|
/* Count the number of partition tables */
|
||||||
DiskLayout->TableCount = (PartitionBuffer->PartitionCount + 4 - 1) / 4;
|
DiskLayout->TableCount = (PartitionBuffer->PartitionCount + NUM_PARTITION_TABLE_ENTRIES - 1) / NUM_PARTITION_TABLE_ENTRIES;
|
||||||
|
|
||||||
/* Allocate our partition buffer */
|
/* Allocate our partition buffer */
|
||||||
Buffer = ExAllocatePoolWithTag(NonPagedPool, PAGE_SIZE, TAG_FILE_SYSTEM);
|
Buffer = ExAllocatePoolWithTag(NonPagedPool, PAGE_SIZE, TAG_FILE_SYSTEM);
|
||||||
|
@ -2539,7 +2541,7 @@ xHalIoWritePartitionTable(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
|
||||||
/* Loop the partition table entries */
|
/* Loop the partition table entries */
|
||||||
PartitionTable = &DiskLayout->PartitionTable[i];
|
PartitionTable = &DiskLayout->PartitionTable[i];
|
||||||
for (j = 0; j < 4; j++)
|
for (j = 0; j < NUM_PARTITION_TABLE_ENTRIES; j++)
|
||||||
{
|
{
|
||||||
/* Get the current entry and type */
|
/* Get the current entry and type */
|
||||||
TableEntry = &PartitionTable->PartitionEntry[j];
|
TableEntry = &PartitionTable->PartitionEntry[j];
|
||||||
|
|
|
@ -201,7 +201,7 @@ NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
FstubAllocateDiskInformation(IN PDEVICE_OBJECT DeviceObject,
|
FstubAllocateDiskInformation(IN PDEVICE_OBJECT DeviceObject,
|
||||||
OUT PDISK_INFORMATION * DiskBuffer,
|
OUT PDISK_INFORMATION * DiskBuffer,
|
||||||
PDISK_GEOMETRY_EX DiskGeometry OPTIONAL)
|
IN PDISK_GEOMETRY_EX DiskGeometry OPTIONAL)
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PDISK_INFORMATION DiskInformation;
|
PDISK_INFORMATION DiskInformation;
|
||||||
|
@ -340,7 +340,7 @@ FstubCreateDiskMBR(IN PDEVICE_OBJECT DeviceObject,
|
||||||
ASSERT(DeviceObject);
|
ASSERT(DeviceObject);
|
||||||
|
|
||||||
/* Allocate internal structure */
|
/* Allocate internal structure */
|
||||||
Status = FstubAllocateDiskInformation(DeviceObject, &Disk, 0);
|
Status = FstubAllocateDiskInformation(DeviceObject, &Disk, NULL);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
return Status;
|
return Status;
|
||||||
|
@ -359,7 +359,7 @@ FstubCreateDiskMBR(IN PDEVICE_OBJECT DeviceObject,
|
||||||
/* Fill the buffer with needed information, we won't overwrite boot code */
|
/* Fill the buffer with needed information, we won't overwrite boot code */
|
||||||
MasterBootRecord = (PMASTER_BOOT_RECORD)Disk->Buffer;
|
MasterBootRecord = (PMASTER_BOOT_RECORD)Disk->Buffer;
|
||||||
MasterBootRecord->Signature = DiskInfo->Signature;
|
MasterBootRecord->Signature = DiskInfo->Signature;
|
||||||
RtlZeroMemory(MasterBootRecord->PartitionTable, sizeof(PARTITION_TABLE_ENTRY) * 4);
|
RtlZeroMemory(MasterBootRecord->PartitionTable, sizeof(PARTITION_TABLE_ENTRY) * NUM_PARTITION_TABLE_ENTRIES);
|
||||||
MasterBootRecord->MasterBootRecordMagic = BOOT_RECORD_SIGNATURE;
|
MasterBootRecord->MasterBootRecordMagic = BOOT_RECORD_SIGNATURE;
|
||||||
|
|
||||||
/* Finally, write MBR */
|
/* Finally, write MBR */
|
||||||
|
@ -388,7 +388,7 @@ FstubCreateDiskEFI(IN PDEVICE_OBJECT DeviceObject,
|
||||||
ASSERT(DiskInfo);
|
ASSERT(DiskInfo);
|
||||||
|
|
||||||
/* Allocate internal structure */
|
/* Allocate internal structure */
|
||||||
Status = FstubAllocateDiskInformation(DeviceObject, &Disk, 0);
|
Status = FstubAllocateDiskInformation(DeviceObject, &Disk, NULL);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
return Status;
|
return Status;
|
||||||
|
@ -454,7 +454,7 @@ FstubCreateDiskRaw(IN PDEVICE_OBJECT DeviceObject)
|
||||||
ASSERT(DeviceObject);
|
ASSERT(DeviceObject);
|
||||||
|
|
||||||
/* Allocate internal structure */
|
/* Allocate internal structure */
|
||||||
Status = FstubAllocateDiskInformation(DeviceObject, &Disk, 0);
|
Status = FstubAllocateDiskInformation(DeviceObject, &Disk, NULL);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
return Status;
|
return Status;
|
||||||
|
@ -2030,7 +2030,7 @@ IoGetBootDiskInformation(IN OUT PBOOTDISK_INFORMATION BootDiskInformation,
|
||||||
/* If called passed a BOOTDISK_INFORMATION_EX structure, give more intel */
|
/* If called passed a BOOTDISK_INFORMATION_EX structure, give more intel */
|
||||||
if (IsBootDiskInfoEx)
|
if (IsBootDiskInfoEx)
|
||||||
{
|
{
|
||||||
/* Is PT MBR or GPT? */
|
/* Is partition style MBR or GPT? */
|
||||||
if (DriveLayout->PartitionStyle == PARTITION_STYLE_GPT)
|
if (DriveLayout->PartitionStyle == PARTITION_STYLE_GPT)
|
||||||
{
|
{
|
||||||
((PBOOTDISK_INFORMATION_EX)BootDiskInformation)->BootDeviceGuid = DriveLayout->Gpt.DiskId;
|
((PBOOTDISK_INFORMATION_EX)BootDiskInformation)->BootDeviceGuid = DriveLayout->Gpt.DiskId;
|
||||||
|
@ -2101,7 +2101,7 @@ IoGetBootDiskInformation(IN OUT PBOOTDISK_INFORMATION BootDiskInformation,
|
||||||
/* If called passed a BOOTDISK_INFORMATION_EX structure, give more intel */
|
/* If called passed a BOOTDISK_INFORMATION_EX structure, give more intel */
|
||||||
if (IsBootDiskInfoEx)
|
if (IsBootDiskInfoEx)
|
||||||
{
|
{
|
||||||
/* Is PT MBR or GPT? */
|
/* Is partition style MBR or GPT? */
|
||||||
if (DriveLayout->PartitionStyle == PARTITION_STYLE_GPT)
|
if (DriveLayout->PartitionStyle == PARTITION_STYLE_GPT)
|
||||||
{
|
{
|
||||||
((PBOOTDISK_INFORMATION_EX)BootDiskInformation)->SystemDeviceGuid = DriveLayout->Gpt.DiskId;
|
((PBOOTDISK_INFORMATION_EX)BootDiskInformation)->SystemDeviceGuid = DriveLayout->Gpt.DiskId;
|
||||||
|
@ -2254,14 +2254,14 @@ IoReadPartitionTableEx(IN PDEVICE_OBJECT DeviceObject,
|
||||||
ASSERT(DriveLayout);
|
ASSERT(DriveLayout);
|
||||||
|
|
||||||
/* First of all, allocate internal structure */
|
/* First of all, allocate internal structure */
|
||||||
Status = FstubAllocateDiskInformation(DeviceObject, &Disk, 0);
|
Status = FstubAllocateDiskInformation(DeviceObject, &Disk, NULL);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
ASSERT(Disk);
|
ASSERT(Disk);
|
||||||
|
|
||||||
/* Then, detect partition style (MBR? GTP/EFI? RAW?) */
|
/* Then, detect partition style (MBR? GPT/EFI? RAW?) */
|
||||||
Status = FstubDetectPartitionStyle(Disk, &PartitionStyle);
|
Status = FstubDetectPartitionStyle(Disk, &PartitionStyle);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
|
@ -2444,7 +2444,7 @@ IoWritePartitionTableEx(IN PDEVICE_OBJECT DeviceObject,
|
||||||
FstubDbgPrintDriveLayoutEx(DriveLayout);
|
FstubDbgPrintDriveLayoutEx(DriveLayout);
|
||||||
|
|
||||||
/* Allocate internal structure */
|
/* Allocate internal structure */
|
||||||
Status = FstubAllocateDiskInformation(DeviceObject, &Disk, 0);
|
Status = FstubAllocateDiskInformation(DeviceObject, &Disk, NULL);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
return Status;
|
return Status;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue