diff --git a/xtoskrnl/includes/mmi.h b/xtoskrnl/includes/mmi.h
index 5a9ec12..7118b07 100644
--- a/xtoskrnl/includes/mmi.h
+++ b/xtoskrnl/includes/mmi.h
@@ -17,7 +17,7 @@ XTAPI
 XTSTATUS
 MmAllocateHardwareMemory(IN PFN_NUMBER PageCount,
                          IN BOOLEAN Aligned,
-                         OUT PULONG_PTR Buffer);
+                         OUT PPHYSICAL_ADDRESS Buffer);
 
 XTAPI
 XTSTATUS
diff --git a/xtoskrnl/mm/hlpool.c b/xtoskrnl/mm/hlpool.c
index 904f111..67263e4 100644
--- a/xtoskrnl/mm/hlpool.c
+++ b/xtoskrnl/mm/hlpool.c
@@ -29,7 +29,7 @@ XTAPI
 XTSTATUS
 MmAllocateHardwareMemory(IN PFN_NUMBER PageCount,
                          IN BOOLEAN Aligned,
-                         OUT PULONG_PTR Buffer)
+                         OUT PPHYSICAL_ADDRESS Buffer)
 {
     PLOADER_MEMORY_DESCRIPTOR Descriptor, ExtraDescriptor, HardwareDescriptor;
     PFN_NUMBER Alignment, MaxPage;
@@ -37,7 +37,7 @@ MmAllocateHardwareMemory(IN PFN_NUMBER PageCount,
     PLIST_ENTRY ListEntry;
 
     /* Assume failure */
-    *Buffer = 0;
+    (*Buffer).QuadPart = 0;
 
     /* Calculate maximum page address */
     MaxPage = MM_MAXIMUM_PHYSICAL_ADDRESS >> MM_PAGE_SHIFT;
@@ -135,7 +135,7 @@ MmAllocateHardwareMemory(IN PFN_NUMBER PageCount,
     }
 
     /* Return physical address */
-    *Buffer = PhysicalAddress;
+    (*Buffer).QuadPart = PhysicalAddress;
     return STATUS_SUCCESS;
 }