Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Special Interest Groups
  3. C++ Gurus
  4. print function char FirstDriveFromMask( ULONG unitmask ) with qDebug()

print function char FirstDriveFromMask( ULONG unitmask ) with qDebug()

Scheduled Pinned Locked Moved Unsolved C++ Gurus
2 Posts 2 Posters 837 Views
  • 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.
  • F Offline
    F Offline
    filipdns
    wrote on last edited by
    #1

    trying to make project in QT, I need to detect any new usb device and return the letter in my main.cpp.

    I found this with google and it should work but I don't know how to have a print of the driver letter in my main.cpp with simple qDebug() by calling the function char FirstDriveFromMask(ULONG unitmask).

    Could you help me?

    void Main_OnDeviceChange( HWND hwnd, WPARAM wParam, LPARAM lParam )
     {
      PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam;
      TCHAR szMsg[80];
    
      switch(wParam )
       {
        case DBT_DEVICEARRIVAL:
          // Check whether a CD or DVD was inserted into a drive.
          if (lpdb -> dbch_devicetype == DBT_DEVTYP_VOLUME)
           {
            PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
    
            if (lpdbv -> dbcv_flags & DBTF_MEDIA)
             {
              StringCchPrintf( szMsg, sizeof(szMsg)/sizeof(szMsg[0]),
                               TEXT("Drive %c: Media has arrived.\n"),
                               FirstDriveFromMask(lpdbv ->dbcv_unitmask) );
    
              MessageBox( hwnd, szMsg, TEXT("WM_DEVICECHANGE"), MB_OK );
             }
           }
          break;
    
        case DBT_DEVICEREMOVECOMPLETE:
          // Check whether a CD or DVD was removed from a drive.
          if (lpdb -> dbch_devicetype == DBT_DEVTYP_VOLUME)
           {
            PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
    
            if (lpdbv -> dbcv_flags & DBTF_MEDIA)
             {
              StringCchPrintf( szMsg, sizeof(szMsg)/sizeof(szMsg[0]),
                               TEXT("Drive %c: Media was removed.\n" ),
                               FirstDriveFromMask(lpdbv ->dbcv_unitmask) );
    
              MessageBox( hwnd, szMsg, TEXT("WM_DEVICECHANGE" ), MB_OK );
             }
           }
          break;
    
        default:
          /*
            Process other WM_DEVICECHANGE notifications for other
            devices or reasons.
          */
          ;
       }
    }
    
    /*------------------------------------------------------------------
       FirstDriveFromMask( unitmask )
    
       Description
         Finds the first valid drive letter from a mask of drive letters.
         The mask must be in the format bit 0 = A, bit 1 = B, bit 2 = C,
         and so on. A valid drive letter is defined when the
         corresponding bit is set to 1.
    
       Returns the first drive letter that was found.
    --------------------------------------------------------------------*/
    
    char FirstDriveFromMask( ULONG unitmask )
     {
      char i;
    
      for (i = 0; i < 26; ++i)
       {
        if (unitmask & 0x1)
          break;
        unitmask = unitmask >> 1;
       }
    
      return( i + 'A' );
    }
    
    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #2

      Hi,

      Not a direct answer but did you consider KDE’s Solid framework for that ?

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved