xzjfile
禁止发言
禁止发言
  • 注册日期2001-12-14
  • 最后登录2018-07-12
  • 粉丝0
  • 关注0
  • 积分6970分
  • 威望50721点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1624回复:11

在vxd中,怎样在长文件名和短文件名之间转换啊?

楼主#
更多 发布于:2003-01-02 16:16
用户被禁言,该主题自动屏蔽!

最新喜欢:

okincnokincn
kenli79
驱动小牛
驱动小牛
  • 注册日期2002-06-12
  • 最后登录2003-07-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-01-08 10:38
it seems difficult. concerning...
超级菜鸟!!!!!!!!!
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-01-09 18:42
try this:
FS_EnumerateHandle
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
kenli79
驱动小牛
驱动小牛
  • 注册日期2002-06-12
  • 最后登录2003-07-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-01-10 10:07
rayyang2000兄,EnumHandle得出来的文件名好像可能长也可能短,这个方法不妥。
超级菜鸟!!!!!!!!!
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-01-11 13:39
 :D 发了帖子,才发现好像有点文不对题。
Find File的结构里面好像有长和短文件名,可以试试看自己在里面查找。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
kenli79
驱动小牛
驱动小牛
  • 注册日期2002-06-12
  • 最后登录2003-07-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-01-13 14:02
使用Find File可能会导致IFS重入,死的好惨。
超级菜鸟!!!!!!!!!
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-01-14 21:13
那是因为你调用了ifs的函数,直接调用fsd的handler可以避免。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
kenli79
驱动小牛
驱动小牛
  • 注册日期2002-06-12
  • 最后登录2003-07-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-01-16 10:14
你的意思是调用preIFSHook,函数指针那里来呢?


[编辑 -  1/16/03 by  kenli79]
超级菜鸟!!!!!!!!!
else
驱动小牛
驱动小牛
  • 注册日期2002-10-21
  • 最后登录2004-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-01-16 11:23
Int 21/AX=7160h/CL=01h

Windows95 - LONG FILENAME - GET SHORT (8.3) FILENAME FOR FILE
AX = 7160h
CL = 01h
CH = SUBST expansion flag
00h return a path containing true path for a SUBSTed drive letter
80h return a path containing the SUBSTed drive letter
DS:SI -> ASCIZ long filename or path
ES:DI -> 67-byte buffer for short filename
Return:CF set on error
AX = error code
02h invalid component in directory path or drive letter only
03h malformed path or invalid drive letter
ES:DI buffer unchanged
CF clear if successful
ES:DI buffer filled with equivalent short filename (full path,
even if relative path given, and all uppercase)

Note: This call returns the short name for any long-filename portions of the provided pathname or filename

See Also: AH=60h - AX=7160h/CL=00h - AX=7160h/CL=02h

Category: DOS Kernel - Int 21h - W



--------------------------------------------------------------------------------


Int 21/AX=7160h/CL=02h

Windows95 - LONG FILENAME - GET CANONICAL LONG FILENAME OR PATH
AX = 7160h
CL = 02h
CH = SUBST expansion flag
00h return a path containing true path for a SUBSTed drive letter
80h return a path containing the SUBSTed drive letter
DS:SI -> ASCIZ short filename or path
ES:DI -> 261-byte buffer for canonicalized long name
Return:CF set on error
AX = error code
02h invalid component in directory path or drive letter only
03h malformed path or invalid drive letter
ES:DI buffer unchanged
CF clear if successful
ES:DI buffer filled with qualified long name (can contain
lowercase letters)

Desc: Determine the canonical name of the specified filename or path, corresponding to the undocumented TRUENAME command in COMMAND.COM

Note: This call returns the short name for any long-filename portions of the provided pathname or filename

BUG: Even though the maximum length of a complete long pathname is 260 characters, Windows95 returns CF set/AX=0003h even if the file exists whenever the full pathname is more than 255 characters

See Also: AH=60h - AX=7160h/CL=00h - AX=7160h/CL=01h

Category: DOS Kernel - Int 21h - W


[编辑 -  1/16/03 by  else]
remote999
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2003-06-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-06-04 13:32
我知道方法的,有人要的话,我可以给!
kenli79
驱动小牛
驱动小牛
  • 注册日期2002-06-12
  • 最后登录2003-07-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-06-12 11:22
在侯捷翻译的那本关于win95 vxd的书中有提到,很多函数转来转去的,可以看看,试试。
超级菜鸟!!!!!!!!!
else
驱动小牛
驱动小牛
  • 注册日期2002-10-21
  • 最后登录2004-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-06-12 13:29
在侯捷翻译的那本关于win95 vxd的书中有提到,很多函数转来转去的,可以看看,试试。


那里面没有。

可以自己调用preIFSHook去查,函数指针自己记录下来
游客

返回顶部