[PATCH v2 0/1] MR10633: kernelbase: Ignore GENERIC_WRITE in CreateFile on CDs on Windows 9x.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=59636 -- v2: kernelbase: Ignore GENERIC_WRITE in CreateFile on CDs on Windows 9x. https://gitlab.winehq.org/wine/wine/-/merge_requests/10633
From: Alex Henrie <alexhenrie24@gmail.com> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=59636 --- dlls/kernelbase/file.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/dlls/kernelbase/file.c b/dlls/kernelbase/file.c index 83977a2c40b..912fb13febb 100644 --- a/dlls/kernelbase/file.c +++ b/dlls/kernelbase/file.c @@ -853,6 +853,17 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateFileW( LPCWSTR filename, DWORD access, DWO return INVALID_HANDLE_VALUE; } + /* Windows 9x ignores the GENERIC_WRITE flag on CD drives */ + if (access & GENERIC_WRITE && GetVersion() & 0x80000000) + { + WCHAR volume[MAX_PATH]; + if (GetVolumePathNameW( filename, volume, ARRAY_SIZE(volume) ) && + GetDriveTypeW( volume ) == DRIVE_CDROM) + { + access &= ~GENERIC_WRITE; + } + } + /* now call NtCreateFile */ if (attributes & FILE_FLAG_DELETE_ON_CLOSE) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10633
The checks look pretty expensive, you should try the open first and only do the extra checks on failure. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10633#note_136519
participants (3)
-
Alex Henrie -
Alex Henrie (@alexhenrie) -
Alexandre Julliard (@julliard)