[KMTESTS:MM]
[reactos.git] / rostests / kmtests / ntos_mm / NtCreateSection_drv.c
index 61ec9e2..f5082b2 100644 (file)
@@ -381,6 +381,14 @@ TestIrpHandler(
             }
             else
             {
+                PMDL Mdl;
+
+                Mdl = Irp->MdlAddress;
+                ok(Mdl != NULL, "Null pointer for MDL!\n");
+                ok((Mdl->MdlFlags & MDL_PAGES_LOCKED) != 0, "MDL not locked\n");
+                ok((Mdl->MdlFlags & MDL_SOURCE_IS_NONPAGED_POOL) == 0, "MDL from non paged\n");
+                ok((Irp->Flags & IRP_PAGING_IO) != 0, "Non paging IO\n");
+
                 Status = STATUS_SUCCESS;
             }
 
@@ -404,7 +412,8 @@ TestIrpHandler(
     {
         Fcb = IoStack->FileObject->FsContext;
         ok(Fcb != NULL, "Null pointer!\n");
-        if (IoStack->FileObject->PrivateCacheMap != NULL)
+        if (IoStack->FileObject->SectionObjectPointer != NULL &&
+            IoStack->FileObject->SectionObjectPointer->SharedCacheMap != NULL)
         {
             CcFlushCache(&Fcb->SectionObjectPointers, NULL, 0, NULL);
             CcPurgeCacheSection(&Fcb->SectionObjectPointers, NULL, 0, FALSE);
@@ -472,16 +481,30 @@ TestIrpHandler(
             }
             else
             {
+                ULONG TestSize = 0;
+
                 ok(EOFInfo != NULL, "Null pointer!\n");
                 ok(Fcb != NULL, "Null pointer!\n");
                 ok_bool_false(IoStack->Parameters.SetFile.AdvanceOnly, "AdvanceOnly set!\n");
                 ok(EOFInfo->EndOfFile.QuadPart > Fcb->Header.AllocationSize.QuadPart, "New size smaller\n");
 
+                if (Fcb->Header.AllocationSize.QuadPart != 0)
+                {
+                    TestSize = 512;
+                }
+
+                Fcb->Header.AllocationSize.QuadPart = EOFInfo->EndOfFile.QuadPart;
+                ok_eq_ulong(Fcb->Header.FileSize.QuadPart, TestSize);
+                ok_eq_ulong(Fcb->Header.ValidDataLength.QuadPart, TestSize);
+
                 if (CcIsFileCached(IoStack->FileObject))
                 {
                     CcSetFileSizes(IoStack->FileObject, (PCC_FILE_SIZES)(&(Fcb->Header.AllocationSize)));
                 }
 
+                ok_eq_ulong(Fcb->Header.FileSize.QuadPart, TestSize);
+                ok_eq_ulong(Fcb->Header.ValidDataLength.QuadPart, TestSize);
+
                 Status = STATUS_SUCCESS;
             }
         }