Ice_Bin
驱动牛犊
驱动牛犊
  • 注册日期2002-02-25
  • 最后登录2004-01-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1624回复:4

SystemBuffer的问题

楼主#
更多 发布于:2002-10-19 19:25
我在应用程序里面写了一个字符串到Irp->AssociatedIrp.SystemBuffer里面,现在想在驱动里面将这个字符串拿出来,并且要获得这个字符串的长度,怎么做啊?
very thanks!!!!!!!!!!!
好好学习 天天向上
zhoujiamurong
驱动小牛
驱动小牛
  • 注册日期2006-03-20
  • 最后登录2009-05-06
  • 粉丝4
  • 关注0
  • 积分1081分
  • 威望360点
  • 贡献值0点
  • 好评度215点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-04-24 16:23
这么一个好贴,躲在这了,挖出来
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-10-20 14:16
犯了一个错误,正确代码应该如下:
如是用WriteFile写入,则可以这样获得:
PIO_STACK_LOCATION pThisSP;
pThisSp = IoGetCurrentIrpStackLocation( pIrp );
ULONG nSize = pThisSp ->Parameters.Write.Length;
PVOID pBuffer = pIrp->AssociatedIrp.SystemBuffer;
然后,你以可以把字符串拷到驱动程序本地了。
PVOID pString =   ExAllocatePool( NonPagedPool, nSize );
if( !pString )
return FALSE;
RtlZeroMemory( pString, nSize );
RtlCopyMmoery( pString, pBuffer, nSize );

Tom_lyd
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-10-20 14:07
我在应用程序里面写了一个字符串到Irp->AssociatedIrp.SystemBuffer里面,现在想在驱动里面将这个字符串拿出来,并且要获得这个字符串的长度,怎么做啊?
very thanks!!!!!!!!!!!

你是怎么写进去的?
WriteFile ? /DeviceIoControl ?
无论如何写进去的,在API调用中,都需要设置输入的长度,这个长度可以从传入参数中的相关字段中获得
如是用WriteFile写入,则可以这样获得:
PIO_STACK_LOCATION pThisSP;
pThisSp = IoGetCurrentIrpStackLocation( pIrp );
ULONG nSize = pThisSp ->Parameters.Write.Length;
PVOID pBuffer = pIrp->AssociatedIrp.SystemBuffer;
然后,你以可以把字符串拷到驱动程序本地了。
CHAR String[MAX_PATH];
RtlZeroMemory( String, nSize );
RtlCopyMemory( String, pBuffer, nSize );

//搞定
如果是用DeviceIoControl, 则参照DeviceIoControl的相关调用规范来解析。


Tom_lyd
niwei
驱动牛犊
驱动牛犊
  • 注册日期2002-02-20
  • 最后登录2007-07-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-10-20 00:24
应用程序里怎么写一个字符串到systembuffer里啊,再说systembuffer是一个指针,如果使用writefile,or deviceiocontrol的话,首先就要确定字符长度啊。
不懂。
游客

返回顶部