首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么获取硬盘的型号

2013-10-07 
如何获取硬盘的型号像这种型号,怎么获取的,求帮忙[解决办法] char buffer[10000] {\0}STORAGE_PROPERT

如何获取硬盘的型号
怎么获取硬盘的型号
像这种型号,怎么获取的,求帮忙
[解决办法]
 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可以直接调用的!

热点排行