Jacek Caban : ntoskrnl.exe: Use kernel object allocators for device object.

Alexandre Julliard julliard at winehq.org
Tue Feb 26 15:13:56 CST 2019


Module: wine
Branch: master
Commit: d01cd45b55029d8170ca8bb9dd8f85efca7da11c
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=d01cd45b55029d8170ca8bb9dd8f85efca7da11c

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Feb 26 13:39:21 2019 +0100

ntoskrnl.exe: Use kernel object allocators for device object.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntoskrnl.exe/ntoskrnl.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 2ae57c8..e10f511 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -1218,7 +1218,8 @@ static const WCHAR device_type_name[] = {'D','e','v','i','c','e',0};
 
 static struct _OBJECT_TYPE device_type =
 {
-    device_type_name
+    device_type_name,
+    free_kernel_object
 };
 
 POBJECT_TYPE IoDeviceObjectType = &device_type;
@@ -1240,7 +1241,7 @@ NTSTATUS WINAPI IoCreateDevice( DRIVER_OBJECT *driver, ULONG ext_size,
     TRACE( "(%p, %u, %s, %u, %x, %u, %p)\n",
            driver, ext_size, debugstr_us(name), type, characteristics, exclusive, ret_device );
 
-    if (!(device = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*device) + ext_size )))
+    if (!(device = alloc_kernel_object( IoDeviceObjectType, sizeof(DEVICE_OBJECT) + ext_size, 1 )))
         return STATUS_NO_MEMORY;
 
     SERVER_START_REQ( create_device )
@@ -1268,7 +1269,7 @@ NTSTATUS WINAPI IoCreateDevice( DRIVER_OBJECT *driver, ULONG ext_size,
 
         *ret_device = device;
     }
-    else HeapFree( GetProcessHeap(), 0, device );
+    else free_kernel_object( device );
 
     return status;
 }
@@ -1296,7 +1297,7 @@ void WINAPI IoDeleteDevice( DEVICE_OBJECT *device )
         while (*prev && *prev != device) prev = &(*prev)->NextDevice;
         if (*prev) *prev = (*prev)->NextDevice;
         NtClose( device->Reserved );
-        HeapFree( GetProcessHeap(), 0, device );
+        dereference_kernel_object( device );
     }
 }
 




More information about the wine-cvs mailing list