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

road420

導航

<2010年9月>
2930311234
567891011
12131415161718
19202122232425
262728293012
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 深邃者 閱讀(438) 評論(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>
            韩日欧美一区二区| 国产乱码精品一区二区三| 在线观看日韩专区| 久久资源av| 亚洲一区免费| 欧美国产三区| 性欧美1819性猛交| 韩国一区二区三区在线观看| 欧美日韩午夜在线视频| 久久国产精品一区二区三区| 亚洲电影免费观看高清完整版在线观看 | 亚洲一区制服诱惑| 影音先锋中文字幕一区二区| 国精品一区二区三区| 欧美亚一区二区| 蜜臀av一级做a爰片久久| 午夜精品视频一区| 在线视频免费在线观看一区二区| 欧美成人免费播放| 欧美中文在线免费| 亚洲一区二区在线免费观看视频| 亚洲免费一在线| 一本大道久久a久久综合婷婷| 精品二区视频| 国产视频在线观看一区二区三区| 欧美色视频日本高清在线观看| 你懂的亚洲视频| 乱人伦精品视频在线观看| 欧美日韩精品免费观看视一区二区 | 欧美在线二区| 亚洲欧美日韩一区二区三区在线 | 亚洲国产精品悠悠久久琪琪| 国产乱人伦精品一区二区| 在线观看视频一区| 亚洲欧美在线x视频| 午夜影视日本亚洲欧洲精品| 欧美xx69| 亚洲国产精品久久| 亚洲电影第1页| 亚洲欧美电影院| 欧美一区二区精品在线| 欧美一级免费视频| 欧美日韩久久久久久| 在线观看日韩一区| 欧美在线电影| 制服丝袜亚洲播放| 欧美日韩国产首页| 亚洲精品久久久蜜桃| 夜夜嗨av一区二区三区| 美女爽到呻吟久久久久| 亚洲激情网站| 91久久久国产精品| 欧美日韩精品免费 | 免费短视频成人日韩| 国产欧美日韩亚洲精品| 国产一区视频在线看| 亚洲一区视频| 99re6热只有精品免费观看| 亚洲一区在线视频| 欧美日韩在线一区二区| 亚洲看片网站| 欧美在线免费观看亚洲| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 午夜影院日韩| 亚洲天堂成人| 久久精品人人| 欧美精品在线看| 国产精品美女主播在线观看纯欲| 国产一级揄自揄精品视频| 亚洲欧洲日本一区二区三区| 久久综合色8888| 中日韩男男gay无套| 欧美日韩黄色一区二区| 亚洲直播在线一区| 亚洲免费视频中文字幕| 国产日韩综合| 欧美成人精品1314www| 欧美成年人视频网站欧美| 国产三区精品| 久久综合久久美利坚合众国| 亚洲巨乳在线| 久久伊人亚洲| 国产精品亚洲片夜色在线| 亚洲精品欧美在线| 日韩午夜精品| 国产欧美日韩专区发布| 狼人天天伊人久久| 欧美精品大片| **性色生活片久久毛片| 欧美在线国产精品| 欧美综合77777色婷婷| 国产精品素人视频| 久久精品理论片| 亚洲一区二区免费视频| 国产在线观看一区| 亚洲精品综合精品自拍| 国产亚洲高清视频| 亚洲福利视频三区| 国产农村妇女毛片精品久久麻豆| 久久蜜臀精品av| 欧美一区二区视频免费观看| 亚洲国产精品一区二区尤物区| 麻豆亚洲精品| 欧美色另类天堂2015| 有坂深雪在线一区| 亚洲欧美日韩国产综合精品二区| 久久精品亚洲一区二区三区浴池| 亚洲青涩在线| 亚洲欧美文学| 国产精品久久久久久久电影| 一本久久综合| 久久激情综合| 亚洲欧美影音先锋| 欧美日韩一区在线| 欧美高清视频免费观看| 国产无一区二区| 一区二区三区四区蜜桃| 亚洲乱码精品一二三四区日韩在线 | 亚洲麻豆视频| 久久精品人人| 久久精品一区二区三区不卡| 亚洲欧美日韩综合一区| 一区二区高清视频| 一本色道婷婷久久欧美| 亚洲精品日韩一| 久久精品在线视频| 欧美在线观看视频在线| 国产精品你懂的| 国产精品99久久久久久久久久久久| 亚洲欧洲久久| 欧美aⅴ99久久黑人专区| 女人色偷偷aa久久天堂| 国产综合色产在线精品| 久久9热精品视频| 久久久噜噜噜久噜久久| 国产日韩欧美综合在线| 欧美在线不卡| 久久这里只有| 亚洲高清不卡| 欧美大秀在线观看| 亚洲成人直播| 国产精品久久一区二区三区| 亚洲美女免费视频| 亚洲一级片在线看| 欧美制服丝袜第一页| 久久疯狂做爰流白浆xx| 国产亚洲人成a一在线v站| 亚洲欧美综合v| 久久久久久一区二区三区| 韩国亚洲精品| 欧美大片在线看| 亚洲另类在线视频| 亚洲综合精品自拍| 国产九九精品| 久久蜜桃精品| 亚洲第一精品夜夜躁人人躁| 亚洲每日更新| 国产精品呻吟| 久久久精品一区| 亚洲欧洲精品一区二区精品久久久| 亚洲精品看片| 国产欧美日韩精品在线| 久久美女艺术照精彩视频福利播放| 欧美激情bt| 午夜精品视频在线观看| 激情欧美日韩| 欧美日韩亚洲免费| 亚洲国产精品va在线看黑人| 亚洲国产高清在线观看视频| 欧美久久久久久久| 亚洲女性裸体视频| 你懂的一区二区| 亚洲午夜羞羞片| 黄色欧美成人| 欧美日韩视频在线观看一区二区三区 | 久久黄色影院| 亚洲精品极品| 国产亚洲一区二区精品| 欧美国产日韩a欧美在线观看| 久久精品国产精品亚洲| 亚洲国产精品久久久| 欧美肉体xxxx裸体137大胆| 欧美一区二粉嫩精品国产一线天| 亚洲第一网站| 久久中文久久字幕| 欧美一级视频精品观看| 亚洲卡通欧美制服中文| 国产一区在线播放| 欧美午夜电影完整版| 久久天天躁狠狠躁夜夜av| 亚洲性视频网址| 亚洲人成在线观看网站高清| 99精品视频网| 欧美日本一区二区高清播放视频| 亚洲自啪免费| 99re66热这里只有精品3直播| 蜜桃av久久久亚洲精品| 欧美亚洲免费高清在线观看| av成人免费观看| 亚洲欧洲中文日韩久久av乱码|