"Michael Ost" <[EMAIL PROTECTED]> wrote: > A 3rd party installer program for a VST plugin is calling CreateFile > with dwDesiredAccess = 0x1f01ff and dwSharedMode = FILE_SHARE_WRITE. It > then calls ReadFile, which fails in Wine (error 5) but succeeds in > WinXP. > > My "solution" (polite term) was to force GENERIC_READ|GENERIC_WRITE > access in ntdll/NtCreateFile if the sharing type is FILE_SHARE_WRITE.
Most likely sharing mode has nothing to do with access rights. The problem is that the app doesn't specify neither of GENERIC_xxxx flags. But it does specify STANDARD_RIGHTS_ALL == (DELETE|READ_CONTROL|WRITE_DAC|WRITE_OWNER|SYNCHRONIZE). It appears that Windows treats GENERIC_xxxx rights as an addition to the STANDARD_RIGHTS_xxx flags, and missing GENERIC_xxxx rights are normally ignored. > I have not been able to figure out from the header files what named > constants the program used for dwDesiredAccess, so I hard coded it with > the values the program used in my example. > > But I did notice that FILE_ALL_ACCESS is a different value in Wine and > my VC98 headers from DevStudio 6. In Wine it is: > (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x1ff) > In VC98: > (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3ff) > Is this a Wine bug? Please send a patch for this. Your test app needs to be extended to verify who is responsible for handling the dwDesiredAccess: CreateFileW ot NtCreateFile (I think it's the latter one, but it needs to be tested). -- Dmitry.
