亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tut13.html

?? WINDOWS程序員使用指南--匯編基礎
?? HTML
?? 第 1 頁 / 共 4 頁
字號:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="Author" content="Iczelion">
   <meta name="GENERATOR" content="Mozilla/4.51 [en] (Win95; I) [Netscape]">
   <title>Iczelion's Win32 Assembly Tutorial 13: Memory Mapped Files</title>
</head>
<body text="#FFFFFF" bgcolor="#000000" link="#FFFF00" vlink="#C0C0C0" alink="#C0FFC0">

<center>
<h1>
<font face="Arial,Helvetica"><font color="#999900">Tutorial 13: Memory
Mapped Files</font></font></h1></center>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>I'll show
you what memory mapped files are and how to use them to your advantages.
Using a memory mapped file is quite easy as you'll see in this tutorial.</font></font></font>
<p><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>Download
the example <a href="files/tut13.zip">here</a>.</font></font></font>
<h3>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=+0>Theory:</font></font></font></h3>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>If you
examine the example in the previous tutorial closely, you'll find that
it has a serious shortcoming: what if the file you want to read is larger
than the allocated memory block? or what if the string you want to search
for is cut off in half at the end of the memory block? The traditional
answer for the first question is that you should repeatedly read in the
data from the file until the end of file is encountered. The answer to
the second question is that you should prepare for the special case at
the end of the memory block. This is called a boundary value problem. It
presents headaches to programmers and causes innumerable bugs.</font></font></font>
<br><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>It
would be nice if we can allocate a very large block of memory, enough to
store the whole file but our program would be a resource hog. File mapping
to the rescue. By using file mapping, you can think of the whole file as
being already loaded into memory and you can use a memory pointer to read
or write data from the file. As easy as that. No need to use memory API
functions and separate File I/O API functions anymore, they are one and
the same under file mapping. File mapping is also used as a means to share
data between processes. Using file mapping in this way, there's no actual
file involved. It's more like a reserved memory block that every process
can *see*. But sharing data between processes is a delicate subject, not
to be treated lightly. You have to implement process and thread synchronization
else your applications will crash in very short order.</font></font></font>
<br><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>We
will not touch the subject of file mapping as a means to create a shared
memory region in this tutorial. We'll concentrate on how to use file mapping
as a means to "map" a file into memory. In fact, the PE loader uses file
mapping to load executable files into memory. It is very convenient since
only the necessary portions can be selectively read from the file on the
disk. Under Win32, you should use file mapping as much as possible.</font></font></font>
<br><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>There
are some limitation to file mapping though. Once you create a memory mapped
file, its size cannot be changed during that session. So file mapping is
great for read-only files or file operations that don't affect the file
size. That doesn't mean that you cannot use file mapping if you want to
increase the file size. You can estimate the new size and create the memory
mapped file based on the new size and the file will grow to that size.
It's just inconvenient, that's all.</font></font></font>
<br><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>Enough
for the explanation. Let's dive into implementation of file mapping. In
order to use file mapping, these steps must be performed:</font></font></font>
<ol>
<li>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>call <b>CreateFile</b>
to open the file you want to map.</font></font></font></li>

<li>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>call <b>CreateFileMapping</b>
with the file handle returned by CreateFile as one of its parameter. This
function creates a file mapping object from the file opened by CreateFile.</font></font></font></li>

<li>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>call <b>MapViewOfFile</b>
to map a selected file region or the whole file to memory. This function
returns a pointer to the first byte of the mapped file region.</font></font></font></li>

<li>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>Use the
pointer to read or write the file</font></font></font></li>

<li>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>call <b>UnmapViewOfFile</b>
to unmap the file.</font></font></font></li>

<li>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>call <b>CloseHandle</b>
with the handle to the mapped file as the parameter to close the mapped
file.</font></font></font></li>

<li>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>call <b>CloseHandle</b>
again this time with the file handle returned by CreateFile to close the
actual file.</font></font></font></li>
</ol>

<h3>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=+0>Example:</font></font></font></h3>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>The program
listed below lets you open a file via an open file dialog box. It opens
the file using file mapping, if it's successful, the window caption is
changed to the name of the opened file. You can save the file in another
name by select File/Save as menuitem. The program will copy the whole content
of the opened file to the new file. Note that you don't have to call GlobalAlloc
to allocate a memory block in this program.</font></font></font>
<p><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>.386</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>.model
flat,stdcall</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>WinMain
proto :DWORD,:DWORD,:DWORD,:DWORD</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>include
\masm32\include\windows.inc</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>include
\masm32\include\user32.inc</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>include
\masm32\include\kernel32.inc</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>include
\masm32\include\comdlg32.inc</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>includelib
\masm32\lib\user32.lib</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>includelib
\masm32\lib\kernel32.lib</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>includelib
\masm32\lib\comdlg32.lib</font></font></font></b>
<p><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>.const</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>IDM_OPEN
equ 1</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>IDM_SAVE
equ 2</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>IDM_EXIT
equ 3</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>MAXSIZE
equ 260</font></font></font></b>
<p><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>.data</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>ClassName
db "Win32ASMFileMappingClass",0</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>AppName&nbsp;
db "Win32 ASM File Mapping Example",0</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>MenuName
db "FirstMenu",0</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>ofn&nbsp;&nbsp;
OPENFILENAME &lt;></font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>FilterString
db "All Files",0,"*.*",0</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
db "Text Files",0,"*.txt",0,0</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>buffer
db MAXSIZE dup(0)</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>hMapFile
HANDLE 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
; Handle to the memory mapped file, must be</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线视频免费91| 欧美一区二区三区思思人| 在线观看亚洲精品视频| 精品久久久久久久一区二区蜜臀| 国产精品嫩草99a| 精品在线免费视频| 欧美亚洲高清一区二区三区不卡| 国产日韩欧美精品电影三级在线| 日韩国产一二三区| 在线观看精品一区| 欧美国产欧美综合| 精品在线免费观看| 欧美日韩国产另类一区| 一区二区三区在线观看欧美| 国产不卡视频在线播放| www精品美女久久久tv| 日本欧美加勒比视频| 在线日韩av片| 亚洲激情一二三区| 91麻豆6部合集magnet| 中文字幕免费不卡| 国产高清不卡一区二区| 精品免费国产二区三区| 另类调教123区| 欧美一区二区三区免费大片| 亚洲第一综合色| 一道本成人在线| 一区二区成人在线| 91久久精品国产91性色tv| 亚洲老妇xxxxxx| 在线观看亚洲a| 午夜精品福利视频网站| 欧美日韩国产大片| 亚洲成人动漫av| 在线观看区一区二| 午夜精品视频在线观看| 91精品国产乱码| 麻豆国产91在线播放| 精品国产免费视频| 高清成人免费视频| 亚洲视频小说图片| 欧美日韩在线不卡| 久久福利资源站| 亚洲国产精品传媒在线观看| 波多野结衣中文字幕一区二区三区| 国产精品麻豆视频| 91麻豆.com| 免费高清在线视频一区·| www日韩大片| 91网站在线观看视频| 亚洲v中文字幕| 久久男人中文字幕资源站| 国产黄色91视频| 亚洲欧美国产三级| 欧美一区二区精品| 成人免费不卡视频| 午夜精品一区在线观看| 久久综合精品国产一区二区三区| 成人综合婷婷国产精品久久蜜臀| 一区二区三区精品久久久| 日韩一区二区不卡| 成人app网站| 日韩有码一区二区三区| 日本一区免费视频| 欧美三级韩国三级日本一级| 国产精一区二区三区| 亚洲欧洲成人av每日更新| 欧美高清视频一二三区| 国产精品伊人色| 亚洲大片精品永久免费| 久久久久久久免费视频了| 欧美日韩在线播放三区四区| www.日韩av| 日韩电影网1区2区| 中文字幕一区二区三区色视频| 欧美伦理电影网| www.av精品| 精品亚洲成a人在线观看 | 色综合天天综合| 久久99精品国产麻豆婷婷| 一区二区三区四区不卡视频| 亚洲精品一区二区三区99| 欧美丝袜丝交足nylons| 成人丝袜高跟foot| 美国毛片一区二区| 五月婷婷综合网| 国产精品久久久久久久浪潮网站| 日韩三级电影网址| 欧美精品1区2区| 欧洲日韩一区二区三区| 成人av在线影院| 国产真实精品久久二三区| 日韩高清国产一区在线| 一区二区三区四区中文字幕| 中日韩av电影| 精品日韩一区二区三区 | 在线免费av一区| www.亚洲精品| 国产成人精品免费| 久久国产综合精品| 日本美女视频一区二区| 青青草国产精品亚洲专区无| 亚洲永久精品国产| 一区二区三区自拍| 一区二区在线观看不卡| 亚洲欧洲av色图| 国产精品久久久久久久久快鸭| 久久免费国产精品| 国产亚洲精品中文字幕| 久久久久青草大香线综合精品| 精品国产一区二区三区忘忧草| 欧美一区日韩一区| 欧美一区二区精美| 91精品国产欧美一区二区成人| 欧美日韩精品是欧美日韩精品| 日本乱人伦aⅴ精品| 色哟哟一区二区在线观看| 91免费版在线看| 色猫猫国产区一区二在线视频| 成人精品国产福利| 91麻豆蜜桃一区二区三区| 97se亚洲国产综合自在线不卡| 91丝袜美女网| 91成人在线观看喷潮| 欧美亚洲一区二区在线观看| 欧美久久久久久久久| 91精品国产综合久久福利软件| 在线播放91灌醉迷j高跟美女| 91麻豆精品国产91| 日韩精品中文字幕一区| 久久久精品国产免大香伊 | 日韩精品专区在线| 国产三级一区二区| 国产精品视频一二三区| 亚洲激情第一区| 亚洲国产精品一区二区www在线| 五月综合激情网| 国产一区二区三区精品视频| 99免费精品视频| 欧美日韩国产区一| xfplay精品久久| 一区二区三区欧美日| 日韩av在线播放中文字幕| 国产成人在线看| 欧美日韩的一区二区| 精品99999| 亚洲免费高清视频在线| 全部av―极品视觉盛宴亚洲| 成人妖精视频yjsp地址| 欧美色视频一区| 国产欧美一区二区三区网站 | 一本久道久久综合中文字幕| 欧美日韩免费观看一区二区三区| 精品处破学生在线二十三| 亚洲精品国产一区二区精华液| 欧美a级理论片| 一本一道久久a久久精品| 精品免费日韩av| 亚洲精品久久嫩草网站秘色| 国产一区二区三区蝌蚪| 欧美人体做爰大胆视频| 国产三级欧美三级日产三级99| 亚洲午夜三级在线| 菠萝蜜视频在线观看一区| 日韩免费高清视频| 亚洲国产日韩一区二区| 国产宾馆实践打屁股91| 日韩一区二区视频| 亚洲主播在线观看| 成人激情免费电影网址| 精品国产一区二区在线观看| 亚洲国产精品一区二区久久恐怖片 | 蜜桃一区二区三区在线观看| 一本一道久久a久久精品| 国产清纯美女被跳蛋高潮一区二区久久w | 日韩成人一区二区三区在线观看| 成人国产精品免费网站| 久久嫩草精品久久久精品一| 日韩国产在线观看一区| 欧美综合欧美视频| 亚洲视频香蕉人妖| 不卡一卡二卡三乱码免费网站| 久久综合国产精品| 美国毛片一区二区三区| 91麻豆精品国产91久久久久久| 亚洲一区在线视频观看| 91老师国产黑色丝袜在线| 中文成人综合网| 国产suv精品一区二区883| 久久综合色播五月| 狠狠网亚洲精品| 欧美精品一区在线观看| 国产在线一区观看| 久久蜜桃av一区二区天堂| 精品午夜一区二区三区在线观看| 欧美一区二区三区免费大片| 麻豆成人av在线| 精品剧情v国产在线观看在线| 蓝色福利精品导航| 久久久久久影视|