博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[WinAPI] API 7 [判断光驱内是否有光盘]
阅读量:5967 次
发布时间:2019-06-19

本文共 1901 字,大约阅读时间需要 6 分钟。

 

 

判断光驱中是否有光盘,仍然可以使用GetDriveType和GetVolumeInformation函数实现。首先使用驱动器根路径作为GetDriveType和参数,如果返回值是DRIVE_CDROM,则说明此驱动器为光驱。然后使用GetVolumeInformation获取信息,如果成功,则说明存光盘已经放入。调用完成后GetVolumeInformation函数的第7个参数LPTSTR lpFileSystemNameBuffer存储的是文件系统的类别字符串,光盘一般是CDFS。如果调用GetVolumeInformation时返回FALSE,并且GetLastError返回21,则说明驱动器中未放入光盘。

 

GetLastError

获取在执行中本线程最近的一次错误。本函数是很多系统API返回执行错误原因的方法。可能使用SetLastError函数设置本线程的Last-Error值。GetLastError函数原型如下:
◇参数
无参数。
◇返回值

返回值类型为DWORD,表示本线程的Last-Error值。

[GetLastError函数常用于WinAPI执行返回错误,是最常用的API函数!可以和error lookup工具结合]

 

1 #include 
2 #include
3 #include
4 /* 预定义 */ 5 #define BUFSIZE 512 6 7 /* ************************************ 8 * int main( int argc, PCHAR argv[] ) 9 * 功能 应用程序主函数,根据输入的驱动器10 * 根路径参数判断是否为光驱,是否放11 * 入光盘。12 * 参数 驱动器根路径,比如“D:\”。13 **************************************/14 15 int main( int argc, PCHAR argv[] )16 {17 //存储文件系统类别名18 CHAR szFileSystemNameBuffer[BUFSIZE];19 DWORD dwLastError;20 DWORD dwFileSystemFlags;21 22 //判断是否输入运行时参数23 if( argc != 2 ) 24 {25 printf("请输入驱动器的根路径,比如: \"D:\\\"\n");26 return( -1 );27 }28 29 //判断输入的驱动器是否为CD\DVD ROM30 if(GetDriveTypeA(argv[1])!=DRIVE_CDROM)31 {32 printf("驱动器 %s 不是 CD/DVD ROM。\n",argv[1]);33 return( -1 );34 }35 36 //获取卷信息37 if (!GetVolumeInformationA(38 argv[1], NULL, 0,39 NULL,NULL,40 &dwFileSystemFlags,41 szFileSystemNameBuffer,42 BUFSIZE43 ))44 {45 dwLastError = GetLastError();46 if(dwLastError == 21)47 {48 printf("设备未就绪,请放入光盘!\n");49 return 0;50 }51 else52 {53 printf("GetVolumeInformation 错误 %d\n",dwLastError);54 return 0;55 }56 }57 printf ("光盘已经放入,文件系统类别 %s。\n",szFileSystemNameBuffer);58 return 0;59 }

 

 

转载地址:http://utvax.baihongyu.com/

你可能感兴趣的文章
js中var self=this的解释
查看>>
Facebook 接入之获取各个配置参数
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
事情的两面性
查看>>
只要会营销,shi都能卖出去?
查看>>
sed单行处理命令奇偶行输出
查看>>
VC++深入详解学习笔记1
查看>>
安装配置discuz
查看>>
线程互互斥锁
查看>>
KVM虚拟机&openVSwitch杂记(1)
查看>>
win7下ActiveX注册错误0x80040200解决参考
查看>>
《.NET应用架构设计:原则、模式与实践》新书博客--试读-1.1-正确认识软件架构...
查看>>
2013 Linux领域年终盘点
查看>>
mysql多实例实例化数据库
查看>>
javascript 操作DOM元素样式
查看>>
Android 内存管理 &Memory Leak & OOM 分析
查看>>
HBase 笔记3
查看>>
【Linux】Linux 在线安装yum
查看>>
Atom 编辑器系列视频课程
查看>>
[原][osgearth]osgearthviewer读取earth文件,代码解析(earth文件读取的一帧)
查看>>