社区
C语言
帖子详情
关于多进程dll中全局变量问题
别以为你站在珠峰就能看到全世界
2012-04-11 04:44:34
最近在写一个驱动,驱动要扩展一些接口给应用程序调用,结果中用到了一些全局变量。
那么这样系统会加载驱动一次,应用程序也会加载一次,那么驱动中的全局变量如何共享呢?
我试过了#pragma data_seg,一点效果都没有。共享内存又用不了。
不知道还有什么方法实现数据共享吗?
...全文
273
9
打赏
收藏
关于多进程dll中全局变量问题
最近在写一个驱动,驱动要扩展一些接口给应用程序调用,结果中用到了一些全局变量。 那么这样系统会加载驱动一次,应用程序也会加载一次,那么驱动中的全局变量如何共享呢? 我试过了#pragma data_seg,一点效果都没有。共享内存又用不了。 不知道还有什么方法实现数据共享吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ohayou
2012-04-16
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
wince 5 的网卡驱动。
共享内存用不了是因为驱动加载比较早,系统一些API可能还用不了。
[/Quote]
http://blog.csdn.net/lovesunshine2008/article/details/4041755 这里面说的方法能不能用?
别以为你站在珠峰就能看到全世界
2012-04-14
打赏
举报
回复
wince 5 的网卡驱动。
共享内存用不了是因为驱动加载比较早,系统一些API可能还用不了。
Saleayas
2012-04-13
打赏
举报
回复
这是什么驱动哦!
嘿嘿!
ohayou
2012-04-13
打赏
举报
回复
你在内核里就算#pragma data_seg("Shared") 地址空间也是内核的 直接写肯定出问题
你说共享内存用不了是啥意思?用共享内存是多么标准的内核用户通信方式啊
Lactoferrin
2012-04-13
打赏
举报
回复
这些变量是在内核模式驱动程序里面?
别以为你站在珠峰就能看到全世界
2012-04-13
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
内核模式驱动程序?
[/Quote]
是的,后来用#pragram data_seg发现可以了,不过有些变量发现好像是只读的
#pragma data_seg("Shared")
PAX_ADAPTER g_Adapter = 0;
BOOL g_isReady = FALSE;
HANDLE g_hRxEvent = NULL;
HANDLE g_hTxEvent = NULL;
HANDLE g_hThread = NULL;
char g_TxBuf[1500] = {0};
int g_TxLen = 0;
#pragma data_seg()
#pragma comment(linker,"/SECTION:Shared,RWS")
g_Adapter是网卡驱动的NDIS_HANDLE,实际上是一个结构体指针。我发现他的地址在两个进程是一样的,不过第二个进程中无法写操作。一写驱动就Data Abort。
g_hTxEvent 是有名字的事件,再第二个进程中如果不再CreateEvent一下,虽然g_hTxEvent有值,但是使用达不到效果,无法触发第一个进程的等待。
Lactoferrin
2012-04-11
打赏
举报
回复
内核模式驱动程序?
别以为你站在珠峰就能看到全世界
2012-04-11
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
#pragram data_seg("Shared")
共享硬盘上的文件可以不?
[/Quote]
上面说了,没有效果。
evencoming
2012-04-11
打赏
举报
回复
#pragram data_seg("Shared")
共享硬盘上的文件可以不?
dll
中
的
全局变量
多进程
分别加载
dll
时,由于各进程的地址空间是相互独立不可见的,
dll
的数据段是每个进程一份,
全局变量
互不影响。 同一个进程的多个线程多次loadlibrary加载
dll
时,第一次loadlibrary时,进程载入指定的动态链接库...
Windows IPC机制:
DLL
文件
中
的
全局变量
共享
但是,通过一些特定的技术手段,我们可以实现
DLL
文件
中
全局变量
的共享,使得多个进程可以访问和修改同一个
全局变量
的值。需要注意的是,虽然
DLL
文件可以实现
全局变量
的共享,但同时也带来了一些
问题
。通过合理设计和...
使用
DLL
在多个进程间共享
全局变量
第二个实例启动后,在修改
全局变量
的时候,系统会运用内存管理系统copy- on-write的特性来防止修改了第一个实例的数据,即系统会再分配一些内存,并将
全局变量
复制到这块内存
中
,每个实例使用自己的内存空间上的数据...
多进程
引用动态链接库
中
的
全局变量
问题
多进程
引用动态链接库
中
的
全局变量
问题
现象描述:前提:存在一个动态库libvlan.so,存在一个应用console。做法:在console
中
调用libvlan.so
中
的两个APIs,分别是设置和获取动态库
中
一个
全局变量
的值。结果:在...
当调用的
DLL
中
有
全局变量
时调用它的多个实例是否共享同一个
全局变量
问题
的起因原于自己在工作
中
需要调用一个动态库,而其
中
要用到一个全局的变量才能把需要的句柄给传出来,于是就想,如果有多个进程要调用这个动态库时,后面的进程调用同一个动态库时,是否会把以前调用同一个动态库...
C语言
69,368
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章