ulidtko
24.10.2012 15:52
Пиздец, это ж надо было придумать настолько ебнутое апи.
http://msdn.microsoft.com/en-us/library/...
Кто-нибудь понимает все эти FILE_SHARE_READ, FILE_SHARE_WRITE, FILE_SHARE_DELETE флаги? Че за ебота вообще в первой табличке изображена?
там же всё написано блядь
The following table illustrates the valid combinations of two calls to CreateFile using various access modes and sharing modes (dwDesiredAccess, dwShareMode respectively). It does not matter in which order the CreateFile calls are made. However, any subsequent file I/O operations on each file handle will still be constrained by the current access and sharing modes associated with that particular file handle.
засунь в гуглотранслейт штоле
Норм сделано. Защита от распидорашивания.
в табличке нихуя нет про FILE_SHARE_DELETE, умник. А экстраполировать у меня не получается.
> When a process uses CreateFile to attempt to open a file that has already been opened in a sharing mode (dwShareMode set to a valid nonzero value), the system compares the requested access and sharing modes to those specified when the file was opened. If you specify an access or sharing mode that conflicts with the modes specified in the previous call, CreateFile fails.
> access or sharing mode that conflicts with the modes...
> conflicts
что это значит, нахуй?
ты ваще знаешь что-такое memory mapped files?
ну ващето знаю, man mmap читал, desu
а под шиндовсом что-то похожее давно-давно на делфях делал. А что?
каким хуем это здесь релевантно?
никаким, я не дочитал:
An application also uses CreateFile to specify whether it wants to share the file for reading, writing, both, or neither. This is known as the sharing mode. An open file that is not shared (dwShareMode set to zero) cannot be opened again, either by the application that opened it or by another application, until its handle has been closed. This is also referred to as exclusive access.
короче, в спермосистеме у тебя доступ к файлу исклюзивный, если ты не указал иного
у меня, короче, ERROR_SHARING_VIOLATION вылазит на вызове GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, CREATE_NEW | CREATE_ALWAYS. При этом файл ничем не открыт другим, вроде. Ну то есть, это первый вызов на существующем файле.
я запрашиваю максимум шаринга, а оно мне — хуй.
CREATE_NEW | CREATE_ALWAYS ?
ты уверен что так можно на существующем файле?
да вот хуй знает, код не мой...
попробуй OPEN_ALWAYS | CREATE_ALWAYS
алсо выкинь FILE_SHARE_* и тоже попробуй