3160|4

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于应用程序与驱动程序如何动态传递数据? [复制链接]

定义:
#define IO_OPEN_COM   CTL_CODE(FILE_DEVICE_COMSPY,0x080A,METHOD_BUFFERED, \
    FILE_ANY_ACCESS)

想用下面传递串口号"\\??\\COM1"
DeviceIoControl(m_hDevice,
                                        IO_OPEN_COM,
                                        sz1,
                                        12,
                                        NULL,
                                        0,
                                        &dwReturn,
                                        NULL);

也就是说如何让sz1="\\??\\COM1"; 注意我想要的是正解的赋值法,如sz1定义成什么类型,如何给其赋???????????????

同时对应的驱动中如何正确的取出这个值??????????????


我现在是这样做的:

应用程序:
        TCHAR sz1[256] = {0};
        int m_Port;
        m_Port=1;
        CString s;
        s.Format("\\??\\COM%d",m_Port);
        _tcscpy(sz1,s);

驱动程序:
         RtlInitUnicodeString(&usDeviceToFilter,(PWCHAR)(LPCTSTR)Irp->AssociatedIrp.SystemBuffer);
         可是不好用.如换成
         RtlInitUnicodeString(&usDeviceToFilter,L"\\??\\COM1");就可以了.
         说明我没有使用正确的将L"\\??\\COM1"传入或传来后我用(PWCHAR)(LPCTSTR)Irp->AssociatedIrp.SystemBuffer取得不对.

求教如何才是正确的交互方法?????????????????????????????










最新回复

问题找到了: RtlInitUnicodeString(&usDeviceToFilter,(PWCHAR)(LPCTSTR)Irp->AssociatedIrp.SystemBuffer); 改为 RtlInitUnicodeString(&usDeviceToFilter,(PWCHAR)Irp->AssociatedIrp.SystemBuffer); 因为我传来的是UNICODE字符串,英文节为**00这样的两字节,如加(LPCTSTR)遇上00,他以为字符串结束了,所以,传来"ABCDEF"就变成"A"了,所以不对. 主要是个人基础知识不牢呀!  详情 回复 发表于 2009-7-27 16:21
点赞 关注

回复
举报

63

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
sz1是TCHAR的数组,那就用strcpy方式赋值。数组的赋值很基本的。
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼上的兄弟!strcpy我也用过,现在的问题是如我上面说的,我用了但没有传进去!我想知道是错在哪?是赋值这块,还是驱动中取值那块!请求帮助!
能不能给段成功的传值,取值代码?或指出我的错误所在!
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

4
 
自己顶一下
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

5
 
问题找到了:
RtlInitUnicodeString(&usDeviceToFilter,(PWCHAR)(LPCTSTR)Irp->AssociatedIrp.SystemBuffer);
改为
RtlInitUnicodeString(&usDeviceToFilter,(PWCHAR)Irp->AssociatedIrp.SystemBuffer);

因为我传来的是UNICODE字符串,英文节为**00这样的两字节,如加(LPCTSTR)遇上00,他以为字符串结束了,所以,传来"ABCDEF"就变成"A"了,所以不对.

主要是个人基础知识不牢呀!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表