阅读:2779回复:10
char to PWSTR
请教:ddk中如何将一个char型的字符串转换为PWSTR型?
先谢了 |
|
沙发#
发布于:2004-03-18 20:55
请教:ddk中如何将一个char型的字符串转换为PWSTR型?
先谢了 用户层传过来的是char型,而ifs例程要求是PWSTR... |
|
板凳#
发布于:2004-03-19 09:20
RtlAnsiStringToUnicodeString
|
|
|
地板#
发布于: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 );; } |
|
|
地下室#
发布于:2004-03-25 19:59
是这样:
char str="中国china"; 将str转换为unicode码,应如何做? |
|
5楼#
发布于:2004-03-26 09:15
是这样: 下面的代码没有测试过,请慎用 :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] |
|
|
6楼#
发布于:2004-03-31 09:16
你绕远了
这样就可以生成UNICODE码了 char *str=L"This is unicode String" 看看MSDN就知道了 |
|
|
7楼#
发布于:2004-03-31 09:18
忘记了
是在驱动版块,不是SDK SORRY |
|
|
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:\" 这是为什么?如何解决? |
|
|
9楼#
发布于:2004-04-12 14:19
问题结决了
原来通过%wZ输出看到的不对,但与系统下真实存在的路径名比较是相同的,将之再转换为char输出结果是对的,但有一点还没搞懂,为何使用%wZ输出的Unicode_String不对,还请多多指教。 |
|
10楼#
发布于:2004-04-12 17:15
应该是%ws
DbgPrint(\"the filepathbuffer is %ws\", aFilePath.Buffer); |
|
|