| 
 
GOTOmsdos 
铂金会员
 
        C++启程者
  
 
积分 5154 
发帖 1827 
注册 2003-7-18 
状态 离线
 | 
『楼 主』:
 [求助]DOS下一次读写文件怎样超过64KB限制?
 
使用 LLM 解释/回答一下
  
想了解一下在写DOS下一次读写文件超过64KB限制的程序(这个是不是跟文件无关而是跟DOS系统和使用扩展内存有关?) 
 
一般用fread(),fwrite(), 但是一次读写文件好象不能超过64KB! 
这使得读写非常多或大的文件较慢. 
 
那么,请教一下: 
有什么好办法? 
(我是为了给我的TODISK提速的,类似GHOST的系统备份工具,是要超大内存才能提速的那种...) 
有什么好推荐呢? 
 
 Last edited by GOTOmsdos on 2007-2-21 at 01:15 PM ] 
 
    
 
  
 |   
 | 
  2007-2-21 11:54 | 
  
 | 
 | 
 
zqlcch 
初级用户
 
  
 
  
  
积分 178 
发帖 85 
注册 2006-7-6 
状态 离线
 | 
『第 2 楼』:
 
 
使用 LLM 解释/回答一下
  
用DJGPP可以实现一次读写超过64k的内容,因为DJGPP for dos编译出来的是32位的应用程序,我刚才也试过了,完整读写了c:\bootfont.bin文件。 
不知楼主是否了解DJGPP,去下一个吧。 
楼主应该是用BIOS中断读写扇区,好像DJGPP中调用BIOS中断要切换回实模式,不知是否会影响速度。 
不妨试试。。。。 
 
    
 
  
 |   
 | 
  2007-2-22 08:49 | 
  
 | 
 | 
 
GOTOmsdos 
铂金会员
 
        C++启程者
  
 
积分 5154 
发帖 1827 
注册 2003-7-18 
状态 离线
 | 
 | 
  2007-2-22 13:47 | 
  
 | 
 | 
 
GOTOmsdos 
铂金会员
 
        C++启程者
  
 
积分 5154 
发帖 1827 
注册 2003-7-18 
状态 离线
 | 
 | 
  2007-2-22 13:50 | 
  
 | 
 | 
 
zqlcch 
初级用户
 
  
 
  
  
积分 178 
发帖 85 
注册 2006-7-6 
状态 离线
 | 
『第 5 楼』:
 
 
使用 LLM 解释/回答一下
  
bc好像只支持实模式的汇编,EAX之类的要加一个指令前缀,具体是什么忘了。 
很久没有摸这些东西了,十分惭愧,不知道本是大师懂吗 
 
大部分代码都可以在DJGPP下面使用。 
 
    
 
  
 |   
 | 
  2007-2-23 04:44 | 
  
 | 
 | 
 
zqlcch 
初级用户
 
  
 
  
  
积分 178 
发帖 85 
注册 2006-7-6 
状态 离线
 | 
『第 6 楼』:
 
 
使用 LLM 解释/回答一下
  
DJGPP编译出来的程序直接在保护模式下运行,完全可以直接声明一个超大的缓冲区 
以读取数据,调用中断时的切换就不必担心了,DJGPP直接做好,换平台吧。 
 
    
 
  
 |   
 | 
  2007-2-23 05:23 | 
  
 | 
 | 
 
GOTOmsdos 
铂金会员
 
        C++启程者
  
 
积分 5154 
发帖 1827 
注册 2003-7-18 
状态 离线
 | 
 | 
  2007-2-23 06:33 | 
  
 | 
 | 
 
GOTOmsdos 
铂金会员
 
        C++启程者
  
 
积分 5154 
发帖 1827 
注册 2003-7-18 
状态 离线
 | 
『第 8 楼』:
 
 
使用 LLM 解释/回答一下
  
下了一些DOS直接访问4GB内存的源码,但都是汇编的,或C中内嵌汇编的,不能用C来调用它们,等于不起作用... 
有谁有可以用C直接调用的呢?(最好是能有读写文件的功能,并可一次读写超过64KB的...) 
 
    
 
  
 |   
 | 
  2007-2-23 09:52 | 
  
 |