2014-11-02 29 views
2

我试图从DOS程序中的C程序(并且我不是指Windows命令提示符,我的意思是实际的DOS 6.0)中使用DJGPP C编译器。非交互式驱动器在DOS列表中

我找不到一个直接执行此操作的API,因此我只是循环访问驱动器A到Z并尝试测试它们是否在那里。我试着做用opendiraccessstatfs这个测试,但在所有3我得到的消息是这样的:

Insert diskette for drive B: and press any key when ready 

有什么办法,我可以找出我是否可以从一个驱动器读取完全非交互式?如果在没有加载磁盘的情况下存在驱动器,我只想表现得好像该驱动器不存在并继续运行。

+1

+1为'驱动器B插入软盘:准备好时按任意键的怀旧+1' – 2014-11-02 04:24:53

+0

@BurhanKhalid你想怀旧吗?这个项目还涉及一个旧的米色486DX盒子,带有一个5.5英寸软盘驱动器,使得绝对令人愉快的噪音:) – 2014-11-02 04:38:41

+0

嘿,DX2还是一个普通的DX?我错过了那些! – 2014-11-02 04:43:08

回答

1

所以,只要这张贴后不久,我发现有实际上是一个API做我想要做的直接使用setmntentgetmntent

下面是一个代码示例:

FILE *mntentptr = setmntent(NULL, NULL); // this won't segfault as DJGPP ignores both pointers 
struct mntent *fsdetails; 
while (fsdetails = getmntent(mntentptr)){ 
    printf("Drive %s is present", fsdetails->mnt_dir); 
} 
0

您需要使用IOCTL Query Logical Drive Map检查哪些逻辑驱动器与它相关联。我不熟悉如何映射到标准C库调用,但您应该可以通过直接在DOS中调用INT来完成。