Windows API如何判断光驱是否有光盘
可以用GetDriveType判断是否有光驱,如果返回true表明有光驱,然后调用GetVolumeInformation,如果返回假且GetLastError为21时,则表明光驱中没有光盘。
函数GetDriveType获取驱动器类型,其函数原型如下:UINT GetDriveType(LPCTSTR lpRootPathName // 驱动器根路径,如"C:\");返回值为驱动器的类型,如DRIVE_FIXED表示硬盘,DRIVE_CDROM表示光盘等;
函数GetVolumeInformation获取逻辑驱动器信息,其函数原型如下:BOOL GetVolumeInformation(LPCTSTR lpRootPathName, // 输入参数,指向所要获取属性的驱动器根路径LPTSTR lpVolumeNameBuffer, // 输出参数,返回驱动器名DWORD nVolumeNameSize, // 输入参数,lpVolumeNameBuffer的内存缓冲区大小LPDWORD lpVolumeSerialNumber, // 输出参数,驱动器序列号LPDWORD lpMaximumComponentLength, // 输出参数,返回文件系统所支持的文件组成部分的最大值LPDWORD lpFileSystemFlags, // 输出参数,属性可以判断多种驱动器属性值LPTSTR lpFileSystemNameBuffer, // 输出参数,表示文件系统类型DWORD nFileSystemNameSize // lpFileSystemNameBuffer的缓冲区大小);返回值为BOOL值,表示信息是否获取成功;
代码:
#include#include
#define BUFSIZE 1024
int main(){CHAR szFileName[BUFSIZE];DWORD dwLastError;DWORD dwFileFlag;LPSTR lPdrive="G:\";
if(GetDriveType(lPdrive)!=DRIVE_CDROM){printf("驱动器%s不是CD/DVD ROM!n",lPdrive);return -1;}if(!GetVolumeInformation(lPdrive,NULL,0,NULL,NULL,&dwFileFlag,szFileName,BUFSIZE)){dwLastError=GetLastError();if(dwLastError==87||dwLastError==21){printf("设备未就绪,请插入光盘!n");return 0;}else{printf("错误%dn",dwLastError);return 0;}}printf("光盘已经插入,文件系统类别为%sn",szFileName);return 0;}
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(2)
可以用GetDriveType判断是否有光驱,如果返回true表明有光驱,然后调用GetVolumeInformation,如果返回假且GetLastError为21时,则表明光驱中没有光盘。
函数GetDriveType获取驱动器类型,其函数原型如下:
UINT GetDriveType(
LPCTSTR lpRootPathName // 驱动器根路径,如"C:\"
);
返回值为驱动器的类型,如DRIVE_FIXED表示硬盘,DRIVE_CDROM表示光盘等;
函数GetVolumeInformation获取逻辑驱动器信息,其函数原型如下:
BOOL GetVolumeInformation(
LPCTSTR lpRootPathName, // 输入参数,指向所要获取属性的驱动器根路径
LPTSTR lpVolumeNameBuffer, // 输出参数,返回驱动器名
DWORD nVolumeNameSize, // 输入参数,lpVolumeNameBuffer的内存缓冲区大小
LPDWORD lpVolumeSerialNumber, // 输出参数,驱动器序列号
LPDWORD lpMaximumComponentLength, // 输出参数,返回文件系统所支持的文件组成部分的最大值
LPDWORD lpFileSystemFlags, // 输出参数,属性可以判断多种驱动器属性值
LPTSTR lpFileSystemNameBuffer, // 输出参数,表示文件系统类型
DWORD nFileSystemNameSize // lpFileSystemNameBuffer的缓冲区大小
);
返回值为BOOL值,表示信息是否获取成功;
代码:
#include
#include
#define BUFSIZE 1024
int main()
{
CHAR szFileName[BUFSIZE];
DWORD dwLastError;
DWORD dwFileFlag;
LPSTR lPdrive="G:\";
if(GetDriveType(lPdrive)!=DRIVE_CDROM)
{
printf("驱动器%s不是CD/DVD ROM!n",lPdrive);
return -1;
}
if(!GetVolumeInformation(lPdrive,
NULL,
0,
NULL,
NULL,
&dwFileFlag,
szFileName,
BUFSIZE))
{
dwLastError=GetLastError();
if(dwLastError==87||dwLastError==21)
{
printf("设备未就绪,请插入光盘!n");
return 0;
}
else
{
printf("错误%dn",dwLastError);
return 0;
}
}
printf("光盘已经插入,文件系统类别为%sn",szFileName);
return 0;
}