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

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>
            亚洲国产aⅴ天堂久久| 尤物精品国产第一福利三区| 亚洲精品久久久久久下一站| 久久综合中文色婷婷| 久久久久中文| 亚洲精品三级| 亚洲精品一区在线| 国产精品久久毛片a| 性久久久久久久久| 欧美在线播放视频| 亚洲区在线播放| 中文精品视频| 国产一区二区高清不卡| 美女网站在线免费欧美精品| 久久亚洲春色中文字幕久久久| 亚洲成在人线av| 亚洲国产福利在线| 国产精品久久国产精品99gif | 欧美日韩国产精品一区| 正在播放亚洲| 久久精品视频免费播放| 亚洲人屁股眼子交8| 一区二区欧美日韩| 激情小说亚洲一区| 亚洲最新视频在线| 国产一区美女| 亚洲免费av电影| 国内精品久久国产| 欧美午夜不卡视频| 欧美 亚欧 日韩视频在线| 国产精品国产三级国产aⅴ无密码| 欧美一区二区三区精品 | 国产精品视频免费一区| 亚洲一区在线观看视频 | 欧美在线视屏 | 一本大道久久a久久精二百| 一本色道久久综合狠狠躁篇的优点 | 国产精品av一区二区| 久久在线精品| 欧美日韩在线大尺度| 久久精品日韩一区二区三区| 欧美福利电影网| 久久人人爽人人| 国产精品成人观看视频国产奇米| 猛干欧美女孩| 国产欧美日韩精品专区| 亚洲精品久久久久| 亚洲成人资源网| 欧美在线播放视频| 午夜精品久久久99热福利| 欧美1区3d| 久久在线视频在线| 国产伦理精品不卡| 在线视频精品一| 99re66热这里只有精品4| 久久不射电影网| 欧美中文字幕在线视频| 欧美日韩一区二区三区| 亚洲高清中文字幕| 亚洲国产精品激情在线观看| 久久九九免费| 久久久亚洲精品一区二区三区| 欧美亚洲成人免费| 中日韩午夜理伦电影免费| 99国产精品99久久久久久| 免费在线视频一区| 欧美激情一区二区久久久| 伊人成人开心激情综合网| 久久国产精品99久久久久久老狼 | 亚洲看片网站| 蜜臀99久久精品久久久久久软件| 久久香蕉国产线看观看av| 国内外成人免费视频 | 欧美风情在线观看| 亚洲黄色视屏| 欧美精品九九99久久| 欧美视频在线一区二区三区| 亚洲人妖在线| 亚洲欧美日韩国产综合精品二区| 国产精品扒开腿做爽爽爽软件| 一区二区三区视频观看| 欧美亚洲综合在线| 黄色成人在线网站| 老司机aⅴ在线精品导航| 亚洲福利免费| 亚洲在线观看| 国产一区二区精品久久91| 久久免费偷拍视频| 亚洲三级影片| 久久超碰97中文字幕| 在线播放日韩| 欧美精品在线免费播放| 亚洲午夜性刺激影院| 久久久99久久精品女同性| 亚洲第一精品久久忘忧草社区| 欧美大片一区| 亚洲尤物在线| 欧美国产欧美亚州国产日韩mv天天看完整| 91久久综合| 国产精品亚洲综合久久| 久久久久天天天天| 一区二区三区视频在线| 久久久久久久国产| 一本到高清视频免费精品| 国产欧美日韩中文字幕在线| 久久久.com| 一本久久a久久免费精品不卡| 久久成人国产精品| 一区二区三区久久精品| 国产一区二区中文字幕免费看| 欧美国产在线视频| 欧美亚洲一区三区| 一本一本久久a久久精品牛牛影视| 久久精品官网| 亚洲伊人一本大道中文字幕| 狠狠色伊人亚洲综合成人| 欧美视频一区二区三区…| 六月天综合网| 欧美一级片一区| 夜夜狂射影院欧美极品| 欧美电影电视剧在线观看| 欧美亚洲在线| 亚洲免费综合| 一区二区三区精密机械公司| 精品999网站| 久久久久99| 亚洲视频一二区| 亚洲制服少妇| 妖精成人www高清在线观看| 农村妇女精品| 久久亚洲综合网| 亚洲欧美网站| 亚洲一区二区三区乱码aⅴ蜜桃女| 激情小说另类小说亚洲欧美| 国产欧美日韩精品丝袜高跟鞋| 欧美日韩久久| 欧美日韩精品一二三区| 欧美成人精品影院| 欧美成人精品三级在线观看| 久久美女性网| 久久久欧美一区二区| 久久精品噜噜噜成人av农村| 亚洲你懂的在线视频| 一本色道久久综合亚洲精品小说| 亚洲国产清纯| 亚洲日本va午夜在线影院| 亚洲国产高清一区| 亚洲国产精品视频一区| 亚洲国产成人精品久久久国产成人一区| 可以看av的网站久久看| 毛片一区二区三区| 欧美国产精品久久| 亚洲国产欧美在线人成| 亚洲国产精品一区二区第四页av| 亚洲高清网站| 一区二区精品在线观看| 亚洲一区二区三区在线看| 亚洲欧美色一区| 欧美在线综合视频| 老巨人导航500精品| 欧美chengren| 欧美亚男人的天堂| 国产欧美在线看| 在线日韩欧美视频| 亚洲精品一二三| 亚洲素人一区二区| 久久精品国产69国产精品亚洲| 欧美中文在线观看| 欧美 亚欧 日韩视频在线| 亚洲人线精品午夜| 国产一区二区精品| 亚洲人成人99网站| 亚洲伊人久久综合| 六十路精品视频| 91久久线看在观草草青青| 99视频日韩| 久久久久国产一区二区三区| 欧美成人午夜77777| 欧美天堂在线观看| 狠狠色综合播放一区二区| 日韩视频在线播放| 久久成人综合视频| 亚洲欧洲日本一区二区三区| 亚洲视频二区| 麻豆精品网站| 国产欧美日韩91| 99re6这里只有精品视频在线观看| 亚洲欧美精品| 亚洲第一福利社区| 午夜日本精品| 欧美日韩性生活视频| 欲色影视综合吧| 欧美一区二区| 日韩视频一区二区三区| 久久久精品五月天| 国产精品劲爆视频| 一本色道久久综合亚洲精品高清| 久久久亚洲国产美女国产盗摄| 99国内精品久久久久久久软件| 久久精品欧美日韩|