Sebastian Lackner : winedevice: Get rid of static driver_module variable.
Alexandre Julliard
julliard at winehq.org
Thu Aug 4 17:20:18 CDT 2016
Module: wine
Branch: master
Commit: e3321faf14beef308919a34f4ec5fe3979accf7f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e3321faf14beef308919a34f4ec5fe3979accf7f
Author: Sebastian Lackner <sebastian at fds-team.de>
Date: Thu Aug 4 19:00:00 2016 +0200
winedevice: Get rid of static driver_module variable.
Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
programs/winedevice/device.c | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/programs/winedevice/device.c b/programs/winedevice/device.c
index 2da9446..e31318c 100644
--- a/programs/winedevice/device.c
+++ b/programs/winedevice/device.c
@@ -43,7 +43,6 @@ extern NTSTATUS CDECL wine_ntoskrnl_main_loop( HANDLE stop_event );
static SERVICE_STATUS_HANDLE service_handle;
static HANDLE stop_event;
static DRIVER_OBJECT *driver_obj;
-static HMODULE driver_module;
/* find the LDR_MODULE corresponding to the driver module */
static LDR_MODULE *find_ldr_module( HMODULE module )
@@ -216,22 +215,22 @@ static NTSTATUS WINAPI init_driver( DRIVER_OBJECT *driver_object, UNICODE_STRING
NTSTATUS status;
const IMAGE_NT_HEADERS *nt;
const WCHAR *driver_name;
+ HMODULE module;
/* Retrieve driver name from the keyname */
driver_name = strrchrW( keyname->Buffer, '\\' );
driver_name++;
- driver_module = load_driver( driver_name, keyname );
- if (!driver_module)
+ module = load_driver( driver_name, keyname );
+ if (!module)
return STATUS_DLL_INIT_FAILED;
driver_obj = driver_object;
+ driver_object->DriverSection = find_ldr_module( module );
- nt = RtlImageNtHeader( driver_module );
+ nt = RtlImageNtHeader( module );
if (!nt->OptionalHeader.AddressOfEntryPoint) return STATUS_SUCCESS;
-
- driver_object->DriverSection = find_ldr_module( driver_module );
- driver_object->DriverInit = (PDRIVER_INITIALIZE)((char *)driver_module + nt->OptionalHeader.AddressOfEntryPoint);
+ driver_object->DriverInit = (PDRIVER_INITIALIZE)((char *)module + nt->OptionalHeader.AddressOfEntryPoint);
if (WINE_TRACE_ON(relay))
WINE_DPRINTF( "%04x:Call driver init %p (obj=%p,str=%s)\n", GetCurrentThreadId(),
@@ -254,8 +253,10 @@ static NTSTATUS WINAPI init_driver( DRIVER_OBJECT *driver_object, UNICODE_STRING
}
/* call the driver unload function */
-static void unload_driver( HMODULE module, DRIVER_OBJECT *driver_obj )
+static void unload_driver( DRIVER_OBJECT *driver_obj )
{
+ LDR_MODULE *ldr = driver_obj->DriverSection;
+
if (driver_obj->DriverUnload)
{
if (WINE_TRACE_ON(relay))
@@ -268,7 +269,8 @@ static void unload_driver( HMODULE module, DRIVER_OBJECT *driver_obj )
WINE_DPRINTF( "%04x:Ret driver unload %p (obj=%p)\n", GetCurrentThreadId(),
driver_obj->DriverUnload, driver_obj );
}
- FreeLibrary( module );
+
+ FreeLibrary( ldr->BaseAddress );
IoDeleteDriver( driver_obj );
}
@@ -349,7 +351,7 @@ static void WINAPI ServiceMain( DWORD argc, LPWSTR *argv )
SetServiceStatus( service_handle, &status );
wine_ntoskrnl_main_loop( stop_event );
- unload_driver( driver_module, driver_obj );
+ unload_driver( driver_obj );
}
else WINE_ERR( "driver %s failed to load\n", wine_dbgstr_w(driver_name) );
More information about the wine-cvs
mailing list