[WinAPI] API 7 [判断光驱内是否有光盘]
判断光驱中是否有光盘,仍然可以使用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工具结合]
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
/* 预定义 */
#define BUFSIZE 512 /* ************************************
* int main( int argc, PCHAR argv[] )
* 功能 应用程序主函数,根据输入的驱动器
* 根路径参数判断是否为光驱,是否放
* 入光盘。
* 参数 驱动器根路径,比如“D:\”。
**************************************/ int main( int argc, PCHAR argv[] )
{
//存储文件系统类别名
CHAR szFileSystemNameBuffer[BUFSIZE];
DWORD dwLastError;
DWORD dwFileSystemFlags; //判断是否输入运行时参数
if( argc != )
{
printf("请输入驱动器的根路径,比如: \"D:\\\"\n");
return( - );
} //判断输入的驱动器是否为CD\DVD ROM
if(GetDriveTypeA(argv[])!=DRIVE_CDROM)
{
printf("驱动器 %s 不是 CD/DVD ROM。\n",argv[]);
return( - );
} //获取卷信息
if (!GetVolumeInformationA(
argv[], NULL, ,
NULL,NULL,
&dwFileSystemFlags,
szFileSystemNameBuffer,
BUFSIZE
))
{
dwLastError = GetLastError();
if(dwLastError == )
{
printf("设备未就绪,请放入光盘!\n");
return ;
}
else
{
printf("GetVolumeInformation 错误 %d\n",dwLastError);
return ;
}
}
printf ("光盘已经放入,文件系统类别 %s。\n",szFileSystemNameBuffer);
return ;
}
[WinAPI] API 7 [判断光驱内是否有光盘]的更多相关文章
- api.connectionType 判断当前网络技术经验
使用 api.connectionType 判断当前网络的时候,需要注意,要加入大小写转换,三星返回的网络是大写 3G /** * 返回当前是否联网 * 周枫 * 3g 4g wifi none * ...
- 如何判断微信内置浏览器(通过User Agent实现)
在进行微信公众账号开发的时候,其中很大一块是微站点的开发,我们需要知道当前的浏览器是微信内置的浏览器,那么如何判断呢? 微信内置浏览器的 User Agent 如何判断微信内置浏览器,首先需要获取微信 ...
- 如何判断微信内置浏览器(JS & PHP)
转自:http://blog.wpjam.com/m/is_weixin/ 为什么要进行判断呢?answer:微信授权登录,微信支付都可以 微信内置浏览器的 User Agent 如何判断微信内置浏览 ...
- VBA小功能集合-判断列内是否有重复值
1.判断列内是否有重复值: Dim arrT As Range Dim rng As Range Set arrT = Range("A:A")'判读A列单元格 For Each ...
- Vue基础(环境配置、内部指令、全局API、选项、内置组件)
1.环境配置 安装VsCode 安装包管理工具:直接下载 NodeJS 进行安装即可,NodeJS自带 Npm 包管理工具,下载地址:https://nodejs.org/en/download/安装 ...
- python 判断文件是否存在和删除文件的api (其中判断文件在不在让想起这个可以强兼容jenkins工作目录那个问题)
判断文件在不在的api: os即operating system(操作系统),Python 的 os 模块封装了常见的文件和目录操作. os.path模块主要用于文件的属性获取,exists是“存在” ...
- [WinAPI] API 14 [获取、设置文件属性和时间]
>_< 为了获取文件属性,用户可以使用GetFileAttributes与GetFileAttributesEx函数. GetFileAttributesEx函数除了返回文件属性外,还返回 ...
- [WinAPI] API 13 [遍历指定目录 打印文件和其他属性]
Windows API中,有一组专门的函数和结构,用于遍历目录,它们是FindFirstFile函数.FindNextFile函数和WIN32_FIND_DATA结构.使用FindFirstFile和 ...
- [WinAPI] API 12 [获取程序所在的目录、程序模块路径,获取和设置当前目录]
Windows系统提供一组API实现对程序运行时相关目录的获取和设置.用户可以使用GetCurrentDirectory和SetCurrentDirectory获取程序的当前目录,获取模块的路径使用G ...
随机推荐
- unity3d 射弹基础案例
小白本来想学cocos2dx的,然而c++难学就算了,cocos2dx对新手来说简直坑爹,于是乎转战unity3d学习js,在写出第一个游戏后兴致高多了哎. 回顾一下编辑的过程:1.建立一个cube作 ...
- Unsupported major.minor version
by: java.lang.UnsupportedClassVersionError: com/dayang/product/pubinfo/dao/ProPubInfoDAO : Unsupport ...
- C++ MFC获取软件运行目录 (包含软件名)
TCHAR *path = new TCHAR[MAX_PATH]; GetModuleFileName(NULL,path,MAX_PATH); AfxMessageBox(path);
- [转载] Genymotion 解决虚拟镜像下载速度特别慢的问题
本文转载自: http://blog.csdn.net/qing666888/article/details/51622762 Genymotion号称Android模拟器中运行最快的,但是服务器在国 ...
- 在Windows上运行Tomcat
一.下载jdk 百度搜索jdk 64位 下载,直接就有链接.或者官网下载 二.下载tomcat http://tomcat.apache.org/ 三.安装jdk并配置环境 安装jdk后进入控制面板- ...
- 前端---HTML
HTML基础 本章内容: 简介 HTML定义 标签定义和属性 HTML5基本结构 HTML5字符集 <head>标签 <title> <base/> <lin ...
- MVC5+EF6 简易版CMS(非接口) 第三章:数据存储和业务处理
目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...
- 按enter执行click或者搜索问题
最近需要将按按钮搜索的功能,改为支持按enter回车键,搜索. 实现按enter,执行click事件还是比较简单的. //按回车搜索用户 $(window).keydown(function (eve ...
- Vi Command 【转载】
原文: http://www.cnblogs.com/Jesenwuzj/archive/2010/03/18/1688776.html Vi中文手册 1.vi的基本概念 基本上vi可以分为三种状态, ...
- 关于使用tracert命令检测网络问题
tracert命令是一个电脑网络工具-Windows命令行界面程序和内建命令,运行该命令后可以显示本机IP到达目标IP所经过的路由器IP地址,和响应的延迟信息! 在windows操作系统中,点击“开始 ...