请教:如何在纯DOS下显示长格式的UNICODE字符文件名???

troyleescong 2006-07-25 04:12:02
我想编程实现DOS的“dir”命令功能,但在纯DOS下vc的_findfirst和_findnext函数都不能使用(我研究过是因为需要有一个叫IFSMGR.VXD - 文件系统安装管理程序的驱动程序的支持),若用标准的findfirst和findnext函数则只能显示短文件名,而且中文会乱码。
所以,我的思路是直接读磁盘扇区,读出文件分配表和目录文件的目录项,把其中的UNICODE字符转换为中文或者其他,然后列表显示。
但是,我的问题是对文件分配表和目录文件的结构以及物理位置不太熟悉,虽然我尝试过搜索,但效果并不理想,并且我对UNICODE字符格式也不太了解,所以在此恳请各位高手不吝赐教,如果可以的话希望提供代码。
或者还有什么其他更好的方法可以在纯DOS下显示长格式的UNICODE字符文件名,也希望提出来。
谢谢!!
...全文
551 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
troyleescong 2006-07-31
  • 打赏
  • 举报
回复
去微软下载的FAT32的格式文档,全是英文的,快晕死了~~~~
期待中文版啊!!
troyleescong 2006-07-30
  • 打赏
  • 举报
回复
首先,先感谢Jim_King_2000()的提供,请问谁还有更多有关FAT32的格式的资料吗??
troyleescong 2006-07-25
  • 打赏
  • 举报
回复
To:al0n9(al0n9)
FAT32文件系统是支持Unicode格式的,“每个长文件名目录项最多可以存放13个UNICODE字符。如果长文件名比13字符还要长,就会有新的目录项加入到目录中来用于存放长文件名的其余部分。” 请看这个:http://www.pchdd.net/Get/jishujieda/224845736.htm
其次,我已经编写了扩展Int13H的中断服务程序直接读写磁盘扇区了,而且成功完成了磁盘分区表链的查找。
第三点,对于显示汉字的问题,我了解到好像可以加入ucdos汉字系统,不知道是否正确??
al0n9 2006-07-25
  • 打赏
  • 举报
回复
不知道楼主所谓的纯DOS是什么含义?DOS6.22?
似乎FAT32和FAT16都是不支持Unicode的,那么就是NTFS的文件系统格式了,NTFS的格式到现在还没公开呢,这是难点1。
linux系统下面,有读取NTFS文件系统格式的源代码,可以参照一下。DOS6.22只能访问2G的硬盘,不支持大硬盘访问,而NTFS一般都是在大硬盘中的,所以,还得自己写扩展Int13H的中断服务程序来支持大硬盘访问,这是难点2。
Unicode3.1总共有9万多个字符,如果用点阵字库,按最小的16点阵字库来算,每个字符的点阵信息占用32个字节的空间,9万多个字符,就需要2M以上的存储空间。纯DOS最大只能访问1M的内存空间,除去ROM占用,高端内存部分,操作系统占用的部分,实际上应用程序最多也就能访问630K左右的空间,所以汉字的点阵信息加载到内存是不可能了,但是如果点阵信息放在硬盘上,那么显示速度恐怕就慢如蜗牛了。
jixingzhong 2006-07-25
  • 打赏
  • 举报
回复
真正的 DOS 下是不支持汉字显示的 ...

那个年代,
支持的只是 ASCII ...
而且在 DOS 系统下,
文件名字也是收到限制,
主文件名最多 8 字符, 多余会被截去,
根本就没有获得全部文件名字的机会 ...
Jim_King_2000 2006-07-25
  • 打赏
  • 举报
回复
肯定要自己访问文件分配表啊。如果是FAT32格式的,就需要阅读FAT32的spec;是NTFS格式的,就需要读NTFS的spec。太麻烦了。不知道楼主为何做这个?
Kvci 2006-07-25
  • 打赏
  • 举报
回复
1、要获得完整文件名
2、要显示汉字

第一步暂时没研究怎么做
实现第一步后,要把汉字的2个字节查汉字表文件,再用图形方式把字画逐个出来(这个TC下常用的方法,要有个点阵汉字库文件,可以根据字符值算出汉字点阵的存储位置)
mopyman 2006-07-25
  • 打赏
  • 举报
回复
基本无望,修改内核可是比较难的!
pacman2000 2006-07-25
  • 打赏
  • 举报
回复
没希望。。。DOS只支持8.3文件名。
Jim_King_2000 2006-07-25
  • 打赏
  • 举报
回复
http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx
FAT32的格式文档。
troyleescong 2006-07-25
  • 打赏
  • 举报
回复
To:Jim_King_2000()
请问“阅读FAT32的spec”是什么意思呢??

To:mopyman(only you c plus plus)
我不是要修改内核,是在加载WINDOWS之前的命令行模式下使用的(即我所谓的纯DOS模式)。

To:dear all
现在很多那些ghost版的WINDOWS安装盘好像都可以显示中文的,请问大家知道他是怎么做的吗?
内容概要:本文基于Matlab/Simulink平台,对电励磁同步电机在异步牵入、稳态运行及能耗制动三个阶段的全周期动态特性进行建模仿真与系统研究。研究构建了完整的电机数学模型与仿真系统,重点分析了电机从异步启动到同步运行的过渡过程、稳态运行时的电磁与机械性能,以及执行能耗制动时的减速特性与能量耗散机理。通过仿真,揭示了励磁电流、负载转矩与转速在不同工况下的动态响应规律与耦合关系,为电机的控制策略设计与性能优化提供了理论依据和数据支持。; 适合人群:具备电机学、电力电子与电力拖动基础知识的电气工程及相关专业的研究生、科研人员与工程技术人员。; 使用场景及目标:①研究电励磁同步电机的启动特性,解决异步牵入过程不稳定或失败的问题;②分析电机在不同负载下的稳态运行性能,优化运行效率;③设计和验证能耗制动策略,精确控制制动过程的减速时间和能量消耗。; 阅读建议:在学习过程中,应结合电机的基本原理,深入理解仿真模型中各模块(如电机本体、励磁控制、负载模型)的搭建逻辑,并通过调整仿真参数(如励磁电压、负载大小)来观察和分析系统动态响应,以加深对电机全周期运行特性的理解。

70,040

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧