阅读:946回复:1
vxd与应用程序通讯的问题
武安河 ,周利里莉编著的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中又支持哪一个,有转化的函数吗? |
|
沙发#
发布于: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 |
|