dongjun
驱动牛犊
驱动牛犊
  • 注册日期2002-03-20
  • 最后登录2003-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1657回复:3

DeviceIoControl()数据传输问题?

楼主#
更多 发布于:2002-05-08 11:09
兄弟,现在想通过DeviceIoControl(),将我在vxd中分配的中断可访问的内存地址传给win32应用程序,其中在win32中的程序为:
在.h文件中
typedef struct _MapDevRequest
{
DWORD mdr_SizeInBytes;
PVOID mdr_LinearAddress;
WORD mdr_Status;
} MAPDEVREQUEST,*PMAPDEVREQUEST;

在.cpp文件中:
MAPDEVREQUEST req;
DeviceIoControl(hDevice,PASS_ADDR,0,0,&req,0,0,NULL)

在vxd中:
PMAPDEVREQUEST pReq;
pReq->mdr_LinearAddress=LineBufAddr;
pReq->mdr_SizeInBytes=nPages*4*1024;
inBuf[0]=pReq;
*(PVOID *)pDIOCParams->dioc_OutBuf=inBuf;

在win32中得到的地址
req->mdr_LinearAddress始终为0xcccccccc不知为何?
望求高手指教?

最新喜欢:

chilichili
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-05-08 11:29
mdr_SizeInBytes可以看到吗?
blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-08 13:25
你语法不太清楚,我认为应这样:

其中在win32中的程序为:
在.cpp文件中:
PMAPDEVREQUEST pReqW32=NULL;
DWORD InfoBytes;
DeviceIoControl(hDevice,PASS_ADDR,0,0,&pReqW32,0,&InfoBytes,NULL)

在vxd中:
PMAPDEVREQUEST pReq;
//为pReg分配内存,...
pReq->mdr_LinearAddress=LineBufAddr;
pReq->mdr_SizeInBytes=nPages*4*1024;
pDIOCParams->dioc_OutBuf=pReq;

你这样试一下吧!


dongjun
驱动牛犊
驱动牛犊
  • 注册日期2002-03-20
  • 最后登录2003-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-09 10:47
谢谢斑竹的帮助!!
游客

返回顶部