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

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 深邃者 閱讀(448) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲久久一区二区| 欧美一级视频| 99热精品在线| 国产一级精品aaaaa看| 亚洲欧美日韩精品久久亚洲区| 国产精品免费一区二区三区在线观看| 欧美一区二区三区喷汁尤物| 国产精品美女www爽爽爽| 亚洲自拍偷拍福利| 亚洲欧美国产精品专区久久| 国产三区精品| 欧美成人精品在线视频| 欧美 日韩 国产在线| 亚洲精品一区二区三区不| 欧美电影免费观看高清| 亚洲婷婷免费| 久久国产视频网| 亚洲欧洲在线看| 亚洲视频在线观看网站| 国产一本一道久久香蕉| 欧美激情在线狂野欧美精品| 国产精品分类| 欧美韩日视频| 久久国产精品色婷婷| 久久综合99re88久久爱| 一本色道久久加勒比88综合| 午夜日韩视频| 亚洲日本乱码在线观看| 亚洲欧美在线aaa| 亚洲激情视频网站| 性8sex亚洲区入口| 一本色道久久综合亚洲精品不 | 亚洲午夜国产一区99re久久| 亚洲在线免费| 亚洲精品视频在线| 久久久久久精| 在线午夜精品| 免费观看成人鲁鲁鲁鲁鲁视频 | 久久夜色精品| 亚洲欧美网站| 欧美激情一区二区三区不卡| 久久精品夜色噜噜亚洲aⅴ| 欧美精品一区在线| 欧美成人午夜| 国产视频不卡| 一区二区三区成人精品| 樱花yy私人影院亚洲| 国产精品99久久久久久宅男 | 美国成人毛片| 欧美一区二区播放| 欧美精品日本| 欧美激情国产高清| 在线精品视频在线观看高清| 午夜精品一区二区三区四区| 亚洲天堂激情| 欧美日本乱大交xxxxx| 欧美国产精品专区| 国内精品久久久久久影视8| 亚洲图片激情小说| 亚洲网站在线| 欧美四级伦理在线| 日韩一级不卡| 一区二区高清视频在线观看| 欧美国产91| 亚洲国产婷婷综合在线精品| 亚洲黄色在线观看| 久久婷婷麻豆| 亚洲国产精品福利| 亚洲精品资源美女情侣酒店| 欧美www视频| 亚洲人永久免费| 99视频精品| 欧美三级视频在线播放| 一区二区三区高清不卡| 午夜欧美精品久久久久久久| 国产精品美女黄网| 午夜免费电影一区在线观看| 久久成人在线| 在线精品在线| 欧美乱妇高清无乱码| 一本色道久久综合亚洲精品按摩 | 一区二区三区日韩欧美精品| 欧美人与性动交cc0o| 99热在线精品观看| 欧美一区二区视频免费观看 | 亚洲伦理精品| 亚洲在线一区| 国产一区二区三区电影在线观看| 欧美成人午夜激情在线| 亚洲精品四区| 欧美午夜不卡| 久久精品成人| 亚洲日本黄色| 久久国产主播| 日韩亚洲欧美一区二区三区| 国产精品99一区| 久久天堂精品| 亚洲视频精选在线| 久久久久久香蕉网| 日韩西西人体444www| 国产精品专区一| 男人的天堂成人在线| 一本色道久久综合一区| 久久精品九九| 99国产精品国产精品毛片| 国产欧美一区二区精品婷婷| 鲁鲁狠狠狠7777一区二区| 一区二区三区导航| 欧美肥婆bbw| 久久av最新网址| 一本色道久久88综合日韩精品| 久久一二三国产| 亚洲色无码播放| 亚洲福利专区| 久久久久久久久久码影片| 一本色道久久综合精品竹菊 | 你懂的国产精品| 中日韩高清电影网| 亚洲国产成人在线播放| 欧美一区二区三区久久精品| 亚洲欧洲日本专区| 悠悠资源网亚洲青| 国产伦理精品不卡| 欧美日精品一区视频| 欧美ed2k| 另类天堂av| 久久久久免费观看| 欧美一区成人| 亚洲影院色无极综合| 亚洲精品一二三区| 欧美激情按摩| 欧美不卡在线| 毛片精品免费在线观看| 久久av资源网站| 欧美影院精品一区| 亚洲综合电影一区二区三区| 亚洲伦理久久| 亚洲精品一线二线三线无人区| 欧美美女操人视频| 欧美成人69av| 欧美高清在线一区| 欧美暴力喷水在线| 久久综合九色综合网站| 欧美综合二区| 久久国产精品久久国产精品| 亚洲欧美激情精品一区二区| 国产精品99久久久久久久久| 亚洲图片欧洲图片av| 亚洲视频欧美在线| 亚洲午夜电影网| 亚洲午夜精品17c| 亚洲欧美在线磁力| 久久成人国产精品| 久久久精品国产免大香伊| 久久国产手机看片| 免费成人在线视频网站| 久久久夜色精品亚洲| 久久综合福利| 欧美日韩亚洲一区二区三区四区| 亚洲视频一区二区| 先锋a资源在线看亚洲| 欧美一区二区三区视频在线| 欧美一区二区精美| 久久精品国产久精国产爱 | 99成人精品| 亚洲欧美一级二级三级| 久久免费视频在线观看| 美女91精品| 91久久香蕉国产日韩欧美9色| 亚洲欧美视频| 久久精品中文字幕一区| 久久天天躁狠狠躁夜夜爽蜜月| 欧美在线观看日本一区| 久久精品国产亚洲精品| 蜜臀va亚洲va欧美va天堂| 欧美日韩亚洲视频| 国产日韩一区二区三区在线| 亚洲高清免费| 亚洲一二区在线| 久久综合国产精品| 亚洲久久一区二区| 欧美中文字幕在线| 免费观看亚洲视频大全| 欧美视频一区二区三区…| 国产亚洲一区二区三区在线观看 | 激情成人综合网| 亚洲精品网址在线观看| 午夜精品福利在线| 久久综合网络一区二区| 日韩一级黄色片| 久久久久久久久久久久久女国产乱| 亚洲午夜精品一区二区三区他趣| 亚洲黄色一区二区三区| 午夜一级久久| 欧美黑人一区二区三区| 国语对白精品一区二区| 午夜在线观看免费一区| 亚洲人成亚洲人成在线观看图片| 亚洲三级电影在线观看| 久久精品一区|