[NTOSKRNL]
[reactos.git] / reactos / ntoskrnl / cc / fs.c
index b4c3b1d..4feb125 100644 (file)
@@ -38,6 +38,10 @@ CcGetDirtyPages (
     IN PVOID Context2)
 {
     LARGE_INTEGER i;
+
+    CCTRACE(CC_API_DEBUG, "LogHandle=%p DirtyPageRoutine=%p Context1=%p Context2=%p\n",
+        LogHandle, DirtyPageRoutine, Context1, Context2);
+
     UNIMPLEMENTED;
     i.QuadPart = 0;
     return i;
@@ -52,6 +56,9 @@ CcGetFileObjectFromBcb (
     IN PVOID Bcb)
 {
     PINTERNAL_BCB iBcb = (PINTERNAL_BCB)Bcb;
+
+    CCTRACE(CC_API_DEBUG, "Bcb=%p\n", Bcb);
+
     return iBcb->Vacb->SharedCacheMap->FileObject;
 }
 
@@ -65,6 +72,9 @@ CcGetLsnForFileObject (
     OUT PLARGE_INTEGER OldestLsn OPTIONAL)
 {
     LARGE_INTEGER i;
+
+    CCTRACE(CC_API_DEBUG, "FileObject=%p\n", FileObject);
+
     UNIMPLEMENTED;
     i.QuadPart = 0;
     return i;
@@ -82,14 +92,22 @@ CcInitializeCacheMap (
     IN PCACHE_MANAGER_CALLBACKS CallBacks,
     IN PVOID LazyWriterContext)
 {
+    NTSTATUS Status;
+
     ASSERT(FileObject);
     ASSERT(FileSizes);
 
+    CCTRACE(CC_API_DEBUG, "FileObject=%p FileSizes=%p PinAccess=%d CallBacks=%p LazyWriterContext=%p\n",
+        FileObject, FileSizes, PinAccess, CallBacks, LazyWriterContext);
+
     /* Call old ROS cache init function */
-    CcRosInitializeFileCache(FileObject,
-                             FileSizes,
-                             CallBacks,
-                             LazyWriterContext);
+    Status = CcRosInitializeFileCache(FileObject,
+                                      FileSizes,
+                                      PinAccess,
+                                      CallBacks,
+                                      LazyWriterContext);
+    if (!NT_SUCCESS(Status))
+        ExRaiseStatus(Status);
 }
 
 /*
@@ -100,6 +118,8 @@ NTAPI
 CcIsThereDirtyData (
     IN PVPB Vpb)
 {
+    CCTRACE(CC_API_DEBUG, "Vpb=%p\n", Vpb);
+
     UNIMPLEMENTED;
     return FALSE;
 }
@@ -115,6 +135,9 @@ CcPurgeCacheSection (
     IN ULONG Length,
     IN BOOLEAN UninitializeCacheMaps)
 {
+    CCTRACE(CC_API_DEBUG, "SectionObjectPointer=%p\n FileOffset=%p Length=%lu UninitializeCacheMaps=%d",
+        SectionObjectPointer, FileOffset, Length, UninitializeCacheMaps);
+
     //UNIMPLEMENTED;
     return FALSE;
 }
@@ -135,6 +158,9 @@ CcSetFileSizes (
     LIST_ENTRY FreeListHead;
     NTSTATUS Status;
 
+    CCTRACE(CC_API_DEBUG, "FileObject=%p FileSizes=%p\n",
+        FileObject, FileSizes);
+
     DPRINT("CcSetFileSizes(FileObject 0x%p, FileSizes 0x%p)\n",
            FileObject, FileSizes);
     DPRINT("AllocationSize %I64d, FileSize %I64d, ValidDataLength %I64d\n",
@@ -222,6 +248,9 @@ CcSetLogHandleForFile (
     IN PVOID LogHandle,
     IN PFLUSH_TO_LSN FlushToLsnRoutine)
 {
+    CCTRACE(CC_API_DEBUG, "FileObject=%p LogHandle=%p FlushToLsnRoutine=%p\n",
+        FileObject, LogHandle, FlushToLsnRoutine);
+
     UNIMPLEMENTED;
 }
 
@@ -235,12 +264,15 @@ CcUninitializeCacheMap (
     IN PLARGE_INTEGER TruncateSize OPTIONAL,
     IN PCACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent OPTIONAL)
 {
-#if 0
-    UNIMPLEMENTED;
-    return FALSE;
-#else
-    return NT_SUCCESS(CcRosReleaseFileCache(FileObject));
-#endif
+    NTSTATUS Status;
+
+    CCTRACE(CC_API_DEBUG, "FileObject=%p TruncateSize=%p UninitializeCompleteEvent=%p\n",
+        FileObject, TruncateSize, UninitializeCompleteEvent);
+
+    Status = CcRosReleaseFileCache(FileObject);
+    if (UninitializeCompleteEvent)
+        KeSetEvent(&UninitializeCompleteEvent->Event, IO_NO_INCREMENT, FALSE);
+    return NT_SUCCESS(Status);
 }
 
 BOOLEAN