<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=282685&amp;view=findpost&amp;p=2374641</guid>
        <pubDate>Tue, 22 Sep 2009 06:43:17 +0000</pubDate>
        <title>Нет доступа на запись в файле отображаемом в память</title>
        <link>https://forum.sources.ru/index.php?showtopic=282685&amp;view=findpost&amp;p=2374641</link>
        <description><![CDATA[Hryak: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=282685&view=findpost&p=2374617'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Vedrus &#064; <time class="tag-quote__quoted-time" datetime="2009-09-22T10:19:09+04:00">22.09.09, 06:19</time></span><div class='quote '>для себя ещё один нашёл, его и использовал - задал символьные имена событиям и через OpenEvent открыл их в дочернем процессе. </div></div><br>
Это и есть <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=282685&view=findpost&p=2374599'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Hryak &#064; <time class="tag-quote__quoted-time" datetime="2009-09-22T06:03:53+00:00">22.09.09, 06:03</time></span><div class='quote '>именной хендл</div></div>Точнее, именное событие, а не хендл, конечно]]></description>
        <author>Hryak</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=282685&amp;view=findpost&amp;p=2374617</guid>
        <pubDate>Tue, 22 Sep 2009 06:19:09 +0000</pubDate>
        <title>Нет доступа на запись в файле отображаемом в память</title>
        <link>https://forum.sources.ru/index.php?showtopic=282685&amp;view=findpost&amp;p=2374617</link>
        <description><![CDATA[Vedrus: Спасибо за много вариантов. Я для себя ещё один нашёл, его и использовал - задал символьные имена событиям и через OpenEvent открыл их в дочернем процессе.]]></description>
        <author>Vedrus</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=282685&amp;view=findpost&amp;p=2374599</guid>
        <pubDate>Tue, 22 Sep 2009 06:03:53 +0000</pubDate>
        <title>Нет доступа на запись в файле отображаемом в память</title>
        <link>https://forum.sources.ru/index.php?showtopic=282685&amp;view=findpost&amp;p=2374599</link>
        <description><![CDATA[Hryak: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=282685&view=findpost&p=2374583'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Vedrus &#064; <time class="tag-quote__quoted-time" datetime="2009-09-22T05:51:45+00:00">22.09.09, 05:51</time></span><div class='quote '>о родительский процесс создаёт hEvent, передаёт его дочернему процессу</div></div><br>
А как ты передаешь? Просто как число нельзя так просто. Нужно или делать хендл наследуемым и наследовать при создании дочернего процесса (тогда можно и как число передать), либо как у тебя с мапой сделано (именной объект ядра) или с помощью DuplicateHandle]]></description>
        <author>Hryak</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=282685&amp;view=findpost&amp;p=2374583</guid>
        <pubDate>Tue, 22 Sep 2009 05:51:45 +0000</pubDate>
        <title>Нет доступа на запись в файле отображаемом в память</title>
        <link>https://forum.sources.ru/index.php?showtopic=282685&amp;view=findpost&amp;p=2374583</link>
        <description><![CDATA[Vedrus: Спасибо, <strong class='tag-b'>Hryak</strong>, решение помогло, но возникла ещё одна проблема. Через структуру CLIENT_CONTEXT я передаю хэндл события (hEvent) созданного функцией CreateEvent. Логика работы моей программы подразумевает, что родительский процесс создаёт hEvent, передаёт его дочернему процессу, а тот, когда выполнит определённые действия устанавливает это событие (функцией SetEvent).<br>
<br>
Но эта логика у меня не работает: функция SetEvent, вызванная в дочернем процессе возвращает ошибку. Тот же вызов в родительском процессе завершается успешно. Как я понял, между двумя процессами хэндлы нельзя так просто передавать, а как можно?]]></description>
        <author>Vedrus</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=282685&amp;view=findpost&amp;p=2374509</guid>
        <pubDate>Tue, 22 Sep 2009 04:24:03 +0000</pubDate>
        <title>Нет доступа на запись в файле отображаемом в память</title>
        <link>https://forum.sources.ru/index.php?showtopic=282685&amp;view=findpost&amp;p=2374509</link>
        <description><![CDATA[Hryak: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">OpenFileMapping(FILE_MAP_ALL_ACCESS,</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>Hryak</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=282685&amp;view=findpost&amp;p=2374506</guid>
        <pubDate>Tue, 22 Sep 2009 04:18:57 +0000</pubDate>
        <title>Нет доступа на запись в файле отображаемом в память</title>
        <link>https://forum.sources.ru/index.php?showtopic=282685&amp;view=findpost&amp;p=2374506</link>
        <description><![CDATA[Vedrus: Вопрос по файлам отображаемым в память. Возникла проблема. В главном процессе создаю файл отображаемый в память:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">hFile = CreateFile(&quot;page.swp&quot;, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);</div><div class="code_line">hMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, NULL, sizeof(CLIENT_CONTEXT), &quot;FastJobSwap&quot;);</div><div class="code_line">lpContext = (LPCLIENT_CONTEXT) MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);</div></ol></div></div></div></div><br>
Заполняю его нужными мне данными, и далее пытаюсь открыть этот файл в дочернем процессе:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">hMap = OpenFileMapping(PAGE_READWRITE, FALSE, &quot;FastJobSwap&quot;);</div><div class="code_line">lpContext = (LPCLIENT_CONTEXT) MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);</div></ol></div></div></div></div><br>
MapViewOfFile возвращает ошибку номер 5 (отказано в доступе). Если поменять флаг FILE_MAP_ALL_ACCESS на FILE_MAP_READ, то всё работает, все данные передаются в том виде, в каком мне надо (FILE_MAP_WRITE, как и следовало ожидать тоже не работает).<br>
<br>
Как сделать так, чтобы был доступ к отображённому файлу также и на запись, а не только на чтение?<br>
<br>
Вот на этой ссылке парень говорит, что у него всё заработало, когда он SECURITY_ATTRIBUTES добавил. Попробовал пойти его путём, но MapViewOfFile по-прежнему жалуется, что у неё нет доступа:<br>
<a class='tag-url' href='http://forum.codenet.ru/archive/index.php/t-34558.html' target='_blank'>StartService & SetHook & OpenFileMapping все вместе не работает</a>]]></description>
        <author>Vedrus</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      </channel>
      </rss>
	