winedevice: A driver path can also start with \systemroot\.
This commit is contained in:
parent
da11075000
commit
6840a9273c
|
@ -170,6 +170,7 @@ static NTSTATUS init_driver( HMODULE module, UNICODE_STRING *keyname )
|
||||||
static BOOL load_driver(void)
|
static BOOL load_driver(void)
|
||||||
{
|
{
|
||||||
static const WCHAR driversW[] = {'\\','d','r','i','v','e','r','s','\\',0};
|
static const WCHAR driversW[] = {'\\','d','r','i','v','e','r','s','\\',0};
|
||||||
|
static const WCHAR systemrootW[] = {'\\','S','y','s','t','e','m','R','o','o','t','\\',0};
|
||||||
static const WCHAR postfixW[] = {'.','s','y','s',0};
|
static const WCHAR postfixW[] = {'.','s','y','s',0};
|
||||||
static const WCHAR ntprefixW[] = {'\\','?','?','\\',0};
|
static const WCHAR ntprefixW[] = {'\\','?','?','\\',0};
|
||||||
static const WCHAR ImagePathW[] = {'I','m','a','g','e','P','a','t','h',0};
|
static const WCHAR ImagePathW[] = {'I','m','a','g','e','P','a','t','h',0};
|
||||||
|
@ -209,6 +210,24 @@ static BOOL load_driver(void)
|
||||||
}
|
}
|
||||||
HeapFree( GetProcessHeap(), 0, str );
|
HeapFree( GetProcessHeap(), 0, str );
|
||||||
if (!path) return FALSE;
|
if (!path) return FALSE;
|
||||||
|
|
||||||
|
if (!strncmpiW( path, systemrootW, 12 ))
|
||||||
|
{
|
||||||
|
WCHAR buffer[MAX_PATH];
|
||||||
|
|
||||||
|
GetWindowsDirectoryW(buffer, MAX_PATH);
|
||||||
|
|
||||||
|
str = HeapAlloc(GetProcessHeap(), 0, (size -11 + strlenW(buffer))
|
||||||
|
* sizeof(WCHAR));
|
||||||
|
lstrcpyW(str, buffer);
|
||||||
|
lstrcatW(str, path + 11);
|
||||||
|
HeapFree( GetProcessHeap(), 0, path );
|
||||||
|
path = str;
|
||||||
|
}
|
||||||
|
else if (!strncmpW( path, ntprefixW, 4 ))
|
||||||
|
str = path + 4;
|
||||||
|
else
|
||||||
|
str = path;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -222,12 +241,9 @@ static BOOL load_driver(void)
|
||||||
lstrcatW(path, driversW);
|
lstrcatW(path, driversW);
|
||||||
lstrcatW(path, driver_name);
|
lstrcatW(path, driver_name);
|
||||||
lstrcatW(path, postfixW);
|
lstrcatW(path, postfixW);
|
||||||
|
str = path;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* GameGuard uses an NT-style path name */
|
|
||||||
str = path;
|
|
||||||
if (!strncmpW( path, ntprefixW, 4 )) str += 4;
|
|
||||||
|
|
||||||
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 );
|
||||||
|
|
Loading…
Reference in New Issue