информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Страшный баг в WindowsАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Шестой Perl превратится в Raku,... 
 Kik закрывается, все ушли на криптофронт 
 Sophos открывает Sandboxie 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Нет доступа на запись в файле отображаемом в память 22.09.09 07:56  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 22.09.09 08:11  Количество правок: 5
<"чистая" ссылка> <обсуждение закрыто>
Поторопился закрыть свою предыдущую тему. Возникла проблема. В главном процессе создаю файл отображаемый в память:
hFile = CreateFile("page.swp", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
hMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, NULL, sizeof(CLIENT_CONTEXT), "FastJobSwap");
lpContext = (LPCLIENT_CONTEXT) MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);

---
Заполняю его нужными мне данными, и далее пытаюсь открыть этот файл в дочернем процессе:
hMap = OpenFileMapping(PAGE_READWRITE, FALSE, "FastJobSwap");
lpContext = (LPCLIENT_CONTEXT) MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);

---
MapViewOfFile возвращает ошибку номер 5 (отказано в доступе). Если поменять флаг FILE_MAP_ALL_ACCESS на FILE_MAP_READ, то всё работает, все данные передаются в том виде, в каком мне надо (FILE_MAP_WRITE, как и следовало ожидать тоже не работает).

Как сделать так, чтобы был доступ к отображённому файлу также и на запись, а не только на чтение?
Ещё одна параллельная проблема возникла 22.09.09 12:25  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
Хочу отобразить не весь файл, а небольшую её часть (64 кб, если быть точным). Пишу:
lpAllContexts = (LPCLIENT_CONTEXT) MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 65536*dwContextIndex, 65536);

---
Функция завершается с ошибкой номер 5 (отказано в доступе). Опытным путём установил, что значение 49784 в последнем параметре функцию устраивает, а 49785 и тем более мои 65536 уже нет. С чем это связано?
а размер файла достаточен, чтобы при текущем dwContextIndex не вылететь за его границу? 22.09.09 12:32  
Автор: dl <Dmitry Leonov>
<"чистая" ссылка> <обсуждение закрыто>
Нет, не достаточен :)). Прошу прощения. Глупая ошибка. PS. Спасибо, dl. У тебя самый удобный форум из тех, что я видел. 22.09.09 12:39  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
[Win32] Если процесс дочерний, то зачем переоткрывать объект, если можно просто унаследовать хендл? 22.09.09 08:31  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>


http://msdn.microsoft.com/en-us/library/ms724466
Спасибо за полезную информацию. И у меня ещё одна проблема возникла 22.09.09 09:46  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
Родительский процесс создаёт событие hEvent, передаёт этот хендл дочернему процессу, и далее ждёт, когда дочерний процесс установит его. Функция SetEvent в дочернем процессе возвращает FALSE. Вызов той же функции в родительском процессе даёт TRUE.

Числовое представление хэндла и в родительском и в дочернем процессах совпадают. Как обойти эту ситуацию? Как в дочернем процессе получить доступ к хэндлу родительского процесса?
что значит передает? 22.09.09 11:25  
Автор: dl <Dmitry Leonov>
<"чистая" ссылка> <обсуждение закрыто>
Просто передает значение? Тогда объект нужно создавать как наследуемый. А проще создавать именованный, как и mapfile, не надо возиться с передачей значений.
Спасибо, вариант с именованными значениями мен подошёл. 22.09.09 12:17  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
[win32] вот на этой ссылке парень говорит, что у него всё заработало, когда он security_attributes добавил. попробовал пойти его путём, но mapviewoffile по-прежнему жалуется, что у неё нет доступа. 22.09.09 08:10  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 22.09.09 08:11  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>


StartService & SetHook & OpenFileMapping все вместе не работает
Парень отсюда помог. решение оказалось простым: openfilemapping(file_map_all_access,... 22.09.09 08:30  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>


Нет доступа на запись в файле отображаемом в память
1






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2019 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach