-
-
[求助]驱动与应用程序共享内存失败
-
发表于:
2009-9-9 12:25
6730
-
用户态:
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;
................................
我想在应用程序与驱动之间共享内存,以实现交互
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!