так мапится: Код (Text): h_fiule = CreateFile(wz_fname, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0); f_size = GetFileSize(h_file, 0); h_map = CreateFileMapping(h_file, 0, PAGE_WRITECOPY, 0, 0, wz_mapname); p = MapViewOfFileEx(h_map, FILE_MAP_COPY, 0, 0, fsize, 0); // success так не мапится: Код (Text): h_fiule = CreateFile(wz_fname, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0); f_size = GetFileSize(h_file, 0); h_map = CreateFileMapping(h_file, 0, PAGE_WRITECOPY, 0, 0, wz_mapname); h_map = OpenFileMapping(PAGE_WRITECOPY, 0, wz_mapname); p = MapViewOfFileEx(h_map, FILE_MAP_COPY, 0, 0, fsize, 0); // отказано в доступе почему возникают проблемы, ведь права одни и теже?
Quark Не совсем правильно поставлен вопрос. Скорее вопрос в том, почему в первом случае не возникает проблем. Ведь для создания FileMapping'а с правами WRITECOPY необходимы права доступа к файлу GENERIC_WRITE. Насчёт второго варианта... Вы бы глянули в MSDN, что в OpenFileMapping первым параметром передаётся...
Я вот не доганяю: Код (Text): h_map = CreateFileMapping(h_file, 0, PAGE_WRITECOPY, 0, 0, wz_mapname); h_map = OpenFileMapping(PAGE_WRITECOPY, 0, wz_mapname); Создается ММФ и тут же он же и открывается. Вопрос: НАФИГА? Если ыт его только создал и уже можешь пользоваться хендлом...
MSDN: PAGE_WRITECOPY Sets copy-on-write access. The files that the hFile parameter specifies must be created with the GENERIC_READ access right.
а может лучше драйвер написать? рулить оттуда страницами. прошу прощения, но вопрос поставлен достаточно однозначно.