看看是什么问题,说的有理送100分!急

madeinchina 2003-05-15 09:18:28
函数名: biosdisk
功 能: 软硬盘I/O
用 法: int biosdisk(int cmd, int drive, int head, int track, int sector
int nsects, void *buffer);
程序例:

#include <bios.h>
#include <stdio.h>

int main(void)
{
int result;
char buffer[512];

printf("Testing to see if drive a: is ready\n");
result = biosdisk(4,0,0,0,0,1,buffer);
result &= 0x02;
(result) ? (printf("Drive A: Ready\n")) :
(printf("Drive A: Not Ready\n"));

return 0;

}
这个程序在win2k server下运行是正确的但在dos下会出错
我把biosdisk(4,0,0,0,0,1,buffer);改为biosdisk(4,7,0,0,0,1,buffer); 也就是对H盘进行操作,却报错,H盘是非32M的flash card 请问哪里有错误?
...全文
22 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
put_get 2003-05-20
biosdisk 听起来象是直接调用BIOS功能来实现的.如果是这样的话,就有可能了:DOS下的设备驱动应该是接管DOS文件服务,你Copy呀,DEL呀都是调DOS文件服务来实现的.如果直接调用BIOS的功能肯定是不行的.W2K是不充许普通应用程序访问硬件的,BIOS的功能是仿真出来的.如果驱动程序有不提供这种BIOS的调用接口,会不会也访问不到呢?我也不知道,胡写乱讲,只供参考:)
回复
ghtsao 2003-05-18
如果可能,你应当写一个函数来判断和查询FLASH盘是否存在以及,此盘的正确的驱动器号,这样不会因为人为原因使用了错语的驱号。
回复
ghtsao 2003-05-17
对不起,你确定7对应的是H盘吗?

很多操作系统对分区的驱符指定顺序都不一样,何况WINDOWS还可以修改驱动器符号。

所以我想7对应的并不就等于H盘,你应该再看看驱动编号和驱符的对应关系,我想驱动号和驱符的对应规则没这么简单,如果这个操作对其它非flash驱动器不造成伤害的话,也可以试试更换驱动器号来偿试是否有另一个正确的编号。

希望能赢得你的100分。
回复
madeinchina 2003-05-15
在DOS下已经安装了FLASH CARD的驱动程序,可以对H盘进行读写操作了,COPY DEL等DOS命令都可以执行,现在问题是在WIN2K下,我改成biosdisk(4,7,0,0,0,1,buffer); 就不行了,不知道为什么
回复
Cybergate 2003-05-15
DOS下怎么访问flash card??
回复
相关推荐
发帖
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
帖子事件
创建了帖子
2003-05-15 09:18
社区公告
暂无公告