2320|1

80

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

驱动通讯 没反应 !!! [复制链接]

#define Write CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800+1, METHOD_BUFFERED, FILE_ANY_ACCESS)

应用程序
DWORD        WINAPI ThreadProc(PVOID wParam)
{
        for(;;)
        {
         WaitForSingleObject(Event,INFINITE);
        MessageBox(NULL,"aaa",NULL,NULL);
        }
}


Event = CreateEvent(NULL,FALSE,FALSE,NULL);
DeviceIoControl(device,
        Write,
        Event,
        sizeof(Event),
        NULL,
        &dw,
        NULL);


驱动
=================================
PRKEVENT  Event;
HANDLE hEvent;

case Write:
hEvent = (HANDLE)Irp->AssociatedIrp.SystemBuffer;
                       
KernelMode = Irp->RequestorMode;
                       
status  = ObReferenceObjectByHandle(hEvent,     
                                     GENERIC_ALL,     
                                     NULL,     
                                     KernelMode,     
                                     &Event,     
                                     NULL);     

KeSetEvent(Event,0,FALSE);
101001101 19:35:59
#define Write CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800+1, METHOD_BUFFERED, FILE_ANY_ACCESS)

应用程序
DWORD        WINAPI ThreadProc(PVOID wParam)
{
        for(;;)
        {
         WaitForSingleObject(Event,INFINITE);
        MessageBox(NULL,"aaa",NULL,NULL);
        }
}


Event = CreateEvent(NULL,FALSE,FALSE,NULL);
DeviceIoControl(device,
        Write,
        Event,
        sizeof(Event),
        NULL,
        &dw,
        NULL);


驱动
=================================
PRKEVENT  Event;
HANDLE hEvent;

case Write:
hEvent = (HANDLE)Irp->AssociatedIrp.SystemBuffer;
                       
KernelMode = Irp->RequestorMode;
                       
status  = ObReferenceObjectByHandle(hEvent,     
                                     GENERIC_ALL,     
                                     NULL,     
                                     KernelMode,     
                                     &Event,     
                                     NULL);     

KeSetEvent(Event,0,FALSE);



没有反应   不蓝 也没重起 怎么会事

最新回复

DeviceIoControl中的第3参数该为&Event, hEvent = (HANDLE)Irp->AssociatedIrp.SystemBuffer改为 hEvent = *(HANDLE*)Irp->AssociatedIrp.SystemBuffer。 这样再试试。因为DeviceIoControl是把user模式的buffer中的数据复制到kernel模式,不能传地址。  详情 回复 发表于 2008-3-15 01:02
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
DeviceIoControl中的第3参数该为&Event,
hEvent = (HANDLE)Irp->AssociatedIrp.SystemBuffer改为
hEvent = *(HANDLE*)Irp->AssociatedIrp.SystemBuffer。
这样再试试。因为DeviceIoControl是把user模式的buffer中的数据复制到kernel模式,不能传地址。
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
福禄克有奖直播:高精度测温赋能电子制造 报名中!
直播时间:2025年2月28日(周五)上午10:00
直播主题:高精度测温赋能电子制造
小伙伴们儿快来报名直播吧~好礼等你拿!

查看 »

 
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
快速回复 返回顶部 返回列表