ammehrb
驱动牛犊
驱动牛犊
  • 注册日期2003-07-02
  • 最后登录2005-05-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2779回复:10

char to PWSTR

楼主#
更多 发布于:2004-03-18 20:43
请教:ddk中如何将一个char型的字符串转换为PWSTR型?

先谢了
ammehrb
驱动牛犊
驱动牛犊
  • 注册日期2003-07-02
  • 最后登录2005-05-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-18 20:55
请教:ddk中如何将一个char型的字符串转换为PWSTR型?

先谢了


用户层传过来的是char型,而ifs例程要求是PWSTR...
nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-19 09:20
RtlAnsiStringToUnicodeString
不限容量的免费邮箱 www.k65.net
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2004-03-19 13:25
NTSTATUS
  RtlAnsiStringToUnicodeString(
    IN OUT PUNICODE_STRING  DestinationString,
    IN PANSI_STRING  SourceString,
    IN BOOLEAN  AllocateDestinationString
    );
{
int index;
    while(Index < DestinationString->Length )
{
        DestinationString->Buffer[Index] = (WCHAR)SourceString->Buffer[Index];
        Index++;
}
return( STATUS_SUCCESS );;
}
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
ammehrb
驱动牛犊
驱动牛犊
  • 注册日期2003-07-02
  • 最后登录2005-05-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-03-25 19:59
是这样:

char str="中国china";
将str转换为unicode码,应如何做?
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
5楼#
发布于:2004-03-26 09:15
是这样:

char str="中国china";
将str转换为unicode码,应如何做?



下面的代码没有测试过,请慎用 :D:

char str[]="中国china";
ANSI_STRING ansiString;
UNICODE_STRING uniString;
PWCHAR buffer;
ULONG length = strlen(str) * sizeof(WCHAR) + sizeof(WCHAR);

buffer = ExAllocatePool (PagedPool, length);

RtlInitAnsiString( &ansiString, str );

uniString.Length = 0;
uniString.MaximumLength = (USHORT)length;
uniString.Buffer = buffer;

RtlAnsiStringToUnicodeString(
    &uniString,
    &ansiString,
    FALSE );


[编辑 -  3/26/04 by  seaquester]
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-03-31 09:16
你绕远了

这样就可以生成UNICODE码了
char *str=L"This is unicode String"

看看MSDN就知道了
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-03-31 09:18
忘记了
是在驱动版块,不是SDK
SORRY
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
Zhujnt
驱动牛犊
驱动牛犊
  • 注册日期2004-02-16
  • 最后登录2004-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-04-01 14:14
我在驱动中遇到这样的问题:

pFileInfo = (PFILE_INFORMATION)pIrp->AssociatedIrp.SystemBuffer;

aFilePath.Length = pFileInfo->PathLength;
aFilePath.MaximumLength = pFileInfo->PathLength;
aFilePath.Buffer = pFileInfo->PathName;

DbgPrint("the filepathbuffer is %s\n", aFilePath.Buffer);

//Change it into UNICODE_STRING
ntStatus = RtlAnsiStringToUnicodeString(
&uFilePath,
&aFilePath,
TRUE
);
if( !NT_SUCCESS(ntStatus) )
{
          pIrp->IoStatus.Status = ntStatus;
pIrp->IoStatus.Information = 0;
return ntStatus;
}

DbgPrint("the file path is %s\n", uFilePath.Buffer);



在打开信息后是这样的:
" \??\E:\软件\测试\netdisk\file.img"
" \??\E:\"

这是为什么?如何解决?
*学*
ammehrb
驱动牛犊
驱动牛犊
  • 注册日期2003-07-02
  • 最后登录2005-05-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-04-12 14:19
问题结决了
原来通过%wZ输出看到的不对,但与系统下真实存在的路径名比较是相同的,将之再转换为char输出结果是对的,但有一点还没搞懂,为何使用%wZ输出的Unicode_String不对,还请多多指教。
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
10楼#
发布于:2004-04-12 17:15
应该是%ws

DbgPrint(\"the filepathbuffer is %ws\", aFilePath.Buffer);
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
游客

返回顶部