mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 15:02:59 +00:00
Grrr..it's getting late or something. CORRECT fix.
svn path=/trunk/; revision=15161
This commit is contained in:
parent
261e754d28
commit
4dbcb4368f
1 changed files with 17 additions and 14 deletions
|
@ -2440,7 +2440,7 @@ NtReadFile(IN HANDLE FileHandle,
|
||||||
PIRP Irp = NULL;
|
PIRP Irp = NULL;
|
||||||
PDEVICE_OBJECT DeviceObject;
|
PDEVICE_OBJECT DeviceObject;
|
||||||
PIO_STACK_LOCATION StackPtr;
|
PIO_STACK_LOCATION StackPtr;
|
||||||
KPROCESSOR_MODE PreviousMode;
|
KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
|
||||||
BOOLEAN LocalEvent = FALSE;
|
BOOLEAN LocalEvent = FALSE;
|
||||||
PKEVENT EventObject = NULL;
|
PKEVENT EventObject = NULL;
|
||||||
|
|
||||||
|
@ -2449,7 +2449,6 @@ NtReadFile(IN HANDLE FileHandle,
|
||||||
IoStatusBlock);
|
IoStatusBlock);
|
||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* Validate User-Mode Buffers */
|
/* Validate User-Mode Buffers */
|
||||||
if(PreviousMode != KernelMode)
|
if(PreviousMode != KernelMode)
|
||||||
{
|
{
|
||||||
|
@ -2470,7 +2469,6 @@ NtReadFile(IN HANDLE FileHandle,
|
||||||
|
|
||||||
if(!NT_SUCCESS(Status)) return Status;
|
if(!NT_SUCCESS(Status)) return Status;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Get File Object */
|
/* Get File Object */
|
||||||
Status = ObReferenceObjectByHandle(FileHandle,
|
Status = ObReferenceObjectByHandle(FileHandle,
|
||||||
|
@ -2573,15 +2571,20 @@ NtReadFile(IN HANDLE FileHandle,
|
||||||
Irp->Overlay.AsynchronousParameters.UserApcContext = ApcContext;
|
Irp->Overlay.AsynchronousParameters.UserApcContext = ApcContext;
|
||||||
Irp->Flags |= IRP_READ_OPERATION;
|
Irp->Flags |= IRP_READ_OPERATION;
|
||||||
|
|
||||||
/* FIXME: Somethign weird is going on when I enable this. */
|
#if 0
|
||||||
//if (FileObject->Flags & FO_NO_INTERMEDIATE_BUFFERING) Irp->Flags |= IRP_NOCACHE;
|
/* FIXME: KDBG is using this flag and not reading from cluster-aligned. Investigate */
|
||||||
|
if (FileObject->Flags & FO_NO_INTERMEDIATE_BUFFERING)
|
||||||
|
{
|
||||||
|
DbgBreakPoint();
|
||||||
|
Irp->Flags |= IRP_NOCACHE;
|
||||||
|
DPRINT1("It's us: %p\n", FileObject);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Setup Stack Data */
|
/* Setup Stack Data */
|
||||||
StackPtr = IoGetNextIrpStackLocation(Irp);
|
StackPtr = IoGetNextIrpStackLocation(Irp);
|
||||||
StackPtr->FileObject = FileObject;
|
StackPtr->FileObject = FileObject;
|
||||||
StackPtr->Parameters.Read.Key = Key ? *Key : 0;
|
StackPtr->Parameters.Read.Key = Key ? *Key : 0;
|
||||||
StackPtr->Parameters.Read.Length = Length;
|
|
||||||
StackPtr->Parameters.Read.ByteOffset = *ByteOffset;
|
|
||||||
|
|
||||||
/* Call the Driver */
|
/* Call the Driver */
|
||||||
Status = IoCallDriver(DeviceObject, Irp);
|
Status = IoCallDriver(DeviceObject, Irp);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue