判断光驱中是否有光盘,仍然可以使用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 [判断光驱内是否有光盘]的更多相关文章

  1. api.connectionType 判断当前网络技术经验

    使用  api.connectionType 判断当前网络的时候,需要注意,要加入大小写转换,三星返回的网络是大写 3G /** * 返回当前是否联网 * 周枫 * 3g 4g wifi none * ...

  2. 如何判断微信内置浏览器(通过User Agent实现)

    在进行微信公众账号开发的时候,其中很大一块是微站点的开发,我们需要知道当前的浏览器是微信内置的浏览器,那么如何判断呢? 微信内置浏览器的 User Agent 如何判断微信内置浏览器,首先需要获取微信 ...

  3. 如何判断微信内置浏览器(JS & PHP)

    转自:http://blog.wpjam.com/m/is_weixin/ 为什么要进行判断呢?answer:微信授权登录,微信支付都可以 微信内置浏览器的 User Agent 如何判断微信内置浏览 ...

  4. VBA小功能集合-判断列内是否有重复值

    1.判断列内是否有重复值: Dim arrT As Range Dim rng As Range Set arrT = Range("A:A")'判读A列单元格 For Each ...

  5. Vue基础(环境配置、内部指令、全局API、选项、内置组件)

    1.环境配置 安装VsCode 安装包管理工具:直接下载 NodeJS 进行安装即可,NodeJS自带 Npm 包管理工具,下载地址:https://nodejs.org/en/download/安装 ...

  6. python 判断文件是否存在和删除文件的api (其中判断文件在不在让想起这个可以强兼容jenkins工作目录那个问题)

    判断文件在不在的api: os即operating system(操作系统),Python 的 os 模块封装了常见的文件和目录操作. os.path模块主要用于文件的属性获取,exists是“存在” ...

  7. [WinAPI] API 14 [获取、设置文件属性和时间]

    >_< 为了获取文件属性,用户可以使用GetFileAttributes与GetFileAttributesEx函数. GetFileAttributesEx函数除了返回文件属性外,还返回 ...

  8. [WinAPI] API 13 [遍历指定目录 打印文件和其他属性]

    Windows API中,有一组专门的函数和结构,用于遍历目录,它们是FindFirstFile函数.FindNextFile函数和WIN32_FIND_DATA结构.使用FindFirstFile和 ...

  9. [WinAPI] API 12 [获取程序所在的目录、程序模块路径,获取和设置当前目录]

    Windows系统提供一组API实现对程序运行时相关目录的获取和设置.用户可以使用GetCurrentDirectory和SetCurrentDirectory获取程序的当前目录,获取模块的路径使用G ...

随机推荐

  1. js数组合并

    // 第一种 var mergeTo = [4,5,6], mergeFrom = [7,8,9]; mergeTo = mergeTo.concat(mergeFrom); mergeTo; // ...

  2. 为窗体设置背景图片-UI界面编辑器(SkinStudio)教程

    1.1.   为窗体设置背景图片 在窗体的Background属性中选择图片设置为窗体背景图片

  3. 精通 Angular JS 第一天——Angular 之禅

    简介 Angular JS是采用JavaScript语言编写的客户端MVC框架,它为业界带了重大的变化,包括对模板化的创新实现,以及数据的双向绑定,这些特性使得它强大而易用.它可以用来帮助开发者编写单 ...

  4. C++ #include .h extern 的相关关系及说明

    函数和变量都有声明和定义两个写法.声明的目的是告诉别的代码这个变量的名称,而定义比声明多了一个功能,除了告知名称以外,还会为这个变量分配内存.对于函数来说,加不加extern都没有关系,因为有函数体一 ...

  5. jqeury datatable

    1.自定义列信息    "aoColumnDefs":[                               {                               ...

  6. GBDT(MART) 迭代决策树入门教程 | 简介

    GBDT(MART) 迭代决策树入门教程 | 简介  http://blog.csdn.net/w28971023/article/details/8240756

  7. hibernate学习(设计一对一 关系 映射)

    //主表 package org.crazy.app.domain; import javax.persistence.*; @Entity @Table(name="person_inf& ...

  8. shell中单引号和双引号

    在shell中声明变量后直接使用: #!/bin/bash na=zhagnsan ag=11 echo '$na is $ag years old' 输出:$na is $ag years old ...

  9. JSP如何保存页面上众多的复选状态

    一.描述: 最近写的一个问题管理模块,录入问题时需要选择客户(也就是那些客户存在这些问题),当保存完问题后,再次编辑问题时,如何从数据库里读取上次选中的客户并展示位勾选状态呢?问题表cust_ques ...

  10. ZT 趋势移动安全apk

    趋势移动安全 应用截图   应用简介 趋势移动安全( Mobile Security) 是一款专业的Android移动安全软件.利用趋势科技世界领先的云安全技术,保护用户避免被移动恶意程序骚扰,避免个 ...