amei
驱动牛犊
驱动牛犊
  • 注册日期2002-03-21
  • 最后登录2006-11-10
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:946回复:1

vxd与应用程序通讯的问题

楼主#
更多 发布于:2002-05-06 20:51
武安河 ,周利里莉编著的window设备驱动程序(vxd与wdm)
中第四章有一个Apptovxd的程序,它在vxd中实现两个数相加并将结果返回给应用程序。我将整型变为字符串型,在vxd中实现字符串连接,为什么在应用程序中得的到确实乱码呢?
Addxy.h
struct xy
{char x[2];
 char y[2];
};

Addxy.cpp
动态加载vxd之后
char z[4];
int i;
pxy=new xy[1];
strcpy(pxy[1].x,\"ab\");
strcpy(pxy[1].y,\"cd\");
if(!DeviceioControl(hDevice,ADDXY,&pxy[1],0,z,0,0,NULL))
{.....
}
for(i=0;i<4;i++)
printf(\"%c\\n\",z+i);

Apptovxd.cpp
xy *pxy
case ADDXY:
  {pxy=(xy*)p->dioc_InBuf;
   strcat(pxy->x,pxy->y);
    strcpy((char *)p->dioc_OutBuf,pxy->x);
}
我在vc中单步调试发现pxy[1].y=\"cd\",但pxy[1].x中却是乱码?
我条了好久也找不出原因?只好来请教大侠们了。还有就是关于
ansi与unicode(记不住怎么拼写了)的问题,在vxd中支持哪一个?
在vc中又支持哪一个,有转化的函数吗?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-05-06 23:15
pxy=new xy[1];
strcpy(pxy[1].x,\"ab\");   //不越界的吗?
strcpy(pxy[1].y,\"cd\");
改成
pxy=new xy;
strcpy(pxy.x,\"ab\");
strcpy(pxy.y,\"cd\");

pxy=new xy[1];
strcpy(pxy[0].x,\"ab\");
strcpy(pxy[0].y,\"cd\");
还有,在VxD里面,
p->x是char x[2]呀,你用strcat(pxy->x,pxy->y),它放的下吗?
win9x是ansi,winNT/2K内部都是unicode
游客

返回顶部