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

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


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

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

ntoskrnl.exe: Use kernel object allocators for file 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 05291ee..8591cd4 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -293,6 +293,7 @@ static const WCHAR file_type_name[] = {'F','i','l','e',0};
 
 static struct _OBJECT_TYPE file_type = {
     file_type_name,
+    free_kernel_object
 };
 
 POBJECT_TYPE IoFileObjectType = &file_type;
@@ -324,7 +325,7 @@ static NTSTATUS WINAPI dispatch_irp_completion( DEVICE_OBJECT *device, IRP *irp,
 
     if (irp->Flags & IRP_CLOSE_OPERATION)
     {
-        HeapFree( GetProcessHeap(), 0, file );
+        dereference_kernel_object( file );
         irp->Tail.Overlay.OriginalFileObject = NULL;
     }
 
@@ -357,7 +358,7 @@ static NTSTATUS dispatch_create( const irp_params_t *params, void *in_buff, ULON
     FILE_OBJECT *file;
     DEVICE_OBJECT *device = wine_server_get_ptr( params->create.device );
 
-    if (!(file = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*file) ))) return STATUS_NO_MEMORY;
+    if (!(file = alloc_kernel_object( IoFileObjectType, sizeof(*file), 1 ))) return STATUS_NO_MEMORY;
 
     TRACE( "device %p -> file %p\n", device, file );
 
@@ -367,7 +368,7 @@ static NTSTATUS dispatch_create( const irp_params_t *params, void *in_buff, ULON
 
     if (!(irp = IoAllocateIrp( device->StackSize, FALSE )))
     {
-        HeapFree( GetProcessHeap(), 0, file );
+        dereference_kernel_object( file );
         return STATUS_NO_MEMORY;
     }
 
@@ -412,7 +413,7 @@ static NTSTATUS dispatch_close( const irp_params_t *params, void *in_buff, ULONG
 
     if (!(irp = IoAllocateIrp( device->StackSize, FALSE )))
     {
-        HeapFree( GetProcessHeap(), 0, file );
+        dereference_kernel_object( file );
         return STATUS_NO_MEMORY;
     }
 




More information about the wine-cvs mailing list