如何判断操作系统所在磁盘
来源:互联网 发布:淘宝上的点痣笔有用吗 编辑:程序博客网 时间:2024/04/30 10:50
1:首先找到系统所在分区 ,使用函数为
UINT GetWindowsDirectory(
LPTSTR lpBuffer, // address of buffer for Windows directory
UINT uSize // size of directory buffer
);
获取哪一个分区是系统分区。
2:根据分区获取该分区对应的物理磁盘
HANDLE hDevice;
DWORD bytesReturned;
char rawDiskName[] = "////.//C:";//假定是c分区
hDevice = CreateFile(rawDiskName, GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
if (hDevice == INVALID_HANDLE_VALUE) return FALSE;
STORAGE_DEVICE_NUMBER deviceInfo;
BOOL retcode=DeviceIoControl(hDevice,
IOCTL_STORAGE_GET_DEVICE_NUMBER,
NULL,
0,
&deviceInfo,
sizeof(deviceInfo),
&bytesReturned,
NULL);
if(retcode==FALSE)
{
CloseHandle(hDevice);
return FALSE;
}
*diskNumberPtr = deviceInfo.DeviceNumber;
第二种方法:
例如: F:是光驱,如果获取该光驱是连在IDE0上还是IDE1上?是该IDE的主盘还是从盘?
---------------------------------------------------------------
typedef DWORD DEVICE_TYPE ;
typedef struct _STORAGE_DEVICE_NUMBER {
DEVICE_TYPE DeviceType;
ULONG DeviceNumber;
ULONG PartitionNumber;
} STORAGE_DEVICE_NUMBER, *PSTORAGE_DEVICE_NUMBER;
BOOL GetDiskAndPartitionNumbers (char driveLetter, DWORD *diskNumberPtr,
DWORD *partitionNumberPtr)
{//I found this in a message from "Jacob Lorch", dated September 10, 1999:
HANDLE fileHandle;
STORAGE_DEVICE_NUMBER deviceInfo;
DWORD bytesReturned;
char rawDiskName[] = "////.//C:";
// Open the raw disk
rawDiskName[4] = driveLetter;
fileHandle = CreateFile(rawDiskName, GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
if (fileHandle == INVALID_HANDLE_VALUE) return FALSE;
// Get disk and partition number information using a device control
// request
if (!DeviceIoControl(fileHandle, IOCTL_STORAGE_GET_DEVICE_NUMBER, NULL,
0, &deviceInfo, sizeof(deviceInfo), &bytesReturned,
NULL))
return FALSE;
if (bytesReturned != sizeof(deviceInfo))
return FALSE;
// Put values into the passed pointers
*diskNumberPtr = deviceInfo.DeviceNumber;
*partitionNumberPtr = deviceInfo.PartitionNumber;
char msgbuf[128];
sprintf(msgbuf,"%d %d/n", deviceInfo.DeviceNumber, deviceInfo.PartitionNumber);
OutputDebugString(msgbuf);
// Close the handle to the raw disk and return success
CloseHandle(fileHandle);
return TRUE;
}
- 如何判断操作系统所在磁盘
- 获取操作系统所在的物理磁盘号
- 如何判断你所在企业的企业文化
- javascript:如何判断客户端操作系统
- Linux shell脚本判断输入目录是否存在,并输出目录所在磁盘使用量
- Unix操作系统优势所在
- 获取项目所在磁盘位置
- 如何判断当前操作系统的版本
- 如何判断winme,winxp,win2000等操作系统
- 教你如何判断操作系统的位数
- 如何不用sizeof判断操作系统的位数
- 如何不用sizeof判断操作系统的位数
- 如何在程序中判断操作系统类型
- 如何根据TTL判断主机的操作系统
- Unity3D 判断所在平台
- oracle 查看所在操作系统版本
- 操作系统(磁盘)
- 操作系统__磁盘调度
- Using JQuery's ajax to call webservice and ashx handler in asp.net
- January 23th Friday 2009 (一月 二十三日 金曜日)
- 《the TRUMAN show》 观后感:不寒而栗
- Update整个数据库所有表某字段的值
- 新浪十年路 新浪的触角 新浪成年
- 如何判断操作系统所在磁盘
- 2008奢华品牌网上表现TOP100 2008奢华品牌网上表现分类排行榜—蓝调 2008奢华品牌网上表现分类排行榜—红调
- 【设计模式一】Decorator模式
- 设计模式之六——组合模式
- JNDI(Java 命名和目录接口)(一)
- 过年了,妈妈放假了,可以好多天陪我玩了
- 项目管理的8忌讳与8技巧
- DateTimePicker
- JNDI(Java 命名和目录接口)(二)--JDBC2.0扩展API