能够区分光驱的类型么?比如CDROM、DVD还是CD-RW
http://www.jubao163.com/it/bianchengwendang/2007-06-17/14948.shtml
typedef struct _SCSI_PASS_THROUGH
{
USHORT Length;
UCHAR ScsiStatus;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR CdbLength;
UCHAR SenseInfoLength;
UCHAR DataIn;
ULONG DataTransferLength;
ULONG TimeOutValue;
ULONG_PTR DataBufferOffset;
ULONG SenseInfoOffset;
UCHAR Cdb[ ];
} SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH; typedef struct _SCSI_PASS_THROUGH_WITH_BUFFERS
{
SCSI_PASS_THROUGH Spt;
ULONG Filler;
UCHAR SenseBuf[ ];
UCHAR DataBuf[ ];
} SCSI_PASS_THROUGH_WITH_BUFFERS, *PSCSI_PASS_THROUGH_WITH_BUFFERS; // 判断设备是否可写
// 返回该设备是否可写
BOOL CanWrite( HANDLE hDevice ) // hDevice(设备句柄)
{
SCSI_PASS_THROUGH_WITH_BUFFERS sptwb;
UCHAR CDReader, CDwriter, DVDReader, DVDwriter;
ULONG returned = ; ZeroMemory( &sptwb, sizeof(SCSI_PASS_THROUGH_WITH_BUFFERS) ); sptwb.Spt.Length = sizeof(SCSI_PASS_THROUGH);
sptwb.Spt.PathId = ;
sptwb.Spt.TargetId = ;
sptwb.Spt.Lun = ;
sptwb.Spt.CdbLength = ;
sptwb.Spt.SenseInfoLength = ;
sptwb.Spt.DataIn = ;
sptwb.Spt.DataTransferLength = ;
sptwb.Spt.TimeOutValue = ;
sptwb.Spt.DataBufferOffset = offsetof( SCSI_PASS_THROUGH_WITH_BUFFERS,
DataBuf );
sptwb.Spt.SenseInfoOffset = offsetof( SCSI_PASS_THROUGH_WITH_BUFFERS,
SenseBuf );
sptwb.Spt.Cdb[ ] = 0x1A;
sptwb.Spt.Cdb[ ] = 0x08;
sptwb.Spt.Cdb[ ] = 0x2A;
sptwb.Spt.Cdb[ ] = ; ULONG length = offsetof( SCSI_PASS_THROUGH_WITH_BUFFERS, DataBuf )
+ sptwb.Spt.DataTransferLength; BOOL status = DeviceIoControl( hDevice, IOCTL_SCSI_PASS_THROUGH, &sptwb,
sizeof(SCSI_PASS_THROUGH), &sptwb, length, &returned, FALSE ); if ( !status )
{
return false;
} if ( sptwb.Spt.ScsiStatus )
{
return false;
}
else
{
if ( CDwriter = ( ( sptwb.DataBuf[ ] & 0x01 )
|| ( sptwb.DataBuf[ ] & 0x02 ) ) )
{
return true;
}
if ( DVDwriter = ( ( sptwb.DataBuf[ ] & 0x10 )
|| ( sptwb.DataBuf[ ] & 0x20 ) ) )
{
return true;
}
}
return false; }
能够区分光驱的类型么?比如CDROM、DVD还是CD-RW的更多相关文章
- vmware安装win7*64位时,安装不成功的关键点是光驱接口类型选择为IDE模式
mware 安装win7*64时,找不到光盘,后来在xin7*64的虚拟机下的编辑虚拟机设置 找到光驱,点击高级,并选择IDE即可,这样就可以进入虚拟机找到光驱和硬盘到了.进入winpe后可以看到各种 ...
- springmvc全局异常处理ControllerAdvice区分返回响应类型是页面还是JSON
思路: 加一个拦截器,在preHandler中取得HandlerMethod,判断其方法的返回类型,以及方法的注解和类的注解. 如果返回是json,收到异常则返回默认的异常包装类型. 如果返回是页面, ...
- iOS中使用 Reachability 检测网络区分手机网络类型 WiFi 和2 3 4 G
如果你想在iOS程序中提供一仅在wifi网络下使用(Reeder),或者在没有网络状态下提供离线模式(Evernote).那么你会使用到Reachability来实现网络检测. 写本文的目的 了解Re ...
- Linux-vmware tools安装与cdrom挂载
前述 昨天想直接复制虚拟机centos系统中命令行的内容到主机的txt文档上进行保存,发现不能实现虚拟机与主机之间的直接通讯,后来查资料发现原来是由于我的虚拟机没有安装vwmare tools的缘故. ...
- Linux-vmware tools安装与cdrom挂载(转)
昨天想直接复制虚拟机centos系统中命令行的内容到主机的txt文档上进行保存,发现不能实现虚拟机与主机之间的直接通讯,后来查资料发现原来是由于我的虚拟机没有安装vwmare tools的缘故. 一个 ...
- inux读取ISO文件或是光驱的方法--挂载
inux读取ISO文件或是光驱的方法--挂载 首先在虚拟机选项的设置里设置CD/DVD选项,勾选:Connect at power on 再在连接中选择:Use ISO image file即选择镜像 ...
- linux文件系统的类型
文件系统的类型 兄弟连介绍-Linux有四种基本文件系统类型:普通文件.目录文件.连接文件和特殊文件,可用file命令来识别. 普通文件:如文本文件.C语言元代码.SHELL脚本.二进制的可执行文件等 ...
- .NET基础拾遗(1)类型语法基础和内存管理基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...
- 廖雪峰js教程笔记7 基本类型和包装类型
在JavaScript的世界里,一切都是对象. 但是某些对象还是和其他对象不太一样.为了区分对象的类型,我们用typeof操作符获取对象的类型,它总是返回一个字符串: typeof 123; // ' ...
随机推荐
- python面向对象(五)之多态
继承 在讲多态之前我们再复习下继承,下面是一个例子. Circle 和 Rectangle 继承自 Shape,不同的图形,面积(area)计算方式不同. # shape.py class S ...
- 回归模型效果评估系列3-R平方
决定系数(coefficient of determination,R2)是反映模型拟合优度的重要的统计量,为回归平方和与总平方和之比.R2取值在0到1之间,且无单位,其数值大小反映了回归贡献的相对程 ...
- elasticsearch文档学习
1.集群 节点(一个elasticsearch实体) 索引 主节点 :集群级别变更,新增或移除节点,索引: 主节点不参与文档级别搜索和变更. 分片(shard):一个完整的搜索引擎,lucene ...
- 利用sys.dm_db_index_physical_stats查看索引大小/碎片等信息
我们都知道,提高sql server的数据查询速度,最有效的方法,就是为表创建索引,而我们对数据表进行新增,删除,修改的时候,会产生索引碎片,索引碎片多了,对性能产生很大的影响,索引碎片越多对数据库查 ...
- 打印数据的字节(十六进制)表示-c语言代码
先取数据地址,转换成单字节长度的类型(unsigned char)的指针,然后按照十六进制逐字节打印即可,格式为“%.2x”. sizeof()函数获取数据的字节数. /* $begin show-b ...
- pytest mark中的skip,skipif, xfail
这些测试的过滤,或是对返回值的二重判断, 可以让测试过程更精准,测试结果更可控, 并可以更高层的应用测试脚本来保持批量化执行. import pytest import tasks from task ...
- Elastic-Job开发指南
开发指南 代码开发 作业类型 目前提供3种作业类型,分别是Simple,DataFlow和Script. DataFlow类型用于处理数据流,它又提供2种作业类型,分别是ThroughputDataF ...
- 用html5实现的flappy-bird
可能网上早就有几个flappy-bird的html5版本啦,到这个时候flappy-bird可能也没有之前那么火了,但是作为一个新手,自己思考,自己动手写一个flappy-bird的demo还是很有成 ...
- 20172301 《Java软件结构与数据结构》实验一报告
20172301 <Java软件结构与数据结构>实验一报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...
- volatile 和锁的内存语义
一.volatile 的内存语义 1. volatile 的特性 volatile变量自身具有以下特性: 可见性 :对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最后 ...