基于visual c++之windows核心编程代码分析(7)操作光驱
2016-12-08 21:47
465 查看
我们在进行Windows编程的时候经常需要进行操作光驱,请见代码实现与注释讲解。
[cpp] view
plain copy
/* 头文件 */
#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 != 2 )
{
printf("请输入驱动器的根路径,比如: \"D:\\\"\n");
return( -1 );
}
//判断输入的驱动器是否为CD\DVD ROM
if(GetDriveType(argv[1])!=DRIVE_CDROM)
{
printf("驱动器 %s 不是 CD/DVD ROM。\n",argv[1]);
return( -1 );
}
//获取卷信息
if (!GetVolumeInformation(
argv[1], NULL, 0,
NULL,NULL,
&dwFileSystemFlags,
szFileSystemNameBuffer,
BUFSIZE
))
{
dwLastError = GetLastError();
if(dwLastError == 21)
{
printf("设备未就绪,请放入光盘!\n");
return 0;
}
else
{
printf("GetVolumeInformation 错误 %d\n",dwLastError);
return 0;
}
}
printf ("光盘已经放入,文件系统类别 %s。\n",szFileSystemNameBuffer);
return 0;
}
[cpp] view
plain copy
/* 头文件 */
#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 != 2 )
{
printf("请输入驱动器的根路径,比如: \"D:\\\"\n");
return( -1 );
}
//判断输入的驱动器是否为CD\DVD ROM
if(GetDriveType(argv[1])!=DRIVE_CDROM)
{
printf("驱动器 %s 不是 CD/DVD ROM。\n",argv[1]);
return( -1 );
}
//获取卷信息
if (!GetVolumeInformation(
argv[1], NULL, 0,
NULL,NULL,
&dwFileSystemFlags,
szFileSystemNameBuffer,
BUFSIZE
))
{
dwLastError = GetLastError();
if(dwLastError == 21)
{
printf("设备未就绪,请放入光盘!\n");
return 0;
}
else
{
printf("GetVolumeInformation 错误 %d\n",dwLastError);
return 0;
}
}
printf ("光盘已经放入,文件系统类别 %s。\n",szFileSystemNameBuffer);
return 0;
}
相关文章推荐
- 基于Visual C++之Windows核心编程代码分析(5)操作注册表与系统时间
- 基于Visual C++之Windows核心编程代码分析(5)操作注册表与系统时间
- 基于visual c++之windows核心编程代码分析Mapping File编程
- 基于visual c++之windows核心编程代码分析(22)Mapping File编程
- 基于visual c++之windows核心编程代码分析(36)实践SYN安全隐患监测
- 基于visual c++之windows核心编程代码分析(34)WinIo驱动级模拟按键的实现
- 基于visual c++之windows核心编程代码分析(37)实践信息安全隐患监测-嗅探
- 基于visual c++之windows核心编程代码分析(31)SNMP协议编程
- 基于visual c++之windows核心编程代码分析(23)遍历驱动器并获取驱动器属性
- 基于visual c++之windows核心编程代码分析(31)SNMP协议编程
- 基于visual c++之windows核心编程代码分析(29)ICMP实现远程控制
- 基于visual c++之windows核心编程代码分析(24)IO控制、内核通信
- 基于visual c++之windows核心编程代码分析(28)实现开机自启动
- 基于visual c++之windows核心编程代码分析(26)实现文件关联
- 基于visual c++之windows核心编程代码分析(35)实践NT服务的框架
- 基于visual c++之windows核心编程代码分析(22)Mapping File编程
- 基于visual c++之windows核心编程代码分析(27)保持程序单实例运行
- 基于visual c++之windows核心编程代码分析(35)实践NT服务的框架
- 基于visual c++之windows核心编程代码分析(27)保持程序单实例运行
- 基于visual c++之windows核心编程代码分析(36)实践SYN安全隐患监测