读书人

怎么获取硬盘的型号

发布时间: 2013-10-07 19:41:22 作者: rapoo

如何获取硬盘的型号
怎么获取硬盘的型号
像这种型号,怎么获取的,求帮忙
[解决办法]
char buffer[10000] ={'\0'};
STORAGE_PROPERTY_QUERY Query; // 查询输入参数
DWORD dwOutBytes; // IOCTL输出数据长度
BOOL bResult; // IOCTL返回值
// 指定查询方式
Query.PropertyId = StorageDeviceProperty;
Query.QueryType = PropertyStandardQuery;
// 用IOCTL_STORAGE_QUERY_PROPERTY取设备属性信息
bResult = ::DeviceIoControl(hDevice, // 设备句柄
IOCTL_STORAGE_QUERY_PROPERTY, // 取设备属性信息
&Query, sizeof(STORAGE_PROPERTY_QUERY), // 输入数据缓冲区
buffer, 10000, // 输出数据缓冲区
&dwOutBytes, // 输出数据长度
(LPOVERLAPPED)NULL); // 用同步I/O
if(!bResult) return FALSE;
STORAGE_DEVICE_DESCRIPTOR* pDevDesc= (STORAGE_DEVICE_DESCRIPTOR*)buffer;
diskinfo.SerialNumber = (char*)&buffer[pDevDesc->SerialNumberOffset];
diskinfo.ProductId = (char*)&buffer[pDevDesc->ProductIdOffset];
diskinfo.ProductRevision = (char*)&buffer[pDevDesc->ProductRevisionOffset];
diskinfo.VendorId = (char*)&buffer[pDevDesc->VendorIdOffset];
STORAGE_BUS_TYPE type = pDevDesc->BusType;
switch(type)
{
case BusTypeUnknown :
diskinfo.BusType = GetMacro(BusTypeUnknown);
break;
case BusTypeScsi:
diskinfo.BusType = GetMacro(BusTypeScsi);
break;
case BusTypeAtapi:
diskinfo.BusType = GetMacro(BusTypeAtapi);
break;
case BusTypeAta:
diskinfo.BusType = GetMacro(BusTypeAta);
break;
case BusType1394:
diskinfo.BusType = GetMacro(BusType1394);
break;
case BusTypeSsa:
diskinfo.BusType = GetMacro(BusTypeSsa);
break;
case BusTypeUsb:
diskinfo.BusType = GetMacro(BusTypeUsb);
break;
case BusTypeFibre:
diskinfo.BusType = GetMacro(BusTypeFibre);
break;
case BusTypeRAID:
diskinfo.BusType = GetMacro(BusTypeRAID);
break;
case BusTypeiScsi:
diskinfo.BusType = GetMacro(BusTypeiScsi);


break;
case BusTypeSas:
diskinfo.BusType = GetMacro(BusTypeSas);
break;
case BusTypeSata:
diskinfo.BusType = GetMacro(BusTypeSata);
break;
case BusTypeSd:
diskinfo.BusType = GetMacro(BusTypeSd);
break;
case BusTypeMmc:
diskinfo.BusType = GetMacro(BusTypeMmc);
break;
case BusTypeMax:
diskinfo.BusType = GetMacro(BusTypeMax);
break;
case BusTypeMaxReserved:
diskinfo.BusType = GetMacro(BusTypeMaxReserved);
break;
}
diskinfo.BusType = diskinfo.BusType.right(diskinfo.BusType.size()-7);
[解决办法]
google下!有api可以直接调用的!

读书人网 >C++

热点推荐