bluesword
驱动牛犊
驱动牛犊
  • 注册日期2005-01-13
  • 最后登录2006-07-01
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1542回复:3

[请教]驱动同应用程序间通讯的读写问题

楼主#
更多 发布于:2005-04-29 10:29
请各位高手指点:
开发环境driverworks,仿武安河的readwrite例程改写如下:
应用程序:
定义了全局变量:
char *buf;
int N=16;
main中:
调用doWrite(N);
void doWrite(int n)
{
int i;
int j=0;
ULONG nWritten;
buf = (char *) malloc(n);
if (buf == NULL)
{
printf(\"Failed to allocate buffer for write\");
Exit(1);
}
for (i=0; i<n; i++)
{
j=j+1;
buf = j;
}

// Write data to driver
printf(\"Writing to device - \");
WriteFile(hDevice, buf, n, &nWritten, NULL);
printf(\" written to device (%d bytes attempted).\\n\",  n);
free(buf);
}
驱动:
NTSTATUS Mydriver425Device::Write(KIrp I)
{


NTSTATUS status = STATUS_SUCCESS;
PUCHAR pBuffer = (PUCHAR)I.BufferedWriteSource();
ULONG   dwTotalSize = I.WriteSize(CURRENT);
PUCHAR pMyBuffer = new (NonPagedPool) UCHAR[dwTotalSize];
RtlCopyMemory(pMyBuffer,pBuffer,dwTotalSize);
I.Information() = dwTotalSize;

// KIrp Current = CurrentIrp();


return I.PnpComplete(this, status);
}

编译无问题,运行重启,系统2000,用softice调试,rtlcopymemory之后出现pagefault错误,是否是因为应用程序分配的是分页内存,但武例程中也没有专门进行非分页分配,请各位指点一二


[编辑 -  4/29/05 by  bluesword]
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-30 12:12
看看pBuffer是不是NULL
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
bluesword
驱动牛犊
驱动牛犊
  • 注册日期2005-01-13
  • 最后登录2006-07-01
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-04 09:46
谢谢楼上的回答,之前用softice调试时显示局部变量使用如下形式:
[kk]+pbuffer=0x00000000,我在softice中,输入d pbuffer查看应用程序中内存的内容,发现不是所写的1,2,3,4,5,6,...16的内容

另外我在读老外用ddk写的程序时,发现程序中分配pmybuffer时,其空间大小为[[long]filethred]+sizeof(pbuffer)(大致形式如此),而武安河的则是sizeof(pbuffer),也就是说老外分配的空间考虑了首地址的大小,这是否是一个原因呢?
jedy_woody
驱动牛犊
驱动牛犊
  • 注册日期2005-03-18
  • 最后登录2005-07-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-05 16:19
ding
游客

返回顶部