- Make kernel build again after __STDC__ change in 42369
[reactos.git] / reactos / ntoskrnl / cc / copy.c
index 39dadb5..723254a 100644 (file)
@@ -24,6 +24,7 @@ static PFN_TYPE CcZeroPage = 0;
 /* void * alloca(size_t size); */
 #elif defined(_MSC_VER)
 void* _alloca(size_t size);
+#define alloca _alloca
 #else
 #error Unknown compiler for alloca intrinsic stack allocation "function"
 #endif
@@ -247,6 +248,17 @@ WriteCacheSegment(PCACHE_SEGMENT CacheSeg)
     {
       Size = CacheSeg->Bcb->CacheSegmentSize;
     }
+    //
+    // Nonpaged pool PDEs in ReactOS must actually be synchronized between the
+    // MmGlobalPageDirectory and the real system PDE directory. What a mess...
+    //
+    {
+        int i = 0;
+        do
+        {
+            MmGetPfnForProcess(NULL, (PVOID)((ULONG_PTR)CacheSeg->BaseAddress + (i << PAGE_SHIFT)));
+        } while (++i < (Size >> PAGE_SHIFT));
+    }
   Mdl = alloca(MmSizeOfMdl(CacheSeg->BaseAddress, Size));
   MmInitializeMdl(Mdl, CacheSeg->BaseAddress, Size);
   MmBuildMdlForNonPagedPool(Mdl);
@@ -271,7 +283,7 @@ WriteCacheSegment(PCACHE_SEGMENT CacheSeg)
 /*
  * @unimplemented
  */
-BOOLEAN STDCALL
+BOOLEAN NTAPI
 CcCanIWrite (
                        IN      PFILE_OBJECT    FileObject,
                        IN      ULONG                   BytesToWrite,
@@ -286,7 +298,7 @@ CcCanIWrite (
 /*
  * @implemented
  */
-BOOLEAN STDCALL
+BOOLEAN NTAPI
 CcCopyRead (IN PFILE_OBJECT FileObject,
            IN PLARGE_INTEGER FileOffset,
            IN ULONG Length,
@@ -404,7 +416,7 @@ CcCopyRead (IN PFILE_OBJECT FileObject,
 /*
  * @implemented
  */
-BOOLEAN STDCALL
+BOOLEAN NTAPI
 CcCopyWrite (IN PFILE_OBJECT FileObject,
             IN PLARGE_INTEGER FileOffset,
             IN ULONG Length,
@@ -515,7 +527,7 @@ CcCopyWrite (IN PFILE_OBJECT FileObject,
  * @unimplemented
  */
 VOID
-STDCALL
+NTAPI
 CcDeferWrite (
        IN      PFILE_OBJECT            FileObject,
        IN      PCC_POST_DEFERRED_WRITE PostRoutine,
@@ -532,7 +544,7 @@ CcDeferWrite (
  * @unimplemented
  */
 VOID
-STDCALL
+NTAPI
 CcFastCopyRead (
     IN  PFILE_OBJECT FileObject,
     IN  ULONG FileOffset,
@@ -548,7 +560,7 @@ CcFastCopyRead (
  * @unimplemented
  */
 VOID
-STDCALL
+NTAPI
 CcFastCopyWrite(
     IN  PFILE_OBJECT FileObject,
     IN  ULONG FileOffset,
@@ -562,7 +574,7 @@ CcFastCopyWrite(
  * @unimplemented
  */
 NTSTATUS
-STDCALL
+NTAPI
 CcWaitForCurrentLazyWriterActivity (
     VOID
     )
@@ -574,7 +586,7 @@ CcWaitForCurrentLazyWriterActivity (
 /*
  * @implemented
  */
-BOOLEAN STDCALL
+BOOLEAN NTAPI
 CcZeroData (IN PFILE_OBJECT     FileObject,
            IN PLARGE_INTEGER   StartOffset,
            IN PLARGE_INTEGER   EndOffset,
@@ -612,7 +624,7 @@ CcZeroData (IN PFILE_OBJECT     FileObject,
            {
              CurrentLength = Length;
            }
-          MmInitializeMdl(Mdl, (PVOID)(ULONG_PTR)WriteOffset.QuadPart, CurrentLength);
+          MmInitializeMdl(Mdl, (PVOID)WriteOffset.u.LowPart, CurrentLength);
          Mdl->MdlFlags |= (MDL_PAGES_LOCKED | MDL_IO_PAGE_READ);
          for (i = 0; i < ((Mdl->Size - sizeof(MDL)) / sizeof(ULONG)); i++)
            {