<?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=49373&amp;view=findpost&amp;p=709875</guid>
        <pubDate>Mon, 09 May 2005 04:20:08 +0000</pubDate>
        <title>Как работать с Memory-mapped files</title>
        <link>https://forum.sources.ru/index.php?showtopic=49373&amp;view=findpost&amp;p=709875</link>
        <description><![CDATA[Vasya2000: Вот пример от Эпплмана. Взято с форума vbstreets.ru<br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Это сообщение было перенесено сюда или объединено из темы &quot;Помощь по Memory-mapped&quot;</span></span>]]></description>
        <author>Vasya2000</author>
        <category>Работа с Windows</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=49373&amp;view=findpost&amp;p=325240</guid>
        <pubDate>Fri, 26 Mar 2004 15:08:42 +0000</pubDate>
        <title>Как работать с Memory-mapped files</title>
        <link>https://forum.sources.ru/index.php?showtopic=49373&amp;view=findpost&amp;p=325240</link>
        <description><![CDATA[Vasya2000: Необходимые константы и прочие апи<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">Private Declare Function CreateFileMapping&amp; Lib &quot;kernel32&quot; Alias &quot;CreateFileMappingA&quot; _</div><div class="code_line">(ByVal hFile As Long, lpFileMappingAttributes As SECURITY_ATTRIBUTES, ByVal _</div><div class="code_line">flProtect As Long, ByVal dwMaximumSizeHigh As Long, ByVal dwMaximumSizeLow As _</div><div class="code_line">Long, ByVal lpName As String)</div><div class="code_line">Private Declare Function OpenFileMapping&amp; Lib &quot;kernel32&quot; Alias &quot;OpenFileMappingA&quot; _</div><div class="code_line">(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal lpName As _</div><div class="code_line">String)</div><div class="code_line">Private Declare Function MapViewOfFile&amp; Lib &quot;kernel32&quot; (ByVal hFileMappingObject As _</div><div class="code_line">Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal _</div><div class="code_line">dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long)</div><div class="code_line">Private Declare Function UnmapViewOfFile&amp; Lib &quot;kernel32&quot; (ByVal lpBaseAddress As Long)</div><div class="code_line">Private Declare Function CloseHandle&amp; Lib &quot;kernel32&quot; (ByVal hObject As Long)</div><div class="code_line">Private Declare Sub CopyMemory Lib &quot;kernel32&quot; Alias &quot;RtlMoveMemory&quot; (lpDest As Any, lpSource As Any, ByVal cBytes As Long)</div><div class="code_line">&nbsp;</div><div class="code_line">Const INVALID_HANDLE_VALUE = -1</div><div class="code_line">Const PAGE_READWRITE = 4&amp;</div><div class="code_line">Const STANDARD_RIGHTS_REQUIRED = &amp;HF0000</div><div class="code_line">Const SECTION_QUERY = &amp;H1</div><div class="code_line">Const SECTION_MAP_WRITE = &amp;H2</div><div class="code_line">Const SECTION_MAP_READ = &amp;H4</div><div class="code_line">Const SECTION_MAP_EXECUTE = &amp;H8</div><div class="code_line">Const SECTION_EXTEND_SIZE = &amp;H10</div><div class="code_line">Const SECTION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED Or SECTION_QUERY Or SECTION_MAP_WRITE Or SECTION_MAP_READ Or SECTION_MAP_EXECUTE Or SECTION_EXTEND_SIZE</div><div class="code_line">Const FILE_MAP_ALL_ACCESS = SECTION_ALL_ACCESS</div><div class="code_line">&nbsp;</div><div class="code_line">Private Type SECURITY_ATTRIBUTES</div><div class="code_line">&nbsp;&nbsp; &nbsp; nLength As Long</div><div class="code_line">&nbsp;&nbsp; &nbsp; lpSecurityDescriptor As Long</div><div class="code_line">&nbsp;&nbsp; &nbsp; bInheritHandle As Long</div><div class="code_line">End Type</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<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">Dim hGlobalData As Long</div><div class="code_line">Dim hMapFile As Long</div><div class="code_line">Dim sa As SECURITY_ATTRIBUTES</div><div class="code_line">sa.bInheritHandle = 0</div><div class="code_line">sa.lpSecurityDescriptor = 0</div><div class="code_line">sa.nLength = Len(sa)</div><div class="code_line">hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE, sa, PAGE_READWRITE, 0, Len(GlobalData), &quot;Название файла&quot;)</div><div class="code_line">If hMapFile = 0 Then MsgBox (&quot;Ошибка создания файла&quot;)</div><div class="code_line">hGlobalData = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, LenB(наши данные))</div><div class="code_line">If hGlobalData = 0 Then MsgBox (&quot;Ошибка доступа к файлу&quot;)</div></ol></div></div></div></div> <br>
<br>
Теперь есть два хэндла - файла и области памяти. Работать с ними штатными апи, есть в гиде.<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">CopyMemory ByVal hGlobalData, наши данные, LenB(наши данные)</div></ol></div></div></div></div> <br>
<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">CopyMemory наши данные, ByVal hGlobalData, LenB( hGlobalData)</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='8' style='font-size:8pt;'><strong class='tag-b'>Добавлено в <time class="tag-mergetime" datetime="2004-03-26T15:31:48+00:00">26.03.04, 15:31</time></strong>:</span></span><br>
а. потом после использование надо закрывать :<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">UnmapViewOfFile hGlobalData</div><div class="code_line">CloseHandle hMapFile</div></ol></div></div></div></div>]]></description>
        <author>Vasya2000</author>
        <category>Работа с Windows</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=49373&amp;view=findpost&amp;p=325173</guid>
        <pubDate>Fri, 26 Mar 2004 13:32:18 +0000</pubDate>
        <title>Как работать с Memory-mapped files</title>
        <link>https://forum.sources.ru/index.php?showtopic=49373&amp;view=findpost&amp;p=325173</link>
        <description><![CDATA[Cremator: Народ кто работал с этим в VB? Очень надо хоть какой-нибудь пример.]]></description>
        <author>Cremator</author>
        <category>Работа с Windows</category>
      </item>
	
      </channel>
      </rss>
	