Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Retreive Hard Disk Interface Type

Retreive Hard Disk Interface Type

Scheduled Pinned Locked Moved C / C++ / MFC
c++tutorial
2 Posts 2 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    Abinash Mohanty
    wrote on last edited by
    #1

    Hi All, Can anybody tell me how to retreive hard disk interface type without using WMI classes in MFC.WMI classes is not working with all PCs. Thanks

    L 1 Reply Last reply
    0
    • A Abinash Mohanty

      Hi All, Can anybody tell me how to retreive hard disk interface type without using WMI classes in MFC.WMI classes is not working with all PCs. Thanks

      L Offline
      L Offline
      Lost User
      wrote on last edited by
      #2

      Abinash Mohanty wrote:

      Can anybody tell me how to retreive hard disk interface type without using WMI classes in MFC

      Hi Abinash, The MFC classes[^] are a very small subset of the Microsoft Windows API. The answer to your question is that MFC does not have any methods of determining a drive volume bus type. But you can use the IOCTL_STORAGE_QUERY_PROPERTY[^] control code to obtain the STORAGE_BUS_TYPE[^]. Here is an example:#include <winioctl.h> #define IOCTL_STORAGE_QUERY_PROPERTY CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS) STORAGE_BUS_TYPE GetDriveBusType(DWORD dwDrive) { STORAGE_BUS_TYPE sbt = BusTypeUnknown; HANDLE hDrive; TCHAR szDrive[MAX_PATH]; _stprintf(szDrive,_T("\\\\.\\PhysicalDrive%d"), dwDrive); hDrive = CreateFile(szDrive,GENERIC_READ | GENERIC_WRITE,FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,NULL, OPEN_EXISTING, 0, NULL); if(INVALID_HANDLE_VALUE != hDrive) { DWORD dwSizeBytes; STORAGE_PROPERTY_QUERY q; ZeroMemory(&q,sizeof(STORAGE_PROPERTY_QUERY)); PBYTE pBuf = (PBYTE)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(STORAGE_DESCRIPTOR_HEADER)); if(NULL != pBuf) { if(TRUE == DeviceIoControl(hDrive,IOCTL_STORAGE_QUERY_PROPERTY,&q,sizeof(STORAGE_PROPERTY_QUERY),pBuf,sizeof(STORAGE_DESCRIPTOR_HEADER),&dwSizeBytes, NULL)) { STORAGE_DESCRIPTOR_HEADER *pHeader = (STORAGE_DESCRIPTOR_HEADER *)pBuf; dwSizeBytes = pHeader->Size; pBuf = (PBYTE)HeapReAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,pBuf,dwSizeBytes); if(NULL != pBuf) { if(TRUE == DeviceIoControl(hDrive,IOCTL_STORAGE_QUERY_PROPERTY,&q,sizeof(STORAGE_PROPERTY_QUERY),pBuf,dwSizeBytes,&dwSizeBytes, NULL)) { STORAGE_DEVICE_DESCRIPTOR * pDesc = (STORAGE_DEVICE_DESCRIPTOR *)pBuf; sbt = pDesc->BusType; } } } HeapFree(GetProcessHeap(), 0, (LPVOID)pBuf); } } return sbt; }
      Best Wis

      1 Reply Last reply
      0
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • World
      • Users
      • Groups