wwqq012
驱动牛犊
驱动牛犊
  • 注册日期2002-02-17
  • 最后登录2005-03-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1540回复:9

DRIVER STUDIO 中 虚拟如何转换为物理地址

楼主#
更多 发布于:2002-10-08 17:25
我在 ds 中 用ioctl 向驱动程序中传一个缓冲区
在驱动中 I.IoctlBuffer()获取该缓冲区的地址
我必须把这个地址转换为物理地址发送给硬件

请问如何转换呢?
我用的是 driver studio 2.6

谢谢

最新喜欢:

why_whywhy_wh...
sufeng
驱动牛犊
驱动牛犊
  • 注册日期2002-04-27
  • 最后登录2004-08-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-10-08 19:02
好好看看
http://person.okey.net/~webcrazy/page.htm
wheeler
驱动牛犊
驱动牛犊
  • 注册日期2001-10-23
  • 最后登录2005-11-01
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-10-08 21:52
这书错误百出,没法看,还没有还一点
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-10-08 23:34
用这个:
MmGetPhysicalAddress(
  IN PVOID BaseAddress
  );
注意, 如果成功也要每PAGE进行一次调用. 因为相邻的地址并不一定在连续的物理地址上.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
wwqq012
驱动牛犊
驱动牛犊
  • 注册日期2002-02-17
  • 最后登录2005-03-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-10-09 08:32
板主大人
我用的是driver studio
编译时MmGetPhysicalAddress()报告找不到此函数,该函数是winntddk中的
我在其device.h中加入了该函数的声明,编译虽然通过了,可是连接又报告错误,找不到该库。

在 ds 有没有可行的方法呢?
freducn2002
驱动小牛
驱动小牛
  • 注册日期2002-06-26
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望29点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2002-10-09 08:50
...
...可是连接又报告错误,找不到该库。
                       ``````````编译你的程序之前要编译D.S.库
wwqq012
驱动牛犊
驱动牛犊
  • 注册日期2002-02-17
  • 最后登录2005-03-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-10-09 08:56
DS库早就编译完了

这里是说找不到 MmGetPhysicalAddress()所对应的库,即unresolved external symble......

谢谢
sufeng
驱动牛犊
驱动牛犊
  • 注册日期2002-04-27
  • 最后登录2004-08-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-10-09 09:16
#include <ntddk.h>
看看ddk document怎么写的。
dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-10-09 09:17
1.对MmGetPhysicalAddress()的声明前要加上extern \"C\"(C连接).
2.如果是nt式驱动,你能直接编译通过。
3.如果是wdm式驱动,你需要引入ntoskrnl.lib,这个function能在98/me下正常工作(很久以前,我曾经发表过关于这个function的贴子)。
wwqq012
驱动牛犊
驱动牛犊
  • 注册日期2002-02-17
  • 最后登录2005-03-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-10-09 11:10
我用的是 driverstudio 2.6
如果 #include \"ntddk.h\"
则会出来很多很多编译的错误,这是因为ds 自己对头文件进行了改写。

另外 在project选项表中引入了 ntoskrnl.lib 仍然不能解决 unresolved external symbol的问题。

我在 device.h 中声明函数 extern \"C\" PHYSICAL_ADDRESS MmGetPhysicalAddress(IN PVOID);


谢谢大家

如何给各位加分呢?
游客

返回顶部