А так почему-то нет (вместо аппенда перезаписывает файл):
DesiredAccess = GENERIC_ALL | FILE_APPEND_DATA;
Ну, и так тоже:
DesiredAccess = GENERIC_ALL;
Всякому ясно, что такие вот "generic" — также, как и "for dummies" — это зло, от которого нужно избавляться.
Но что именно там лишнее?
Объявлен он так:
#define GENERIC_ALL (0x10000000L)
Что тоже очень плохо, кстати. Лень им было расписать константу нормально, что ли...
S>Что тоже очень плохо, кстати. Лень им было расписать константу нормально, что ли...
Generic-маски применимы ко всем типам объектов (не только к файлам), всегда старшие 4 бита в 32-битной маске, и мапятся на разные значения.
Для файлов есть FILE_GENERIC_* константы, ещё есть IoGetFileObjectGenericMapping ( + RtlMapGenericMask )
Русский военный корабль идёт ко дну!
Re: ZwCreateFile: Почему GENERIC_ALL не дает аппендить?
Здравствуйте, ononim, Вы писали:
O>FILE_WRITE_TO_END_OF_FILE, и не нужно никакого FILE_APPEND_DATA
Так это для ZwWriteFile? А я пишу обертку для create и для write, где минимум параметров и лишний вообще не кстати, append должен быть в create, а перебросить его нельзя, поскольку (пока) обертка использует обычные хендлы, а не свою структуру.
Конечно, не помешало бы сделать свою структуру, причем не struct, а класс, все на ООП сделать, но ради чего, ради 1 заказа в 3 года?
S>Так это для ZwWriteFile? А я пишу обертку для create и для write, где минимум параметров и лишний вообще не кстати, append должен быть в create, а перебросить его нельзя, поскольку (пока) обертка использует обычные хендлы, а не свою структуру.
Значит кроме write обертка должна иметь метод append
Как много веселых ребят, и все делают велосипед...
Re[4]: ZwCreateFile: Почему GENERIC_ALL не дает аппендить?
Здравствуйте, ononim, Вы писали:
S>>Так это для ZwWriteFile? А я пишу обертку для create и для write, где минимум параметров и лишний вообще не кстати, append должен быть в create, а перебросить его нельзя, поскольку (пока) обертка использует обычные хендлы, а не свою структуру. O>Значит кроме write обертка должна иметь метод append
Ты хоть раз видел такую обертку? В .NET, Qt и т.д. разве так? Нет, там append — параметр при открытии файла.