![]() |
DOS DM&P XMS库参考手册 |
| 2002/04/18 Version 0.10 |
DOS XMS库是一个DOS系统实模式下大型记忆体模型的C语言库。DOS系统运行在实模 式下,开发人员仅仅可以访问1M以下的RAM;用户可用容量是640KB,剩余384KB保留 用于ROM BIOS或者其它卡。借助XMS驱动器,XMS库可以帮助M6117D开发人员轻松 访问DOS系统1M以上的RAM。对于X-DOS系统,配置文件“CONFIG.SYS”中加入 “DOS=HIGH”,X-DOS系统将会激活XMS驱动器。
注意: 调用XMS函数时,内存大小务必为偶数。 例如,文件“DEMO.C”中字符串“szStr” 包含15个字符,它的长度是16(15+1‘\0’);如果将它的长度修改为奇数,程序出错。
如果你有任何问题,请联系我们,邮件地址:tech@dmp.com.cn
| 说明: | 初始化XMS驱动器 | ||
| 参数: |
|
||
| 举例: |
/* Initialize XMS driver */
if(XMS_Init() == 0)
{
printf("Unable to find XMS driver.\n");
return;
}
|
| 说明: | 获取XMS驱动器版本号 | ||
| 参数: |
|
||
| 举例: |
/* Show XMS version */
printf("XMS Version: %x\n", XMS_GetVer());
|
| 说明: | 查询空闲内存,统计最大可用空间 | ||||
| 参数: |
|
||||
| 举例: |
unsigned int nMax, nTotal;
XMS_GetFree(&nMax, &nTotal);
printf("Free memory: max=%u KB, total=%u KB.\n", nMax, nTotal);
|
| 说明: | 分配XMS内存 | ||||||
| 参数: |
|
||||||
| 举例: |
unsigned int Handle;
if(XMS_Allocate(1, &Handle) == 0)
{
printf("failed!\n");
return;
}
|
| 说明: | 释放已分配的XMS内存 | ||||
| 参数: |
|
||||
| 举例: |
/* Free XMS we allocated */ XMS_Free(Handle); |
| 说明: | 获取句柄信息 | ||||||||||
| 参数: |
|
||||||||||
| 举例: |
/* Show handle information */
XMS_GetInfo(Handle, &cLockCounter, &cAvailHandle, &nSize);
printf("Block info: ");
printf("lock counter=%u, ", cLockCounter);
printf("available handle=%u, ", cAvailHandle);
printf("size=%u KB.\n", nSize);
|
| 说明: | 拷贝内存数据 | ||||
| 参数: |
XMMS结构如下: struct XMMS
{
unsigned long lLen; /* length */
unsigned int SrcHandle; /* source handle */
unsigned long lSrcOffset; /* source offset */
unsigned int DstHandle; /* destination handle */
unsigned long lDstOffset; /* destination offset */
};
|
||||
| 举例: |
XMMS XMMS; XMMS.lLen = lLen; XMMS.SrcHandle = SrcHandle; XMMS.lSrcOffset = lSrcOffset; XMMS.DstHandle = 0; ((unsigned int *)(&XMMS.lDstOffset))[0] = FP_OFF(pDst); ((unsigned int *)(&XMMS.lDstOffset))[1] = FP_SEG(pDst); XMS_Copy(&XMMS); |
| 说明: | 拷贝内存缓冲区数据到XMS | ||||||||||
| 参数: |
|
||||||||||
| 举例: |
XMS_CopyToXMS(Handle, 0, pcBuf, BUF_SIZE); |
| 说明: | 拷贝XMS数据到内存缓冲区 | ||||||||||
| 参数: |
|
||||||||||
| 举例: |
XMS_CopyFromXMS(pcBuf, Handle, 0, BUF_SIZE); |
| Jan Yin Chan Electronics Co., LTD.保留所有权利。 | 邮件地址:tech@dmp.com.cn |