KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL);
Status = IoStatus.Status;
}
- if (!NT_SUCCESS(Status))
+ if (!NT_SUCCESS(Status) && (Status != STATUS_END_OF_FILE))
{
DPRINT1("IoPageWrite failed, Status %x\n", Status);
CacheSeg->Dirty = TRUE;
FileObject, (ULONG)FileOffset->QuadPart, Length, Wait,
Buffer, IoStatus);
- Bcb = ((REACTOS_COMMON_FCB_HEADER*)FileObject->FsContext)->Bcb;
+ Bcb = FileObject->SectionObjectPointers->SharedCacheMap;
ReadOffset = FileOffset->QuadPart;
DPRINT("AllocationSize %d, FileSize %d\n",
"Length %d, Wait %d, Buffer %x)\n",
FileObject, (ULONG)FileOffset->QuadPart, Length, Wait, Buffer);
- Bcb = ((REACTOS_COMMON_FCB_HEADER*)FileObject->FsContext)->Bcb;
+ Bcb = FileObject->SectionObjectPointers->SharedCacheMap;
WriteOffset = (ULONG)FileOffset->QuadPart;
if (!Wait)
Length = EndOffset->u.LowPart - StartOffset->u.LowPart;
- /*
- * FIXME: NT uses the shared cache map field for cached/non cached detection
- */
if (FileObject->SectionObjectPointers->SharedCacheMap == NULL)
{
/* File is not cached */
PHYSICAL_ADDRESS page;
Start = StartOffset->u.LowPart;
- Bcb = ((REACTOS_COMMON_FCB_HEADER*)FileObject->FsContext)->Bcb;
+ Bcb = FileObject->SectionObjectPointers->SharedCacheMap;
if (Wait)
{
/* testing, if the requested datas are available */