winedevice: Get rid of global driver_hkey variable and fix some leaks.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
4bed3d231e
commit
e931f0e83d
|
@ -42,7 +42,6 @@ extern NTSTATUS CDECL wine_ntoskrnl_main_loop( HANDLE stop_event );
|
||||||
|
|
||||||
static WCHAR *driver_name;
|
static WCHAR *driver_name;
|
||||||
static SERVICE_STATUS_HANDLE service_handle;
|
static SERVICE_STATUS_HANDLE service_handle;
|
||||||
static HKEY driver_hkey;
|
|
||||||
static HANDLE stop_event;
|
static HANDLE stop_event;
|
||||||
static DRIVER_OBJECT driver_obj;
|
static DRIVER_OBJECT driver_obj;
|
||||||
static DRIVER_EXTENSION driver_extension;
|
static DRIVER_EXTENSION driver_extension;
|
||||||
|
@ -203,6 +202,7 @@ static HMODULE load_driver(void)
|
||||||
'\\','S','e','r','v','i','c','e','s','\\',0};
|
'\\','S','e','r','v','i','c','e','s','\\',0};
|
||||||
|
|
||||||
UNICODE_STRING keypath;
|
UNICODE_STRING keypath;
|
||||||
|
HKEY driver_hkey;
|
||||||
HMODULE module;
|
HMODULE module;
|
||||||
LPWSTR path = NULL, str;
|
LPWSTR path = NULL, str;
|
||||||
DWORD type, size;
|
DWORD type, size;
|
||||||
|
@ -215,7 +215,7 @@ static HMODULE load_driver(void)
|
||||||
{
|
{
|
||||||
WINE_ERR( "cannot open key %s, err=%u\n", wine_dbgstr_w(str), GetLastError() );
|
WINE_ERR( "cannot open key %s, err=%u\n", wine_dbgstr_w(str), GetLastError() );
|
||||||
HeapFree( GetProcessHeap(), 0, str);
|
HeapFree( GetProcessHeap(), 0, str);
|
||||||
return FALSE;
|
return NULL;
|
||||||
}
|
}
|
||||||
RtlInitUnicodeString( &keypath, str );
|
RtlInitUnicodeString( &keypath, str );
|
||||||
|
|
||||||
|
@ -231,7 +231,12 @@ static HMODULE load_driver(void)
|
||||||
ExpandEnvironmentStringsW(str,path,size);
|
ExpandEnvironmentStringsW(str,path,size);
|
||||||
}
|
}
|
||||||
HeapFree( GetProcessHeap(), 0, str );
|
HeapFree( GetProcessHeap(), 0, str );
|
||||||
if (!path) return FALSE;
|
if (!path)
|
||||||
|
{
|
||||||
|
RtlFreeUnicodeString( &keypath );
|
||||||
|
RegCloseKey( driver_hkey );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (!strncmpiW( path, systemrootW, 12 ))
|
if (!strncmpiW( path, systemrootW, 12 ))
|
||||||
{
|
{
|
||||||
|
@ -265,12 +270,17 @@ static HMODULE load_driver(void)
|
||||||
lstrcatW(path, postfixW);
|
lstrcatW(path, postfixW);
|
||||||
str = path;
|
str = path;
|
||||||
}
|
}
|
||||||
|
RegCloseKey( driver_hkey );
|
||||||
|
|
||||||
WINE_TRACE( "loading driver %s\n", wine_dbgstr_w(str) );
|
WINE_TRACE( "loading driver %s\n", wine_dbgstr_w(str) );
|
||||||
|
|
||||||
module = load_driver_module( str );
|
module = load_driver_module( str );
|
||||||
HeapFree( GetProcessHeap(), 0, path );
|
HeapFree( GetProcessHeap(), 0, path );
|
||||||
if (!module) return NULL;
|
if (!module)
|
||||||
|
{
|
||||||
|
RtlFreeUnicodeString( &keypath );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
init_driver( module, &keypath );
|
init_driver( module, &keypath );
|
||||||
return module;
|
return module;
|
||||||
|
|
Loading…
Reference in New Issue