首页
社区
课程
招聘
[求助]驱动与应用程序共享内存失败
发表于: 2009-9-9 12:25 6729

[求助]驱动与应用程序共享内存失败

2009-9-9 12:25
6729
用户态:
char outputbuff[512];
DWORD controlbuf[64]; //全局变量
ZeroMemory(outputbuff,512);
        controlbuf[0] = 1;
        controlbuf[1] = DWORD(outputbuff);
        DWORD ret;
        DWORD inSize,outSize=0;
        inSize = 260;
       
        hDevice  = CreateFile(L"\\\\.\\MyDeviceKernel",     // 设备路径
                GENERIC_READ | GENERIC_WRITE,        // 读写方式
                FILE_SHARE_READ | FILE_SHARE_WRITE,  // 共享方式
                NULL,                                // 默认的安全描述符
                OPEN_EXISTING,                       // 创建方式
                0,                                   // 不需设置文件属性
                NULL);                               // 不需参照模板文件

        if (hDevice == NULL)
        {
                AfxMessageBox(L"无法与内核建立通信");
                ExitProcess(0);
        }
        if (!DeviceIoControl(hDevice,IOCTL_SET_BUFFER,controlbuf,inSize,NULL,outSize,&ret,NULL));
        {
                AfxMessageBox(L"传递共享内存失败");
        }

驱动:
char *output;//全局变量

UCHAR *buff=0;
        ULONG   a;

        case IOCTL_SET_BUFFER:
                //传入共享内存
                buff = (UCHAR *)Irp->AssociatedIrp.SystemBuffer;
                memmove(&a,&buff[4],4); //
                KdPrint(("temp:%d",a));
                output = (char *)MmMapIoSpace(MmGetPhysicalAddress((void *)a),256,0); //共享内存
                break;

................................
我想在应用程序与驱动之间共享内存,以实现交互

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有例子的发个 谢谢
2009-9-9 12:47
0
雪    币: 4560
活跃值: (1002)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
IOCTL_SET_BUFFER的定义要注意,偶以前就是定义问题搞的无法传入地址
应该这样定义#define DRIVE_INITIALIZE                                        CTL_CODE_SAFEMODEL(0)
2009-9-9 12:49
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
CTL_CODE_SAFEMODEL(0) 又是怎么定义的?
2009-9-9 13:49
0
雪    币: 4560
活跃值: (1002)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
CTL_CODE_SAFEMODEL(这里填整数)是微软定义的
2009-9-9 14:03
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
WinIoCtl.h 里面? 没有啊
2009-9-9 14:10
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
7
是EasySys模板里定义的~
2009-9-9 15:25
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
恩  谢谢 我看看
2009-9-9 15:51
0
游客
登录 | 注册 方可回帖
返回
//