社区
C语言
帖子详情
50分求一个BC3.1下的XMS管理程序,我的调不通.
ydyuse
2003-01-13 09:01:27
要求,不用INT15H。系统用DOS6.22
...全文
77
9
打赏
收藏
50分求一个BC3.1下的XMS管理程序,我的调不通.
要求,不用INT15H。系统用DOS6.22
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ydyuse
2003-01-15
打赏
举报
回复
好,给我吧,我马上给分
spirix
2003-01-15
打赏
举报
回复
can you make that?
spirix
2003-01-15
打赏
举报
回复
// xmstest.cpp
//===========================================
#include "xmslib.h"
#include <STDIO.H>
MyXMS Mxms;
void main()
{
FILE *fp1,*fp2;
unsigned int Max;
unsigned Total;
unsigned long fsize=0,Xms_Size=0,FileLenth=0;
long size_=0;
// buff= new far char[2024];
char buff[2024]="ddddddddddddddddddddddddddddddddddd\
dddddddddddddddfffffffffffffffffffffffffffffffffffff\
ddddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddfffffffffffffffffffffffffffffffffffff\
ddddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddfffffffffffffffffffffffffffffffffffff\
ddddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddddddddddddddddddddddddddddddddddddddd\
ddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddfffffffffffffffffffffffffffffffffffff\
ddddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddddddddddddddddddddddddddddddddddddddd\
dddddddddddddddddddddddddddddddddddddddddddddddddddd\
ddddddddddddddddddddddddddddddddddddddddddddddddddd";
printf(" %d ",XMS_Test());
if((fp1= fopen("Temp.bmp","rb+"))==NULL) printf("Wrong");
if((fp2=fopen("out.exe", "wb" ))==NULL) printf("Wrong");
unsigned handle;
printf(" %d ", Mxms.XMS_Get(handle,100));
Mxms.XMS_Check(Max,Total);
printf("%d,%u|",Max,Total);
Mxms.Xmd.Source_Handle=0;
Mxms.Xmd.Source_Offset=(unsigned long)(buff);
Mxms.Xmd.Target_Handle=handle,
Mxms.Xmd.Target_Offset=0;
fseek(fp1,0L,2);
FileLenth=ftell(fp1);
rewind(fp1);
while(1)
{
size_=ftell(fp1);
fsize=fread((char far *)buff,1,2024,fp1);
Mxms.Xmd.Target_Offset=Xms_Size;
Mxms.Xmd.Move_Bytes=fsize;
Mxms.XMS_Move();
Xms_Size+=fsize;
// fseek(fp1,Xms_Size,0);
// Mxms.Xmd.Target_Offset+=fsize;
if (Xms_Size>=FileLenth) break;
}
//Xms_Size=Mxms.Xmd.Target_Offset;
fsize=0;
Mxms.Xmd.Source_Handle=handle;
Mxms.Xmd.Source_Offset=0;
Mxms.Xmd.Target_Handle=0,
Mxms.Xmd.Target_Offset=(unsigned long)(buff);
while(1)
{
if(Xms_Size-fsize>2024)
{
Mxms.Xmd.Source_Offset=fsize;
Mxms.Xmd.Move_Bytes=2024;
Mxms.XMS_Move();
fwrite(buff,2024,1,fp2);
fsize+=2024;
}
else
{
Mxms.Xmd.Source_Offset=fsize;
Mxms.Xmd.Move_Bytes=Xms_Size-fsize;
Mxms.XMS_Move();
fwrite(buff,Xms_Size-fsize,1,fp2);
break;
}
}
Mxms.XMS_Free(handle);
fclose (fp1);
fclose (fp2);
}
// bc3.1下运行
spirix
2003-01-14
打赏
举报
回复
我给的文档不能用吗?
我已经用它在dos下开发过两个软件了,用不用把测试程序也给你?
ydyuse
2003-01-13
打赏
举报
回复
只要可用,肯定给分
spirix
2003-01-13
打赏
举报
回复
请参考我的文档!
http://www.csdn.net/develop/read_article.asp?id=7198
记得给分哦!
ydyuse
2003-01-13
打赏
举报
回复
DOS4GW 模式??不好意思,我不明白是什么?
Nepton
2003-01-13
打赏
举报
回复
使用 DOS4GW 模式写程序
ydyuse
2003-01-13
打赏
举报
回复
各位继续!
纯DOS下内存的管理—实模式下访问4GB内存
本文详细解析了如何在实模式下访问4GB内存的技术细节,通过使用保护模式支持,仅需数十行代码即可实现。文章还讨论了不同内存管理方式的优劣,以及如何在内存顶端使用扩展内存以降低破坏数据的风险。
CPU如何寻址(关于内存)
本文详细介绍了PC机内存的各类概念,包括常规内存、扩充内存、扩展内存、高端内存区、上位内存和Shadow内存等。同时,探讨了内存的寻址空间、物理存储器来源以及内存管理技术。
CrystalDiskInfo-v9.9.2-硬盘信息查看 .exe
CrystalDiskInfo_v9.9.2_硬盘信息查看 .exe
C语言
70,038
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章