kernel32: Make CreateFile called with creation == 0 work when opening a vxd in win9x mode.
Dmitry Timoshkov
dmitry at baikal.ru
Sat Mar 10 23:41:31 CST 2012
A widely used approach to open/load device drivers under win9x is
/* Check if already loaded in system.ini */
hvxd = CreateFile("\\\\.\\mydevice", 0, 0, 0, 0, 0, 0);
if (hvxd == INVALID_HANDLE_VALUE)
/* Load dynamically from PATH */
hvxd = CreateFile("\\\\.\\path\\to\\mydevice.vxd", 0, 0, 0, CREATE_NEW, FILE_FLAG_DELETE_ON_CLOSE, 0);
First call never succeeds under Wine, and some device drivers refuse to load
more than once.
---
dlls/kernel32/file.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c
index a3b4411..089f693 100644
--- a/dlls/kernel32/file.c
+++ b/dlls/kernel32/file.c
@@ -1310,6 +1310,7 @@ HANDLE WINAPI CreateFileW( LPCWSTR filename, DWORD access, DWORD sharing,
else if (GetVersion() & 0x80000000)
{
vxd_name = filename + 4;
+ if (!creation) creation = OPEN_EXISTING;
}
}
else dosdev = RtlIsDosDeviceName_U( filename );
--
1.7.9.2
More information about the wine-patches
mailing list