zgc7622
驱动小牛
驱动小牛
  • 注册日期2003-02-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分136分
  • 威望15点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
阅读:886回复:2

一个奇怪的现象.

楼主#
更多 发布于:2004-02-08 10:15
我使用函数ZwQueryDirectoryFile得到文件名称以后,想将这个文件名添加到路径的后面,可是使用下面的代码是,总是提示我的"存储太小",真是不知道为什么了?请高手帮助!!
RtlInitUnicodeString(&uniFileName,pFileInfo->FileName);
RtlUnicodeStringToAnsiString(&ansiFileName,&uniFileName,TRUE);
RtlUnicodeStringToAnsiString(&ansiDirName,&uniFileName,TRUE);
RtlUpperString(&ansiFileName,&ansiDirName);
TempFileName = (UNICODE_STRING *)ExAllocatePool(PagedPool,1024 );
RtlZeroMemory(TempFileName,1024 );
TempFileName->MaximumLength = 1024 ;
RtlAnsiStringToUnicodeString(TempFileName,&ansiFileName,TRUE);
DbgPrint("得到的 :%ws Len=%d\n",TempFileName->Buffer,TempFileName->MaximumLength);
pFullPath = (UNICODE_STRING *)ExAllocatePool(PagedPool,1024 );
RtlZeroMemory(pFullPath,1024 );
pFullPath->MaximumLength = 1024 ;
rc = ObQueryNameString(pFileObject,pFullPath,1024,&ActualLength);
if(rc != STATUS_SUCCESS)
{
ExFreePool(&pFullPath);
ObDereferenceObject(pFileObject);
return rc;
}
//向查询文件添加文件名称
rc=RtlAppendUnicodeStringToString(pFullPath,TempFileName);
if(rc != STATUS_SUCCESS)
{
DbgPrint("添加失败");
if(rc==STATUS_BUFFER_TOO_SMALL)
{
DbgPrint("存储太小");
}
}
linfeng1216
驱动小牛
驱动小牛
  • 注册日期2004-03-10
  • 最后登录2008-12-31
  • 粉丝0
  • 关注0
  • 积分818分
  • 威望89点
  • 贡献值0点
  • 好评度74点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-31 15:42

//向查询文件添加文件名称
rc=RtlAppendUnicodeStringToString(pFullPath,TempFileName);

之前,你先把这句添上试一下:
pFullPath->MaximumLength = (USHORT)(pFullPath->Length + TempFileName->Length + sizefo(UNICODE_NULL));
这件事很难
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-02 16:44
对的
sfilter里有例子的
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
游客

返回顶部