青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

road420

導航

<2008年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

統計

常用鏈接

留言簿(2)

隨筆檔案

文章檔案

搜索

最新評論

閱讀排行榜

評論排行榜

dll #pragma data_seg 實現數據的共享

#pragma data_seg("flag_data")
   int count=0;
#pragma data_seg()
#pragma comment(linker,"/SECTION:flag_data,RWS")
這種方法只能在沒有def文件時使用,如果通過def文件進行導出的話,那么設置就要在def文件內設置而不能
在代碼里設置了。
SETCTIONS
flag_data READ WRITE SHARED

 

在主文件中,用#pragma data_seg建立一

個新的數據段并定義共享數據,其具體格式為:

#pragma data_seg ("shareddata") //名稱可以

//自己定義,但必須與下面的一致。

HWND sharedwnd=NULL;//共享數據

#pragma data_seg()



僅定義一個數據段還不能達到共享數據的目的,還要告訴編譯器該段的屬性,有兩種方法可以實現該目的 (其效果是相同的),一種方法是在.DEF文件中加入如下語句: SETCTIONS shareddata READ WRITE SHARED 另一種方法是在項目設置鏈接選項(Project Setting --〉Link)中加入如下語句: /SECTION:shareddata,rws

第一點:什么是共享數據段?為什么要用共享數據段??它有什么用途??
在Win16環境中,DLL的全局數據對每個載入它的進程來說都是相同的;而在Win32環境中,情況卻發生了變化,DLL函數中的代碼所創建的任何對象(包括變量)都歸調用它的線程或進程所有。當進程在載入DLL時,操作系統自動把DLL地址映射到該進程的私有空間,也就是進程的虛擬地址空間,而且也復制該DLL的全局數據的一份拷貝到該進程空間。也就是說每個進程所擁有的相同的DLL的全局數據,它們的名稱相同,但其值卻并不一定是相同的,而且是互不干涉的。

因此,在Win32環境下要想在多個進程中共享數據,就必須進行必要的設置。在訪問同一個Dll的各進程之間共享存儲器是通過存儲器映射文件技術實現的。也可以把這些需要共享的數據分離出來,放置在一個獨立的數據段里,并把該段的屬性設置為共享。必須給這些變量賦初值,否則編譯器會把沒有賦初始值的變量放在一個叫未被初始化的數據段中。



#pragma data_seg預處理指令用于設置共享數據段。例如:

#pragma data_seg("SharedDataName") HHOOK hHook=NULL; //必須在定義的同時進行初始化!!!!#pragma data_seg()

在#pragma data_seg("SharedDataName")和#pragma data_seg()之間的所有變量將被訪問該Dll的所有進程看到和共享。再加上一條指令#pragma comment(linker,"/section:.SharedDataName,rws"),[注意:數據節的名稱is case sensitive]那么這個數據節中的數據可以在所有DLL的實例之間共享。所有對這些數據的操作都針對同一個實例的,而不是在每個進程的地址空間中都有一份。



當進程隱式或顯式調用一個動態庫里的函數時,系統都要把這個動態庫映射到這個進程的虛擬地址空間里(以下簡稱"地址空間")。這使得DLL成為進程的一部分,以這個進程的身份執行,使用這個進程的堆棧。(這項技術又叫code Injection技術,被廣泛地應用在了病毒、黑客領域!呵呵^_^)



第二點:在具體使用共享數據段時需要注意的一些問題!

Win32 DLLs are mapped into the address space of the calling process. By default, each process using a DLL has its own instance of all the DLLs global and static variables. (注意: 即使是全局變量和靜態變量也都不是共享的!) If your DLL needs to share data with other instances of it loaded by other applications, you can use either of the following approaches:

· Create named data sections using the data_seg pragma.

· Use memory mapped files. See the Win32 documentation about memory mapped files.

Here is an example of using the data_seg pragma:

#pragma data_seg (".myseg")
int i = 0;
char a[32] = "hello world";
#pragma data_seg()

data_seg can be used to create a new named section (.myseg in this example). The most typical usage is to call the data segment .shared for clarity. You then must specify the correct sharing attributes for this new named data section in your .def file or with the linker option /SECTION:.MYSEC,RWS. (這個編譯參數既可以使用pragma指令來指定,也可以在VC的IDE中指定!)

There are restrictions to consider before using a shared data segment:

· Any variables in a shared data segment must be statically initialized. In the above example, i is initialized to 0 and a is 32 characters initialized to hello world.

· All shared variables are placed in the compiled DLL in the specified data segment. Very large arrays can result in very large DLLs. This is true of all initialized global variables.

· Never store process-specific information in a shared data segment. Most Win32 data structures or values (such as HANDLEs) are really valid only within the context of a single process.

· Each process gets its own address space. It is very important that pointers are never stored in a variable contained in a shared data segment. A pointer might be perfectly valid in one application but not in another.

· It is possible that the DLL itself could get loaded at a different address in the virtual address spaces of each process. It is not safe to have pointers to functions in the DLL or to other shared variables.

posted on 2010-09-16 10:25 深邃者 閱讀(439) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一区二区在线观看视频在线观看| 欧美不卡激情三级在线观看| 国产日韩欧美黄色| 欧美午夜精品久久久| 欧美极品在线视频| 欧美久久影院| 欧美日韩免费看| 欧美www视频| 免费观看在线综合色| 欧美高清视频在线| 欧美日韩第一页| 欧美精品一区二区三区蜜桃| 欧美日韩a区| 欧美伦理一区二区| 欧美日韩精品欧美日韩精品一| 欧美日韩午夜激情| 国产亚洲一本大道中文在线| 国产午夜精品视频| 亚洲区一区二区三区| 99精品国产福利在线观看免费| 在线播放中文字幕一区| 怡红院精品视频| 一区二区三区久久精品| 香蕉av777xxx色综合一区| 久久综合伊人77777蜜臀| 欧美国产高潮xxxx1819| 亚洲高清久久网| 亚洲人精品午夜在线观看| 999亚洲国产精| 久久久99免费视频| 欧美日韩大片| 国产精品美女久久久久av超清| 国产精品久久久久永久免费观看 | 午夜一区二区三视频在线观看 | 一区二区国产精品| 亚洲欧美经典视频| 亚洲电影免费观看高清完整版在线| 91久久在线| 久久精品国产69国产精品亚洲| 久久亚洲精品视频| 欧美午夜不卡在线观看免费 | 日韩视频在线观看一区二区| 亚洲欧美卡通另类91av| 久久手机免费观看| 欧美一级在线视频| 久久国产精品99国产| 国产精品福利在线| 亚洲国产一区在线| 久久青青草综合| 亚洲一区二区三区免费观看| 国产一区二区三区高清播放| 亚洲精品黄网在线观看| 久久久精品2019中文字幕神马| 亚洲国产婷婷香蕉久久久久久| 欧美亚洲日本国产| 欧美三级电影一区| 日韩天堂av| 亚洲人成啪啪网站| 男同欧美伦乱| 亚洲欧洲精品一区二区三区不卡| 久久先锋资源| 久久精品国产99| 在线观看三级视频欧美| 久久综合九色综合久99| 久久亚洲二区| 在线观看一区| 久久久久九九九九| 久久三级视频| 最新日韩欧美| 亚洲免费av电影| 国产精品久久99| 午夜精品一区二区三区四区 | 久久久久久综合网天天| 国产亚洲午夜| 老司机一区二区| 你懂的视频欧美| 一本大道久久精品懂色aⅴ| 亚洲免费观看高清完整版在线观看| 欧美日韩亚洲一区二| 欧美亚洲专区| 久久综合久久久久88| 亚洲人成精品久久久久| 亚洲麻豆一区| 国产女人18毛片水18精品| 久久久亚洲综合| 欧美成人综合网站| 亚洲女同性videos| 久久久久久久网站| 正在播放亚洲| 欧美一区二区三区视频在线观看| 精品51国产黑色丝袜高跟鞋| 亚洲国产成人久久综合| 欧美日韩一区二区三区高清| 久久精品导航| 欧美韩日视频| 久久精品麻豆| 欧美久久久久久| 久久精品人人做人人爽电影蜜月| 欧美aⅴ99久久黑人专区| 亚洲一区二区在线免费观看| 久久久久国产成人精品亚洲午夜| 一区二区三区精品在线 | 欧美黄色免费| 欧美天天综合网| 免费高清在线一区| 国产精品久久激情| 亚洲成人在线视频播放| 另类尿喷潮videofree| 免费日韩av电影| 久久亚洲高清| 99国产精品私拍| 欧美一区午夜精品| 一本色道久久综合亚洲精品小说 | 麻豆成人在线播放| 午夜精品久久久久久| 欧美大色视频| 久久久久亚洲综合| 欧美日韩精品伦理作品在线免费观看 | 欧美日韩精品一区二区| 欧美一区中文字幕| 欧美丝袜一区二区| 亚洲电影观看| 在线日本成人| 久久精品日韩欧美| 性欧美videos另类喷潮| 欧美日韩精品一区二区三区| 亚洲激情成人| 91久久精品久久国产性色也91| 欧美一级播放| 午夜精品国产更新| 国产精品美女www爽爽爽视频| 日韩午夜电影av| 这里只有精品在线播放| 欧美裸体一区二区三区| 亚洲人成网站在线播| 亚洲经典三级| 欧美国产日韩免费| 亚洲精品小视频在线观看| 日韩亚洲欧美综合| 欧美日韩视频在线第一区| 亚洲美女少妇无套啪啪呻吟| 亚洲视频欧美视频| 国产精品www色诱视频| 亚洲视频一区二区| 亚洲综合色在线| 国产日韩精品视频一区二区三区| 亚洲欧美日韩精品久久| 久久精品日韩| 亚洲狠狠丁香婷婷综合久久久| 老巨人导航500精品| 亚洲大胆av| 亚洲精品精选| 欧美午夜一区二区福利视频| 亚洲免费视频在线观看| 久久久噜噜噜久久中文字免| 在线观看成人网| 欧美成人免费大片| 夜夜嗨av一区二区三区四季av| 亚洲一区二区免费| 国产一区二区在线观看免费播放| 久久精品久久综合| 亚洲日韩第九十九页| 亚洲欧美日本国产专区一区| 国产日产欧美精品| 欧美成人四级电影| 亚洲小视频在线观看| 久久综合伊人77777| 日韩一级大片在线| 国产亚洲精品7777| 欧美精品在线观看一区二区| 亚洲综合电影一区二区三区| 久久在线视频| 亚洲视频一区| 黑人一区二区三区四区五区| 欧美午夜激情视频| 亚洲性色视频| 欧美本精品男人aⅴ天堂| 亚洲狼人精品一区二区三区| 欧美成人免费全部观看天天性色| 国产婷婷一区二区| 欧美成人资源| 国产精品日韩欧美大师| 免费日韩av电影| 国产精品久久久久久久久久免费| 久久久www成人免费无遮挡大片| 久久久国产精品亚洲一区| 亚洲欧洲一级| 久久成人久久爱| 亚洲一区激情| 欧美日本免费| 亚洲国产成人不卡| 国产女人水真多18毛片18精品视频| 美女主播精品视频一二三四| 国产精品久久99| 亚洲视频免费在线| 亚洲综合色丁香婷婷六月图片| 免播放器亚洲一区| 亚洲第一级黄色片| 亚洲日本一区二区三区| 欧美暴力喷水在线|