阅读:4300回复:23
sfilter中无法显示中文文件名?
如何才能让sfilter显示截获的中文文件名字?
|
|
最新喜欢:![]() |
沙发#
发布于:2007-10-03 19:27
[quote]引用第19楼yandong_8212于2007-03-29 18:21发表的 :
paladinii 是骗人的,正确方法是: 1)定义全局变量ANSI_STRING gAS,在DriverEntry初始化.最后释放. 2) PCHAR 感谢yandong_8212无私奉献的精神,国庆假期把这一课补上了 NTSTATUS DriverEntry ( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath ) { UNICODE_STRING usString={0,0,0}; WCHAR ubuf[30]={L'\0'}; CHAR abuf[60]={'\0'}; int ubufLen=sizeof ubuf; ANSI_STRING asString={0,0,0}; swprintf(ubuf,L"asas"); RtlInitUnicodeString(&usString,ubuf); DebugPrint(("%wZ\n",&usString)); //能显示 RtlInitUnicodeString(&usString,L"哈哈"); DebugPrint(("%wZ\n",&usString));//什么都打印不出 asString.Length = 0; asString.MaximumLength = sizeof abuf; asString.Buffer = abuf; RtlUnicodeStringToAnsiString(&asString, &usString, FALSE); DebugPrint(("%s\n",asString.Buffer));//显示“哈哈” DriverObject-> DriverUnload = DriverUnload; return STATUS_SUCCESS; } |
|
板凳#
发布于:2007-09-15 10:21
![]() |
|
地板#
发布于:2007-04-24 14:43
int ConvertFileNameWCHARToCHAR(PWCHAR pWChar,PCHAR pChar)
{ UNICODE_STRING usFileName; ANSI_STRING asFileName; RtlInitUnicodeString(&usFileName, pWChar); asFileName.Length = 0; asFileName.MaximumLength = MAX_PATH; asFileName.Buffer = pChar; RtlUnicodeStringToAnsiString(&asFileName, &usFileName, FALSE); pChar[asFileName.Length] = 0; return asFileName.Length; } |
|
地下室#
发布于:2007-03-29 19:41
楼上正解
|
|
驱动小牛
![]() |
5楼#
发布于:2007-03-29 18:21
paladinii 是骗人的,正确方法是:
1)定义全局变量ANSI_STRING gAS,在DriverEntry初始化.最后释放. 2) PCHAR TO_ANSI( IN PUNICODE_STRING pUS ) { RtlZeroMemory(gAS.Buffer, MAX_PATH); gAS.Length = MAX_PATH - sizeof(CHAR); gAS.MaximumLength = MAX_PATH; RtlUnicodeStringToAnsiString(&gAS, pUS, FALSE); return gAS.Buffer; } 3)DbgPrint("%s", TO_ANSI(pUS)); |
|
6楼#
发布于:2007-03-28 09:19
张书爱玉: 可否将你用UNICODE_STRING显示中文路径名的代码帖出来,谢谢
|
|
|
7楼#
发布于:2007-03-27 22:14
用Unicode_string不就可以了嘛!中文有'\0'的嘛,用Unicode_string就可以了。
|
|
|
8楼#
发布于:2007-03-25 19:11
其实在Buffer中已经得到了中文路径,只不过需要将获取的UNICODE_STRING路径名转换为ANSI_STRING就可以将汉字显示出来了。
|
|
|
9楼#
发布于:2007-03-21 10:27
照理说使用UNICODE应该是没问题的。
|
|
10楼#
发布于:2007-03-20 22:08
晕,怎么一半就没了....
![]() |
|
11楼#
发布于:2007-03-05 10:10
怎么没人回答了呢???
|
|
12楼#
发布于:2005-08-11 09:59
就是,怎么不说一下怎么处理的?
|
|
13楼#
发布于:2005-04-10 15:43
怎么处理的?
|
|
|
14楼#
发布于:2005-04-07 20:51
自己已经解决了
|
|
15楼#
发布于:2005-04-07 17:26
请教高人如何处理才能不丢失呢?万分感谢
|
|
16楼#
发布于:2005-04-07 10:01
Dbgprint输出ObjectAttributes->ObjectName->Buffer 另外,获取文件名在sfilter中不是这么简单的,需要做些处理。 DbgPrint(\"pathnamt %ws \",ObjectAttributes->ObjectName->Buffer); 这样处理dbgprint会把后边的中文截掉。例如C:\\test\\显示中文\\ 会变成C:\\test\\而后边的中文就没有了。 |
|
|
17楼#
发布于:2005-04-06 19:23
用Dbgprint输出ObjectAttributes->ObjectName->Buffer
DbgPrint(\"pathnamt %ws \",ObjectAttributes->ObjectName->Buffer);这样死活没法显示中文 |
|
18楼#
发布于:2005-04-06 18:37
paladinii lsq77兄弟,我在呢。上次给你回的邮件你收到了吗?最近怎么看不到你了? |
|
|
19楼#
发布于:2005-04-06 18:34
上面的兄弟使用UNICODE_STRING显示所有字符集都是可以得,不管是中文还是什么拉丁文。你之所以不能正常显示估计是在你实现或者截获文件名处理的时候有问题,你可以把代码发上来我来帮你看看。另外,获取文件名在sfilter中不是这么简单的,需要做些处理。我想事实胜于雄辩看看我的filter拦截的名字。
|
|
|
上一页
下一页