4.2.3 判断光驱中是否有光盘
#include
#include
#include
#define BUFSIZE 512
int main(int argc, PCHAR argv[]){
CHAR szFileSystemNameBuffer[BUFSIZE];//存储文件系统类别名
DWORD dwLastError;//保存错误编号
DWORD dwFileSystemFlags;//文件系统标志
if (argc != 2){
printf("请输入驱动器的根路径,如: D:\\\n");
return (-1);
}
if (GetDriveType(argv[1]) != DRIVE_CDROM){
printf("驱动器 %s 不是 CD/DVD\n", argv[1]);
return (-1);
}
//获得卷信息 这里只获取了文件系统名称,如 NTFS
if (!GetVolumeInformation(
argv[1],//in 卷的根目录的字符串的指针
NULL,//out 接收指定卷名称的缓冲区的指针
0,//in 缓冲区的长度,如果上一参数为空,则忽略此参数
NULL,//out 指向接收卷序号的变量的指针,如果不需要序列号,此参数可以为NULL
NULL,//out 用来接收指定文件系统支持的文件名组件的最大长度,值大概是 255
&dwFileSystemFlags,//out 标志的变量的指针
szFileSystemNameBuffer,//out 文件系统的名称的缓冲区的指针
BUFSIZE//文件系统名称缓冲区的长度,如果上一参数为空,则忽略此参数
)){
dwLastError = GetLastError();
if (dwLastError == 21){
printf("设备未就绪,请放入光盘!\n");
return 0;
} else{
printf("获取卷信息错误: %d\n", dwLastError);
return 0;
}
}
printf("光盘已经放入,文件系统类别: %s\n", szFileSystemNameBuffer);
return 0;
}