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

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 深邃者 閱讀(447) 評論(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>
            欧美色中文字幕| 国产视频在线观看一区| 亚洲二区精品| 麻豆精品在线视频| 老牛影视一区二区三区| 亚洲欧洲一区二区天堂久久| 亚洲国产欧美不卡在线观看 | 亚洲一区二区三区777| 亚洲欧洲日本专区| 欧美午夜在线视频| 亚洲欧美日韩在线一区| 亚洲欧美日韩一区二区| 黄色国产精品| 亚洲国产高清高潮精品美女| 欧美日韩免费高清| 久久国产精品99国产精| 久久久久久久久久久久久9999| 亚洲国产一区二区精品专区| 亚洲精品欧美| 国产亚洲成年网址在线观看| 美女999久久久精品视频| 欧美精品xxxxbbbb| 午夜在线a亚洲v天堂网2018| 久久精品视频在线免费观看| avtt综合网| 午夜精品免费在线| 亚洲精品欧美精品| 亚洲一区二区三| 亚洲国产专区| 亚洲一区免费视频| 亚洲第一伊人| 亚洲欧美另类国产| 亚洲免费电影在线观看| 香港成人在线视频| 夜夜躁日日躁狠狠久久88av| 亚洲免费在线观看视频| 亚洲久久在线| 久久久精品免费视频| 亚洲一区二区三区精品动漫| 久久亚洲欧洲| 欧美一区免费视频| 欧美精品日韩| 欧美r片在线| 国产精品一区在线播放| 999亚洲国产精| 亚洲国产一二三| 欧美一区2区三区4区公司二百| 亚洲精品国精品久久99热一| 久久久国产91| 欧美亚洲免费在线| 欧美日韩精品中文字幕| 欧美电影电视剧在线观看| 国产亚洲日本欧美韩国| 一区二区日韩| 亚洲一二区在线| 欧美成人精品在线观看| 免费看av成人| 在线观看欧美日韩| 欧美中文字幕视频在线观看| 午夜精品国产更新| 国产精品jizz在线观看美国 | 亚洲免费成人| 99国产一区| 媚黑女一区二区| 久久综合一区二区| 狠狠干综合网| 久久精品久久综合| 久久久久久综合| 黄色国产精品| 老司机久久99久久精品播放免费| 久久天堂国产精品| 在线精品高清中文字幕| 久久精品中文| 欧美成人一品| 亚洲国产精品va在线看黑人动漫| 久久综合成人精品亚洲另类欧美| 免费在线亚洲| 日韩网站在线观看| 欧美日韩精品欧美日韩精品一| 亚洲欧洲一区二区三区在线观看 | 一区精品在线播放| 久久亚洲高清| 亚洲国产小视频在线观看| 日韩午夜电影av| 国产精品第一区| 亚洲欧美日韩电影| 久久久久久久一区| 亚洲激情影视| 欧美午夜三级| 久久gogo国模裸体人体| 亚洲第一精品久久忘忧草社区| 亚洲伦理在线观看| 国产精品进线69影院| 欧美在线免费视频| 亚洲电影在线| 欧美一区二区三区在线视频| 国内在线观看一区二区三区| 欧美成人首页| 亚洲永久免费观看| 欧美激情一区二区| 亚洲欧美成人一区二区三区| 精品9999| 欧美性做爰毛片| 久久女同互慰一区二区三区| 99re66热这里只有精品3直播 | 日韩视频一区| 国产一级一区二区| 免费在线观看精品| 亚洲欧美日韩在线综合| 欧美国产精品一区| 性做久久久久久久久| 亚洲日本aⅴ片在线观看香蕉| 欧美性色aⅴ视频一区日韩精品| 久久激情久久| 亚洲视频碰碰| 亚洲国产精品综合| 久久噜噜噜精品国产亚洲综合| 亚洲精品国产精品国自产观看| 国产伦精品一区二区三区| 欧美成人免费观看| 久久久www成人免费精品| 一二三区精品福利视频| 亚洲国产精品va在线观看黑人| 久久精品国亚洲| 亚洲香蕉伊综合在人在线视看| 亚洲国产高潮在线观看| 国产精品丝袜91| 欧美日韩亚洲高清一区二区| 美女视频网站黄色亚洲| 午夜性色一区二区三区免费视频 | 老鸭窝91久久精品色噜噜导演| 亚洲一区激情| 在线视频精品一| 亚洲国产精品久久久久秋霞蜜臀| 国产欧美韩国高清| 国产精品私房写真福利视频| 欧美日韩成人| 欧美国产精品人人做人人爱| 久久综合九色| 免费不卡在线观看| 久久亚洲欧美国产精品乐播| 久久久久.com| 久久精品亚洲热| 久久精品一区二区三区四区| 欧美一区二区| 久久成人精品无人区| 欧美一区二区三区四区夜夜大片| 亚洲午夜激情网站| 亚洲夜晚福利在线观看| 亚洲综合视频1区| 亚洲欧美影音先锋| 小处雏高清一区二区三区| 亚洲综合视频一区| 欧美制服丝袜第一页| 久久久久久久999精品视频| 欧美一区二区三区成人 | 亚洲经典三级| 亚洲精品人人| 亚洲小视频在线观看| 午夜天堂精品久久久久| 欧美专区在线| 欧美成人精品在线视频| 欧美日韩国产999| 国产精品99一区| 国产欧美日韩精品专区| 狠狠做深爱婷婷久久综合一区| 激情成人中文字幕| 亚洲精品视频一区二区三区| 国产精品99久久不卡二区| 香蕉久久夜色精品| 老司机亚洲精品| 亚洲国产天堂久久国产91| 一本久久a久久精品亚洲| 午夜精品久久久久久久蜜桃app | 国产欧美日韩在线视频| 精品88久久久久88久久久| 亚洲人成在线影院| 午夜精品福利一区二区三区av | 亚洲一区区二区| 久久免费视频在线观看| 亚洲第一区中文99精品| 国产精品99久久久久久宅男| 午夜精品福利在线| 免费不卡在线视频| 国产免费亚洲高清| 亚洲精品乱码久久久久久| 亚欧成人在线| 亚洲精品国产无天堂网2021| 亚洲综合日韩在线| 欧美极品一区二区三区| 国产日韩精品一区二区三区| 亚洲精品国产欧美| 久久人人97超碰人人澡爱香蕉| 亚洲电影av| 久久精品国产视频| 欧美午夜电影在线| 91久久久亚洲精品| 久久久久久久91| 亚洲一区精品在线| 欧美激情中文不卡|