阅读:1745回复:18
问题
问题是这样的:
我在FILE FILTER DRIVER 中用ZwSetInformationFile对一个文件进行重命名操作: 对英文名是没有问题的, 但对中文就不行了,函数调用是成功的,只是显示的是乱码,后坠是对的, 譬如:C:\\新建 文本文档1.txt 改后成了:C:\\н¨ Îı¾Îĵµ1.txt 中文都显示为乱码,其余都对 我是用的PFILE_RENAME_INFORMATION结构, 其中的FileName要宽字符,我自己把要处理的文件名简单的转换为宽字符了,不知道处理对不对! |
|
|
沙发#
发布于:2005-02-23 15:06
为何没人理呀?
是太简单了还是没有说清楚呢? 只好自己顶一下? 这可能是UNICODE编码的问题,但为何是这样呢? 大家以前没遇到吗? |
|
|
驱动老牛
|
板凳#
发布于:2005-02-23 15:32
中文没有问题,你是怎么转换的?贴出来,要不怎么回答
|
|
地板#
发布于:2005-02-23 17:44
谢谢zhangshengyu的关注!
我用的是PFILE_RENAME_INFORMATION结构结构 我的理解: ansi编码:中文是用两个字节来表示,英文是一个字节 在驱动中,需要吧ansi转换为uincode编码, 这时是不是一个中文需要四个字节来表示呢?我现在就是 这样来处理的,英文用两个字节 我的问题是中文还需要转换为unicode编码吗? 因为PFILE_RENAME_INFORMATION结构中的filename是WCHAR型的 代码就是驱网上别人用过的! 不知这下我说明白没? |
|
|
地下室#
发布于:2005-02-23 17:56
windows之所以采用unicode,就是为了处理多字节字符的,你把中文由两个字符转成四个字符,那windows还需要unicode干嘛???
:D 谢谢zhangshengyu的关注! |
|
5楼#
发布于:2005-02-24 09:01
用RtlAnsiStringToUnicodeString转换一下就可以了。
|
|
|
6楼#
发布于:2005-02-27 22:34
谢谢几位的关注!
这几天比较忙所以没有回复! 问题解决了,那就是中文不用转,其它的转换为两字节就可以了! 还有一个问题就是我整样设置一个目录的属性呢?在FILE FILTER DRIVER中对应的操作是啥呀? 我跟了下好象没发现到! |
|
|
驱动老牛
|
7楼#
发布于:2005-02-28 10:15
谢谢几位的关注! 就算你解决了,不用RtlAnsiStringToUnicodeString之类的函数,对于中文英文可以,对于小日本语和阿拉伯之类还是不行 |
|
8楼#
发布于:2005-02-28 13:19
我的理解是对目标文件名是英文和中文混合的,这时候MS为我们已经转换为UNICODE的类型了, 还有一个问题是我整样截获到用户的对一个目录所做的共享操作呢?在File Monitor 中,对应的操作在哪儿及对应的操作类型是啥? 我找了些资料,也跟踪了没发现到,由于时间紧,只好向大家求助了,有知道的相关的告诉在下, 其实我也不想麻烦大家,没办法呀,程序员好难做了,辛苦不说,搞不出简直太痛苦了! |
|
|
驱动老牛
|
9楼#
发布于:2005-02-28 16:17
共享不是在文件系统里做的,存在活动目录里的,可以监控活动目录来实现。
|
|
10楼#
发布于:2005-03-01 15:42
我是想实时的监控用户把哪个目录设置为共享了!
不知有方法没? |
|
|
11楼#
发布于:2005-03-04 09:05
哎!
这里的高手都很忙啊! 没人回答我的问题! |
|
|
12楼#
发布于:2005-03-04 09:16
首先,我不懂。
但有人说了用活动目录,你就去找有关的书或资料看了。 不要指望所有人都会step by step 地教你:) 有线索就好了:) |
|
|
13楼#
发布于:2005-03-04 14:50
我的需求活动目录解决不了问题!
是这样的:有两个目录,C:\\TEST D:\\TEST 我要实时监控对C\\TEST的操作,同时D:\\TEST要做同样的操作,就是备份,当用户把C:\\TEST设为共享后,D:\\TEST 也要设为共享,我是在FILEMON里,系统是XP,我想知道共享在FILEMON里有哪些操作! |
|
|
14楼#
发布于:2005-03-04 15:33
都说了,共享不属于fs的事。
filemon也无为力了。 |
|
|
15楼#
发布于:2005-03-04 17:07
谢谢Z的关注!
看来是没戏了! 哎! |
|
|
驱动老牛
|
16楼#
发布于:2005-03-04 17:38
枚举共享
[Visual Basic] Dim fs as IADsFileService Dim share As IADsFileShare On Error GoTo Cleanup Set fs = GetObject(\"WinNT://aComputer/LanmanServer\") For Each share In fs MsgBox(\"Share: \" & share.name) Next share Cleanup: If (Err.Number<>0) Then MsgBox(\"An error has occurred. \" & Err.Number) End If Set fs = Nothing Set share = Nothing |
|
17楼#
发布于:2005-03-05 14:46
谢谢!
能在文件过滤驱动里监控得到吗? 枚煮没有实时性,有事件触发的也可以! |
|
|
驱动老牛
|
18楼#
发布于:2005-03-05 23:01
谢谢! 疯了,有个方法就不错了。有很多时候连个方法都没有呢,你就知足吧 |
|