deviceiocontrol 如何获取光盘信息?

loda1316 2012-04-18 03:50:49
deviceiocontrol 如何获取光盘信息
...全文
174 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
loda1316 2012-04-18
  • 打赏
  • 举报
回复
好的 谢谢!
xiaxueying 2012-04-18
  • 打赏
  • 举报
回复
//指向光盘
HANDLE OpenDisk()
{
HANDLE hDisk;

// 打开设备
hDisk = ::CreateFile("\\\\.\\CDROM0", // 文件名
GENERIC_READ | GENERIC_WRITE, // 读写方式
FILE_SHARE_READ | FILE_SHARE_WRITE, // 共享方式
NULL, // 默认的安全描述符
OPEN_EXISTING, // 创建方式
0, // 不需设置文件属性
NULL); // 不需参照模板文件

return hDisk;
}

//光盘分区信息
BOOL GetDiskPassion(HANDLE hDisk, PARTITION_INFORMATION &partitionInfo)
{
DWORD dwOutBytes;
BOOL bResult;
bResult = ::DeviceIoControl(hDisk,
IOCTL_DISK_GET_PARTITION_INFO,
NULL,
0,
&partitionInfo,
sizeof(PARTITION_INFORMATION),
&dwOutBytes,
NULL);
return bResult;
}
//获取光盘柱数,扇区、轨道
BOOL GetDiskGeometry(HANDLE hDisk, DISK_GEOMETRY *lpGeometry)
{
DWORD dwOutBytes;
BOOL bResult;

// 用IOCTL_DISK_GET_DRIVE_GEOMETRY取磁盘参数
bResult = ::DeviceIoControl(hDisk, // 设备句柄
IOCTL_DISK_GET_DRIVE_GEOMETRY, // 取磁盘参数
NULL, 0, // 不需要输入数据
lpGeometry, sizeof(*lpGeometry), // 输出数据缓冲区
&dwOutBytes, // 输出数据长度
(LPOVERLAPPED)NULL); // 用同步I/O

return bResult;
}
DISK_GEOMETRY PARTITION_INFORMATION这两个结构体可以到msdn中查找

2,643

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧