郭兄,您好!
程序已试, 菜单功能非常好用了, 谢谢! :-)
关于判断软盘或U盘程序,把我以前用过的一段程序copy上来,希望能对郭兄有点帮助:
用absread函数判断U盘(“D:”)是否存在; (隐掉的部分是用_bios_disk判断的程序):
BOOL IfUsbExist()
{//判断软盘是否存在
char buffer[512];
char ch[MAXPATH], ch1[50];
int Ifdrive = -1;
UINT nRetry;
char USBPATH[10];
strcpy(USBPATH, "D:"); //D盘为U盘
char cDrive=toupper(USBPATH[0])-'A';
//struct diskinfo_t di;
//di.drive = toupper(USBPATH[0])-'C'+0x80; //D驱USB
//di.head = 0;
//di.track = 0;
//di.sector = 1;
//di.nsectors = 1;
//di.buffer = buffer;
memset( buffer, 0, 512 );
Ifdrive = absread(cDrive,1,2,buffer);//Re_bios_disk( _DISK_READ, &di );
//no USB disk
if( Ifdrive!=0 ) return FALSE;
return TRUE;
}
BOOL IfFloppyExist()
{//判断软盘是否存在
char buffer[512];
struct diskinfo_t di;
int Ifdrive = -1;
char ch[MAXPATH], ch1[50];
UINT nRetry;
char FLOPPYPATH[10];
strcpy(FLOPPYPATH, "A:"); //软盘为A盘
memset( buffer, 0, 512 );
strcpy(ch,FLOPPYPATH);
di.drive = toupper(ch[0])-'A';
di.head = 1;
di.track = 1;
di.sector = 1;
di.nsectors = 1;
di.buffer = buffer;
Ifdrive = Re_bios_disk( _DISK_READ, &di );
//no floppy disk
if( Ifdrive != 0 ) return FALSE;
return TRUE;
}
UINT Re_bios_disk( unsigned cmd, struct diskinfo_t _FAR *dinfo )
{//retry _bios_disk for 3 times for anti noise
UINT ret;
for(char i=0;i<3;i++)
{
ret = _bios_disk( cmd, dinfo ) & 0xff00;
if(ret==0)
break;
}
return ret;
}