Index: dll/win32/kernel32/client/file/rw.c
===================================================================
--- dll/win32/kernel32/client/file/rw.c	(Revision 67464)
+++ dll/win32/kernel32/client/file/rw.c	(Arbeitskopie)
@@ -131,7 +131,6 @@
     TRACE("ReadFile(hFile %p)\n", hFile);
 
     if (lpNumberOfBytesRead != NULL) *lpNumberOfBytesRead = 0;
-    if (!nNumberOfBytesToRead) return TRUE;
 
     hFile = TranslateStdHandle(hFile);
 
Index: drivers/filesystems/fastfat/rw.c
===================================================================
--- drivers/filesystems/fastfat/rw.c	(Revision 67464)
+++ drivers/filesystems/fastfat/rw.c	(Arbeitskopie)
@@ -599,10 +599,22 @@
        goto ByeBye;
     }
 
+    if (Length == 0)
+    {
+        IrpContext->Irp->IoStatus.Information = 0;
+
+        Status = STATUS_SUCCESS;
+        IrpContext->Irp->UserIosb->Information = 0;
+        goto ByeBye;
+    }
+
     if (ByteOffset.QuadPart >= Fcb->RFCB.FileSize.QuadPart)
     {
        IrpContext->Irp->IoStatus.Information = 0;
+
        Status = STATUS_END_OF_FILE;
+       IrpContext->Irp->UserIosb->Status = STATUS_END_OF_FILE;
+       IrpContext->Irp->UserIosb->Information = 0;
        goto ByeBye;
     }
 
@@ -617,13 +629,6 @@
         }
     }
 
-    if (Length == 0)
-    {
-        IrpContext->Irp->IoStatus.Information = 0;
-        Status = STATUS_SUCCESS;
-        goto ByeBye;
-    }
-
     if (Fcb->Flags & FCB_IS_VOLUME)
     {
         Resource = &IrpContext->DeviceExt->DirResource;
