jylhy
驱动牛犊
驱动牛犊
  • 注册日期2008-03-04
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分373分
  • 威望50点
  • 贡献值0点
  • 好评度37点
  • 原创分0分
  • 专家分0分
阅读:1249回复:1

关于路径名中的中文,帮忙看下

楼主#
更多 发布于:2008-03-24 15:16
在我的PostCreate中我去获得文件的全路径,但碰到个中文问题,我代码如下:

代码:
PFLT_FILE_NAME_INFORMATION nameInfo = NULL;
PUNICODE_STRING nameToUse = NULL;
if (FltObjects->FileObject != NULL)
{
      Status = FltGetFileNameInformation( Data,
                                                                 FLT_FILE_NAME_NORMALIZED
                                                                            | FLT_FILE_NAME_QUERY_ALWAYS_ALLOW_CACHE_LOOKUP,
                                                                 &nameInfo);
}
if(NT_SUCCESS( Status ))
{  
       nameToUse = &nameInfo->Name;
}

KdPrint(("PostCreate NameToUse[%wZ] Length[%d] MaximumLength[%d]\n", nameToUse, nameToUse->Length,nameToUse->MaximumLength ));

问题:当前创建文件\device\HarddiskVolume2\english中文.txt

DebugView结果:
PostCreate NameToUse[\device\HarddiskVolume2\english] Length[74] MaximumLength[74]
也就是后面中文部分的内容没能正常打印出来
不知道大家有没有遇到过这个问题
microbe
驱动小牛
驱动小牛
  • 注册日期2007-12-10
  • 最后登录2011-01-17
  • 粉丝1
  • 关注0
  • 积分914分
  • 威望420点
  • 贡献值1点
  • 好评度88点
  • 原创分0分
  • 专家分1分
沙发#
发布于:2008-03-27 09:27
坛子里已经有人问过了。。。你可以搜搜看;;;

或者,你用下面的代码打印你的名字,或许就有中文了:)

VOID KdPrintUniStr(__in PUNICODE_STRING UniStr)
{
    ANSI_STRING AnsiStr;
    NTSTATUS status;

    status = RtlUnicodeStringToAnsiString(&AnsiStr,UniStr,TRUE);

    if (NT_SUCCESS(status))
    {
        KdPrint((AnsiStr.Buffer));
        RtlFreeAnsiString(&AnsiStr);
    }
}
游客

返回顶部