zoukankan      html  css  js  c++  java
  • [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工具结合]

     1 #include <windows.h>
     2 #include <stdio.h>
     3 #include <tchar.h>
     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:\"
    ");
    26         return( -1 );
    27     }
    28 
    29     //判断输入的驱动器是否为CDDVD ROM
    30     if(GetDriveTypeA(argv[1])!=DRIVE_CDROM)
    31     {
    32         printf("驱动器 %s 不是 CD/DVD ROM。
    ",argv[1]);
    33         return( -1 );
    34     }
    35 
    36     //获取卷信息
    37     if (!GetVolumeInformationA(
    38         argv[1], NULL, 0,
    39         NULL,NULL,
    40         &dwFileSystemFlags,
    41         szFileSystemNameBuffer,
    42         BUFSIZE
    43         ))
    44     {
    45         dwLastError = GetLastError();
    46         if(dwLastError == 21)
    47         {
    48             printf("设备未就绪,请放入光盘!
    ");
    49             return 0;
    50         }
    51         else
    52         {
    53             printf("GetVolumeInformation 错误 %d
    ",dwLastError);
    54             return 0;
    55         }
    56     }
    57     printf ("光盘已经放入,文件系统类别 %s。
    ",szFileSystemNameBuffer);
    58     return 0;
    59 }
  • 相关阅读:
    第三天
    第二天
    第一天
    构建之法阅读笔记06
    返回一个一维整数数组中最大子数组的和2
    团队介绍
    软件工程结对作业02
    返回一个整数数组中最大子数组的和
    构建之法阅读笔记05
    暑假周总结二7.22
  • 原文地址:https://www.cnblogs.com/zjutlitao/p/3585591.html
Copyright © 2011-2022 走看看