- 64 bit fixes for Mm routines: Use SIZE_T and ULONG_PTR where appropriate
authorStefan Ginsberg <stefanginsberg@gmail.com>
Wed, 24 Sep 2008 15:27:54 +0000 (15:27 +0000)
committerStefan Ginsberg <stefanginsberg@gmail.com>
Wed, 24 Sep 2008 15:27:54 +0000 (15:27 +0000)
- Note: MSDN is wrong about Nt/ZwAllocateVirtualMemory's ZeroBits. It really is a ULONG_PTR.

svn path=/trunk/; revision=36484

reactos/include/ddk/ntifs.h
reactos/include/ndk/mmfuncs.h
reactos/ntoskrnl/mm/anonmem.c
reactos/ntoskrnl/mm/section.c
reactos/ntoskrnl/mm/virtual.c

index 5fa32bb..28b7555 100644 (file)
@@ -4870,7 +4870,7 @@ NTAPI
 ZwAllocateVirtualMemory (
     IN HANDLE       ProcessHandle,
     IN OUT PVOID    *BaseAddress,
-    IN ULONG        ZeroBits,
+    IN ULONG_PTR    ZeroBits,
     IN OUT PSIZE_T  RegionSize,
     IN ULONG        AllocationType,
     IN ULONG        Protect
index 31c6525..a1c7e8b 100644 (file)
@@ -48,8 +48,8 @@ MmMapViewOfSection(
     IN PVOID SectionObject,
     IN PEPROCESS Process,
     IN OUT PVOID *BaseAddress,
-    IN ULONG ZeroBits,
-    IN ULONG CommitSize,
+    IN ULONG_PTR ZeroBits,
+    IN SIZE_T CommitSize,
     IN OUT PLARGE_INTEGER SectionOffset OPTIONAL,
     IN OUT PSIZE_T ViewSize,
     IN SECTION_INHERIT InheritDisposition,
@@ -81,8 +81,8 @@ NTSTATUS
 NTAPI
 NtAllocateUserPhysicalPages(
     IN HANDLE ProcessHandle,
-    IN OUT PULONG NumberOfPages,
-    IN OUT PULONG UserPfnArray
+    IN OUT PULONG_PTR NumberOfPages,
+    IN OUT PULONG_PTR UserPfnArray
 );
 
 NTSYSCALLAPI
@@ -91,7 +91,7 @@ NTAPI
 NtAllocateVirtualMemory(
     IN HANDLE ProcessHandle,
     IN OUT PVOID *BaseAddress,
-    IN ULONG ZeroBits,
+    IN ULONG_PTR ZeroBits,
     IN OUT PSIZE_T RegionSize,
     IN ULONG AllocationType,
     IN ULONG Protect
@@ -142,8 +142,8 @@ NTSTATUS
 NTAPI
 NtFreeUserPhysicalPages(
     IN HANDLE ProcessHandle,
-    IN OUT PULONG NumberOfPages,
-    IN OUT PULONG UserPfnArray
+    IN OUT PULONG_PTR NumberOfPages,
+    IN OUT PULONG_PTR UserPfnArray
 );
 
 NTSYSCALLAPI
@@ -163,9 +163,9 @@ NtGetWriteWatch(
     IN HANDLE ProcessHandle,
     IN ULONG Flags,
     IN PVOID BaseAddress,
-    IN ULONG RegionSize,
+    IN SIZE_T RegionSize,
     IN PVOID *UserAddressArray,
-    OUT PULONG EntriesInUserAddressArray,
+    OUT PULONG_PTR EntriesInUserAddressArray,
     OUT PULONG Granularity
 );
 
@@ -175,24 +175,24 @@ NTAPI
 NtLockVirtualMemory(
     HANDLE ProcessHandle,
     PVOID BaseAddress,
-    ULONG NumberOfBytesToLock,
-    PULONG NumberOfBytesLocked
+    SIZE_T NumberOfBytesToLock,
+    PSIZE_T NumberOfBytesLocked
 );
 
 NTSTATUS
 NTAPI
 NtMapUserPhysicalPages(
     IN PVOID VirtualAddresses,
-    IN ULONG NumberOfPages,
-    IN OUT PULONG UserPfnArray
+    IN ULONG_PTR NumberOfPages,
+    IN OUT PULONG_PTR UserPfnArray
 );
 
 NTSTATUS
 NTAPI
 NtMapUserPhysicalPagesScatter(
     IN PVOID *VirtualAddresses,
-    IN ULONG NumberOfPages,
-    IN OUT PULONG UserPfnArray
+    IN ULONG_PTR NumberOfPages,
+    IN OUT PULONG_PTR UserPfnArray
 );
 
 NTSYSCALLAPI
@@ -202,8 +202,8 @@ NtMapViewOfSection(
     IN HANDLE SectionHandle,
     IN HANDLE ProcessHandle,
     IN OUT PVOID *BaseAddress,
-    IN ULONG ZeroBits,
-    IN ULONG CommitSize,
+    IN ULONG_PTR ZeroBits,
+    IN SIZE_T CommitSize,
     IN OUT PLARGE_INTEGER SectionOffset OPTIONAL,
     IN OUT PSIZE_T ViewSize,
     IN SECTION_INHERIT InheritDisposition,
@@ -226,7 +226,7 @@ NTAPI
 NtProtectVirtualMemory(
     IN HANDLE ProcessHandle,
     IN PVOID *BaseAddress,
-    IN ULONG *NumberOfBytesToProtect,
+    IN SIZE_T *NumberOfBytesToProtect,
     IN ULONG NewAccessProtection,
     OUT PULONG OldAccessProtection
 );
@@ -316,7 +316,7 @@ NTAPI
 ZwAllocateVirtualMemory(
     IN HANDLE ProcessHandle,
     IN OUT PVOID *BaseAddress,
-    IN ULONG ZeroBits,
+    IN ULONG_PTR ZeroBits,
     IN OUT PSIZE_T RegionSize,
     IN ULONG AllocationType,
     IN ULONG Protect
@@ -380,8 +380,8 @@ ZwMapViewOfSection(
     IN HANDLE SectionHandle,
     IN HANDLE ProcessHandle,
     IN OUT PVOID *BaseAddress,
-    IN ULONG ZeroBits,
-    IN ULONG CommitSize,
+    IN ULONG_PTR ZeroBits,
+    IN SIZE_T CommitSize,
     IN OUT PLARGE_INTEGER SectionOffset OPTIONAL,
     IN OUT PSIZE_T ViewSize,
     IN SECTION_INHERIT InheritDisposition,
@@ -404,7 +404,7 @@ NTAPI
 ZwProtectVirtualMemory(
     IN HANDLE ProcessHandle,
     IN PVOID *BaseAddress,
-    IN ULONG *NumberOfBytesToProtect,
+    IN SIZE_T *NumberOfBytesToProtect,
     IN ULONG NewAccessProtection,
     OUT PULONG OldAccessProtection
 );
@@ -468,8 +468,8 @@ ZwWriteVirtualMemory(
     IN HANDLE ProcessHandle,
     IN PVOID  BaseAddress,
     IN PVOID Buffer,
-    IN ULONG NumberOfBytesToWrite,
-    OUT PULONG NumberOfBytesWritten
+    IN SIZE_T NumberOfBytesToWrite,
+    OUT PSIZE_T NumberOfBytesWritten
 );
 
 #endif
index 967e749..ddda8b8 100644 (file)
@@ -522,7 +522,7 @@ MmModifyAttributes(PMM_AVL_TABLE AddressSpace,
 NTSTATUS STDCALL
 NtAllocateVirtualMemory(IN     HANDLE ProcessHandle,
                         IN OUT PVOID* UBaseAddress,
-                        IN     ULONG  ZeroBits,
+                        IN     ULONG_PTR  ZeroBits,
                         IN OUT PSIZE_T URegionSize,
                         IN     ULONG  AllocationType,
                         IN     ULONG  Protect)
index fd4ec51..d439803 100644 (file)
@@ -3662,8 +3662,8 @@ NTSTATUS STDCALL
 NtMapViewOfSection(IN HANDLE SectionHandle,
                    IN HANDLE ProcessHandle,
                    IN OUT PVOID* BaseAddress  OPTIONAL,
-                   IN ULONG ZeroBits  OPTIONAL,
-                   IN ULONG CommitSize,
+                   IN ULONG_PTR ZeroBits  OPTIONAL,
+                   IN SIZE_T CommitSize,
                    IN OUT PLARGE_INTEGER SectionOffset  OPTIONAL,
                    IN OUT PSIZE_T ViewSize,
                    IN SECTION_INHERIT InheritDisposition,
@@ -4482,8 +4482,8 @@ NTSTATUS STDCALL
 MmMapViewOfSection(IN PVOID SectionObject,
                    IN PEPROCESS Process,
                    IN OUT PVOID *BaseAddress,
-                   IN ULONG ZeroBits,
-                   IN ULONG CommitSize,
+                   IN ULONG_PTR ZeroBits,
+                   IN SIZE_T CommitSize,
                    IN OUT PLARGE_INTEGER SectionOffset OPTIONAL,
                    IN OUT PSIZE_T ViewSize,
                    IN SECTION_INHERIT InheritDisposition,
@@ -4954,8 +4954,8 @@ MmCreateSection (OUT PVOID  * Section,
 NTSTATUS
 NTAPI
 NtAllocateUserPhysicalPages(IN HANDLE ProcessHandle,
-                            IN OUT PULONG NumberOfPages,
-                            IN OUT PULONG UserPfnArray)
+                            IN OUT PULONG_PTR NumberOfPages,
+                            IN OUT PULONG_PTR UserPfnArray)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
@@ -4964,8 +4964,8 @@ NtAllocateUserPhysicalPages(IN HANDLE ProcessHandle,
 NTSTATUS
 NTAPI
 NtMapUserPhysicalPages(IN PVOID VirtualAddresses,
-                       IN ULONG NumberOfPages,
-                       IN OUT PULONG UserPfnArray)
+                       IN ULONG_PTR NumberOfPages,
+                       IN OUT PULONG_PTR UserPfnArray)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
@@ -4974,8 +4974,8 @@ NtMapUserPhysicalPages(IN PVOID VirtualAddresses,
 NTSTATUS
 NTAPI
 NtMapUserPhysicalPagesScatter(IN PVOID *VirtualAddresses,
-                              IN ULONG NumberOfPages,
-                              IN OUT PULONG UserPfnArray)
+                              IN ULONG_PTR NumberOfPages,
+                              IN OUT PULONG_PTR UserPfnArray)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
@@ -4984,8 +4984,8 @@ NtMapUserPhysicalPagesScatter(IN PVOID *VirtualAddresses,
 NTSTATUS
 NTAPI
 NtFreeUserPhysicalPages(IN HANDLE ProcessHandle,
-                        IN OUT PULONG NumberOfPages,
-                        IN OUT PULONG UserPfnArray)
+                        IN OUT PULONG_PTR NumberOfPages,
+                        IN OUT PULONG_PTR UserPfnArray)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
index d8f70d4..1c99013 100644 (file)
@@ -63,13 +63,13 @@ MiDoMappedCopy(IN PEPROCESS SourceProcess,
                IN PVOID SourceAddress,
                IN PEPROCESS TargetProcess,
                OUT PVOID TargetAddress,
-               IN ULONG BufferSize,
+               IN SIZE_T BufferSize,
                IN KPROCESSOR_MODE PreviousMode,
-               OUT PULONG ReturnSize)
+               OUT PSIZE_T ReturnSize)
 {
     PFN_NUMBER MdlBuffer[(sizeof(MDL) / sizeof(PFN_NUMBER)) + MI_MAPPED_COPY_PAGES + 1];
     PMDL Mdl = (PMDL)MdlBuffer;
-    ULONG TotalSize, CurrentSize, RemainingSize;
+    SIZE_T TotalSize, CurrentSize, RemainingSize;
     volatile BOOLEAN FailedInProbe = FALSE, FailedInMapping = FALSE, FailedInMoving;
     BOOLEAN PagesLocked;
     PVOID CurrentAddress = SourceAddress, CurrentTargetAddress = TargetAddress;
@@ -219,12 +219,12 @@ MiDoPoolCopy(IN PEPROCESS SourceProcess,
              IN PVOID SourceAddress,
              IN PEPROCESS TargetProcess,
              OUT PVOID TargetAddress,
-             IN ULONG BufferSize,
+             IN SIZE_T BufferSize,
              IN KPROCESSOR_MODE PreviousMode,
-             OUT PULONG ReturnSize)
+             OUT PSIZE_T ReturnSize)
 {
     UCHAR StackBuffer[MI_POOL_COPY_BYTES];
-    ULONG TotalSize, CurrentSize, RemainingSize;
+    SIZE_T TotalSize, CurrentSize, RemainingSize;
     volatile BOOLEAN FailedInProbe = FALSE, FailedInMoving, HavePoolAddress = FALSE;
     PVOID CurrentAddress = SourceAddress, CurrentTargetAddress = TargetAddress;
     PVOID PoolAddress;
@@ -365,9 +365,9 @@ MmCopyVirtualMemory(IN PEPROCESS SourceProcess,
                     IN PVOID SourceAddress,
                     IN PEPROCESS TargetProcess,
                     OUT PVOID TargetAddress,
-                    IN ULONG BufferSize,
+                    IN SIZE_T BufferSize,
                     IN KPROCESSOR_MODE PreviousMode,
-                    OUT PULONG ReturnSize)
+                    OUT PSIZE_T ReturnSize)
 {
     NTSTATUS Status;
     PEPROCESS Process = SourceProcess;
@@ -419,8 +419,8 @@ MiQueryVirtualMemory(IN HANDLE ProcessHandle,
                      IN PVOID Address,
                      IN MEMORY_INFORMATION_CLASS VirtualMemoryInformationClass,
                      OUT PVOID VirtualMemoryInformation,
-                     IN ULONG Length,
-                     OUT PULONG ResultLength)
+                     IN SIZE_T Length,
+                     OUT PSIZE_T ResultLength)
 {
     NTSTATUS Status;
     PEPROCESS Process;
@@ -584,7 +584,7 @@ MiQueryVirtualMemory(IN HANDLE ProcessHandle,
 NTSTATUS STDCALL
 MiProtectVirtualMemory(IN PEPROCESS Process,
                        IN OUT PVOID *BaseAddress,
-                       IN OUT PULONG NumberOfBytesToProtect,
+                       IN OUT PSIZE_T NumberOfBytesToProtect,
                        IN ULONG NewAccessProtection,
                        OUT PULONG OldAccessProtection  OPTIONAL)
 {
@@ -678,13 +678,13 @@ NTAPI
 NtReadVirtualMemory(IN HANDLE ProcessHandle,
                     IN PVOID BaseAddress,
                     OUT PVOID Buffer,
-                    IN ULONG NumberOfBytesToRead,
-                    OUT PULONG NumberOfBytesRead OPTIONAL)
+                    IN SIZE_T NumberOfBytesToRead,
+                    OUT PSIZE_T NumberOfBytesRead OPTIONAL)
 {
     KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
     PEPROCESS Process;
     NTSTATUS Status = STATUS_SUCCESS;
-    ULONG BytesRead = 0;
+    SIZE_T BytesRead = 0;
     PAGED_CODE();    
 
     /* Check if we came from user mode */
@@ -704,7 +704,7 @@ NtReadVirtualMemory(IN HANDLE ProcessHandle,
         _SEH_TRY
         {
             /* Probe the output value */
-            if (NumberOfBytesRead) ProbeForWriteUlong(NumberOfBytesRead);
+            if (NumberOfBytesRead) ProbeForWriteSize_t(NumberOfBytesRead);
         }
         _SEH_HANDLE
         {
@@ -765,8 +765,8 @@ NTAPI
 NtWriteVirtualMemory(IN HANDLE ProcessHandle,
                      IN PVOID BaseAddress,
                      IN PVOID Buffer,
-                     IN ULONG NumberOfBytesToWrite,
-                     OUT PULONG NumberOfBytesWritten OPTIONAL)
+                     IN SIZE_T NumberOfBytesToWrite,
+                     OUT PSIZE_T NumberOfBytesWritten OPTIONAL)
 {
     KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
     PEPROCESS Process;
@@ -791,7 +791,7 @@ NtWriteVirtualMemory(IN HANDLE ProcessHandle,
         _SEH_TRY
         {
             /* Probe the output value */
-            if (NumberOfBytesWritten) ProbeForWriteUlong(NumberOfBytesWritten);
+            if (NumberOfBytesWritten) ProbeForWriteSize_t(NumberOfBytesWritten);
         }
         _SEH_HANDLE
         {
@@ -851,14 +851,14 @@ NTSTATUS
 NTAPI
 NtProtectVirtualMemory(IN HANDLE ProcessHandle,
                        IN OUT PVOID *UnsafeBaseAddress,
-                       IN OUT ULONG *UnsafeNumberOfBytesToProtect,
+                       IN OUT SIZE_T *UnsafeNumberOfBytesToProtect,
                        IN ULONG NewAccessProtection,
                        OUT PULONG UnsafeOldAccessProtection)
 {
     PEPROCESS Process;
     ULONG OldAccessProtection;
     PVOID BaseAddress = NULL;
-    ULONG NumberOfBytesToProtect = 0;
+    SIZE_T NumberOfBytesToProtect = 0;
     KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
     NTSTATUS Status = STATUS_SUCCESS;
 
@@ -870,7 +870,7 @@ NtProtectVirtualMemory(IN HANDLE ProcessHandle,
         {
             /* Validate all outputs */
             ProbeForWritePointer(UnsafeBaseAddress);
-            ProbeForWriteUlong(UnsafeNumberOfBytesToProtect);
+            ProbeForWriteSize_t(UnsafeNumberOfBytesToProtect);
             ProbeForWriteUlong(UnsafeOldAccessProtection);
             
             /* Capture them */
@@ -950,11 +950,11 @@ NtQueryVirtualMemory(IN HANDLE ProcessHandle,
                      IN PVOID Address,
                      IN MEMORY_INFORMATION_CLASS VirtualMemoryInformationClass,
                      OUT PVOID VirtualMemoryInformation,
-                     IN ULONG Length,
-                     OUT PULONG UnsafeResultLength)
+                     IN SIZE_T Length,
+                     OUT PSIZE_T UnsafeResultLength)
 {
     NTSTATUS Status = STATUS_SUCCESS;
-    ULONG ResultLength = 0;
+    SIZE_T ResultLength = 0;
     KPROCESSOR_MODE PreviousMode;
     union
     {
@@ -974,7 +974,7 @@ NtQueryVirtualMemory(IN HANDLE ProcessHandle,
     {
         _SEH_TRY
         {
-            ProbeForWriteUlong(UnsafeResultLength);
+            ProbeForWriteSize_t(UnsafeResultLength);
         }
         _SEH_HANDLE
         {
@@ -1050,8 +1050,8 @@ NTSTATUS
 NTAPI
 NtLockVirtualMemory(IN HANDLE ProcessHandle,
                     IN PVOID BaseAddress,
-                    IN ULONG NumberOfBytesToLock,
-                    OUT PULONG NumberOfBytesLocked OPTIONAL)
+                    IN SIZE_T NumberOfBytesToLock,
+                    OUT PSIZE_T NumberOfBytesLocked OPTIONAL)
 {
     UNIMPLEMENTED;
     if (NumberOfBytesLocked) *NumberOfBytesLocked = 0;
@@ -1062,8 +1062,8 @@ NTSTATUS
 NTAPI
 NtUnlockVirtualMemory(IN HANDLE ProcessHandle,
                       IN PVOID BaseAddress,
-                      IN ULONG NumberOfBytesToUnlock,
-                      OUT PULONG NumberOfBytesUnlocked OPTIONAL)
+                      IN SIZE_T NumberOfBytesToUnlock,
+                      OUT PSIZE_T NumberOfBytesUnlocked OPTIONAL)
 {
     UNIMPLEMENTED;
     if (NumberOfBytesUnlocked) *NumberOfBytesUnlocked = 0;