📄 驱动程序之间共享内存.txt
字号:
以前在驱动之间共享内存用了很多办法(nt/2k),并且作的很复杂,这几天很是清闲,研究了一下walter oney的代码(generic.sys的代码),试了一下,发现驱动之间共享内存可以做得很简单,方法如下:
1.定义一个全局变量
PVOID _declspec(dllexport) sharedmemory =NULL;
2.在程序中分配此内存并在适当的时候给其赋值:
sharedmemory =
(PVOID)ExAllocatePool(NonPagedPool,sizeofmemory);
..........................................................
RtlCopyMemory(sharedmemory,"i am dazzy!",16);
3.在另一个驱动程序中作如下声明:
PVOID extern _declspec(dllimport) sharedmemory;
4.用DbgPrint()打印此值:
#if DBG
DbgPrint("The share memory is %s",sharedmemory);
#endif
5.很如我意:
在driverstudio带的Monitor打印出了:
The share memory is i am dazzy!
6.准备在下一个驱动项目里正式加入来测试
欢迎大家在驱动里进行测试!
编译第二个驱动时在第二个驱动的Source文件中加入第一个驱动的LIB文件。
这个的原理就相当于把驱动程序当动态连接库使用。同样对函数也可用。
还可以这样用:
source文件中
TARGETTYPE=EXPORT_DRIVER
同时建立一个def文件:
LIBRARY Export.SYS
EXPORTS
ExportSymbols1
...
在其他的驱动中同样很简单可以访问变量和函数。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -