⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdrom.cpp

📁 DOS下得到光驱信息,编译环境为Tubor C 3.0
💻 CPP
字号:
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <ctype.h>
#include <process.h>
#include <string.h>

void help()
{
	printf("Usage:cdrom [O|C] [cdrom device name]\n");
}

int main(int argc,char *argv[])
{
   union REGS inregs,outregs;
   char *cdromdevicename;
   char buf[]  = "0";

   clrscr();

   if ( (argc != 3 ) ||
		((toupper(*argv[1]) != 'C') && (toupper(*argv[1]) != 'O'))
	  )
   {
		help();
		exit(0);
   }

   cdromdevicename = argv[2];
   for (int i=0; i<strlen(cdromdevicename); i++)
   {
		cdromdevicename[i] = toupper(cdromdevicename[i]);
   }

   inregs.x.dx = (int) cdromdevicename;	/* open cdrom device using handle */
   inregs.h.al = 0;
   inregs.h.ah = 0x3d;
   intdos(&inregs,&outregs);

   if((outregs.x.cflag == 1) !=0) 	/* if carry flag is set, there was an error */
   {
		printf("Error open the device %s\n",cdromdevicename);
		exit(1);
   }

   inregs.x.bx = outregs.x.ax;		/* save the device handle */
   if(toupper(*argv[1]) == 'C')
		buf[0] = 0x05;				/* open cdrom */
   else
		buf[0] = 0x0;               /* close cdrom */
   inregs.x.dx = (int) buf;
   inregs.x.ax = 0x4403;
   inregs.x.cx = 0x01;		/*number of bytes to write */

   intdos(&inregs, &outregs);

   /* if carry flag is set, there was an error */
   if((outregs.x.cflag == 1) !=0)
   {
		printf("Error handle the device %s\n",cdromdevicename);
		exit(1);
   }
   else
   {
		if (toupper(*argv[1]) == 'C')
			printf("Close the cdrom door!\n");
		else
			printf("Open the cdrom door!\n");
   }
   return(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -