Author: sir_richard
Date: Tue Oct 19 20:23:37 2010
New Revision: 49211
URL: http://svn.reactos.org/svn/reactos?rev=49211&view=rev
Log:
[NTOS]: Go back to using RosMm for the NLS section since supposedly this causes issues on some systems. This is the only actual change in r206/208/209, so if Caemyr's data is correct, this fill fix it.
Modified:
trunk/reactos/ntoskrnl/ex/init.c
trunk/reactos/ntoskrnl/mm/ARM3/procsup.c
Modified: trunk/reactos/ntoskrnl/ex/init.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/init.c?rev=492…
==============================================================================
--- trunk/reactos/ntoskrnl/ex/init.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ex/init.c [iso-8859-1] Tue Oct 19 20:23:37 2010
@@ -296,7 +296,7 @@
NULL,
&SectionSize,
PAGE_READWRITE,
- SEC_COMMIT | 0x1,
+ SEC_COMMIT,
NULL);
if (!NT_SUCCESS(Status))
{
@@ -319,7 +319,7 @@
}
/* Map the NLS Section in system space */
- Status = MmMapViewInSystemSpace((PVOID)((ULONG_PTR)ExpNlsSectionPointer | 0x1),
+ Status = MmMapViewInSystemSpace(ExpNlsSectionPointer,
&SectionBase,
&ExpNlsTableSize);
if (!NT_SUCCESS(Status))
@@ -349,7 +349,7 @@
SectionBase = NULL;
/* Map the section in the system process */
- Status = MmMapViewOfSection((PVOID)((ULONG_PTR)ExpNlsSectionPointer | 0x1),
+ Status = MmMapViewOfSection(ExpNlsSectionPointer,
PsGetCurrentProcess(),
&SectionBase,
0L,
Modified: trunk/reactos/ntoskrnl/mm/ARM3/procsup.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/procsup.c…
==============================================================================
--- trunk/reactos/ntoskrnl/mm/ARM3/procsup.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/ARM3/procsup.c [iso-8859-1] Tue Oct 19 20:23:37 2010
@@ -581,7 +581,7 @@
//
// Map NLS Tables
//
- Status = MmMapViewOfSection((PVOID)((ULONG_PTR)ExpNlsSectionPointer | 0x1),
+ Status = MmMapViewOfSection(ExpNlsSectionPointer,
(PEPROCESS)Process,
&TableBase,
0,
Author: pschweitzer
Date: Tue Oct 19 19:27:28 2010
New Revision: 49210
URL: http://svn.reactos.org/svn/reactos?rev=49210&view=rev
Log:
[DISK]
Hackplemented support for IOCTL_DISK_GET_PARTITION_INFO_EX. It will work fine for MBR partitions but will fake returns for GPT partitions.
Modified:
trunk/reactos/drivers/storage/class/disk/disk.c
Modified: trunk/reactos/drivers/storage/class/disk/disk.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/class/disk…
==============================================================================
--- trunk/reactos/drivers/storage/class/disk/disk.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/storage/class/disk/disk.c [iso-8859-1] Tue Oct 19 19:27:28 2010
@@ -2262,6 +2262,88 @@
break;
+ case IOCTL_DISK_GET_PARTITION_INFO_EX:
+
+ //
+ // Return the information about the partition specified by the device
+ // object. Note that no information is ever returned about the size
+ // or partition type of the physical disk, as this doesn't make any
+ // sense.
+ //
+
+ if (irpStack->Parameters.DeviceIoControl.OutputBufferLength <
+ sizeof(PARTITION_INFORMATION_EX)) {
+
+ status = STATUS_INFO_LENGTH_MISMATCH;
+
+ }
+ else if (diskData->PartitionNumber == 0) {
+
+ //
+ // Paritition zero is not a partition so this is not a
+ // reasonable request.
+ //
+
+ status = STATUS_INVALID_DEVICE_REQUEST;
+
+ }
+ else {
+
+ PPARTITION_INFORMATION_EX outputBuffer;
+
+ //
+ // Update the geometry in case it has changed.
+ //
+
+ status = UpdateRemovableGeometry (DeviceObject, Irp);
+
+ if (!NT_SUCCESS(status)) {
+
+ //
+ // Note the drive is not ready.
+ //
+
+ diskData->DriveNotReady = TRUE;
+ break;
+ }
+
+ //
+ // Note the drive is now ready.
+ //
+
+ diskData->DriveNotReady = FALSE;
+
+ if (diskData->PartitionType == 0 && (diskData->PartitionNumber > 0)) {
+
+ status = STATUS_INVALID_DEVICE_REQUEST;
+ break;
+ }
+
+ outputBuffer =
+ (PPARTITION_INFORMATION_EX)Irp->AssociatedIrp.SystemBuffer;
+
+ //
+ // FIXME: hack of the year, assume that partition is MBR
+ // Thing that can obviously be wrong...
+ //
+
+ outputBuffer->PartitionStyle = PARTITION_STYLE_MBR;
+ outputBuffer->Mbr.PartitionType = diskData->PartitionType;
+ outputBuffer->StartingOffset = deviceExtension->StartingOffset;
+ outputBuffer->PartitionLength.QuadPart = deviceExtension->PartitionLength.QuadPart;
+ outputBuffer->Mbr.HiddenSectors = diskData->HiddenSectors;
+ outputBuffer->PartitionNumber = diskData->PartitionNumber;
+ outputBuffer->Mbr.BootIndicator = diskData->BootIndicator;
+ outputBuffer->RewritePartition = FALSE;
+ outputBuffer->Mbr.RecognizedPartition =
+ IsRecognizedPartition(diskData->PartitionType);
+
+ status = STATUS_SUCCESS;
+ Irp->IoStatus.Information = sizeof(PARTITION_INFORMATION_EX);
+ }
+
+ break;
+
case IOCTL_DISK_SET_PARTITION_INFO:
if (diskData->PartitionNumber == 0) {