获取盘符所在的物理磁盘号和分区号
来源:互联网 发布:windows xp补丁包下载 编辑:程序博客网 时间:2024/05/05 04:47
转载的 ,出处忘记了,不好意思
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;
typedef struct _VOLUME_INFO
{
TCHAR chFlag;
DWORD dwDiskNumber;
DWORD dwPartitionNumber;
}VOLUME_INFO, *PVOLUME_INFO;
BOOL GetVolumeInfo(IN TCHAR chFlag, OUT PVOLUME_INFO pVolumeInfo)
{
pVolumeInfo->chFlag = chFlag; //分区盘符
char szVol[] = { '\\', '\\', '.', '\\', chFlag, ':', 0};
HANDLE hDrv = CreateFile(
szVol,
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);
if (INVALID_HANDLE_VALUE == hDrv)
{
return FALSE;
}
VOLUME_DISK_EXTENTS vde = {0};
DWORD dwBytes = 0;
BOOL bRet = DeviceIoControl(
hDrv,
IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS,
NULL,
0,
&vde,
sizeof(vde),
&dwBytes,
NULL);
if (!bRet)
{
CloseHandle(hDrv);
return FALSE;
}
pVolumeInfo->dwDiskNumber = vde.Extents->DiskNumber; //分区所在硬盘编号,基于0
dwBytes = 0;
PARTITION_INFORMATION pinfo = {0};
bRet = DeviceIoControl(
(HANDLE) hDrv,
IOCTL_DISK_GET_PARTITION_INFO,
NULL,
0,
&pinfo,
sizeof(pinfo),
&dwBytes,
NULL
);
if (!bRet)
{
CloseHandle(hDrv);
return FALSE;
}
pVolumeInfo->dwPartitionNumber = pinfo.PartitionNumber;
CloseHandle(hDrv);
return TRUE;
}
int _tmain(int argc, _TCHAR* argv[])
{
char chFlag = 'C';
VOLUME_INFO pi = {0};
GetVolumeInfo(chFlag, &pi);
printf("DiskNumber is %d, PartitionNumber is %d\n",pi.dwDiskNumber,pi.dwPartitionNumber);
return 0;
}
- 获取盘符所在的物理磁盘号和分区号
- 获取操作系统所在的物理磁盘号
- windows的磁盘操作之四——根据逻辑分区号获得物理磁盘号
- windows的磁盘操作之四——根据逻辑分区号获得物理磁盘号
- windows的磁盘操作之四——根据逻辑分区号获得物理磁盘号
- windows的磁盘操作之四——根据逻辑分区号获得物理磁盘号
- windows的磁盘操作之五——获取物理磁盘上的所有逻辑分区号
- windows的磁盘操作之五——获取物理磁盘上的所有逻辑分区号
- windows的磁盘操作之五——获取物理磁盘上的所有逻辑分区号
- windows的磁盘操作之五——获取物理磁盘上的所有逻辑分区号
- 2014-06-06:IOCTL_STORAGE_GET_DEVICE_NUMBER获取磁盘信息如磁盘号、磁盘类型、分区号
- windows的磁盘操作之六——获取系统所在物理磁盘号
- windows的磁盘操作之六——获取系统所在物理磁盘号
- windows的磁盘操作之六——获取系统所在物理磁盘号
- windows的磁盘操作之六——获取系统所在物理磁盘号
- 使用批处理+WMI获取指定文件或目录所在的物理磁盘信息
- 获取物理磁盘和移动磁盘信息
- 获取物理磁盘物理索引号
- Codeforces 292 div2 D
- PHP程序员的技术成长规划
- iOS 自定义导航栏的返回按钮
- Oracle 保留两位小数解决方案
- EAS融资租赁系统(财务业务一体化)
- 获取盘符所在的物理磁盘号和分区号
- 职场入门还不用pdf转换成txt转换器?
- oracle查看用户、权限和表空间等操作方法
- svn常见问题,报错,命令及总结
- mysql 日期时间处理函数
- SegmentFault D-Day 南京站圆桌——技术与产品的结合
- 工厂方法模式(一):日志记录器的设计
- cmake编译opencv2.2时,出现错误解决方法
- dev_set_drvdata ,SET_NETDEV_DEV