[MOUNTMGR] Fix interpretation of QueryDeviceInformation GptDriveLetter
authorPierre Schweitzer <pierre@reactos.org>
Sat, 19 Oct 2019 14:53:45 +0000 (16:53 +0200)
committerPierre Schweitzer <pierre@reactos.org>
Sat, 19 Oct 2019 14:59:58 +0000 (16:59 +0200)
Being TRUE doesn't mean the device is GPT and has a drive letter. It just
means that it's not a GPT device with GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER
attribute. In short, if TRUE, it means that the device can receive a drive
letter mount point.

This fixes MountMgrNextDriveLetterWorker bailing out for any attempt to
assign a drive letter to a device.

drivers/filters/mountmgr/device.c

index 4f3f9d2..ec9a04d 100644 (file)
@@ -524,11 +524,12 @@ MountMgrNextDriveLetterWorker(IN PDEVICE_EXTENSION DeviceExtension,
     }
 
     /* If we didn't find a drive letter online
-     * ensure there's no GPT drive letter nor no drive entry
+     * ensure this is not a no drive entry
+    * by querying GPT attributes & database
      */
     if (NextEntry == &(DeviceInformation->SymbolicLinksListHead))
     {
-        if (GptDriveLetter || HasNoDriveLetterEntry(DeviceInformation->UniqueId))
+        if (!GptDriveLetter || HasNoDriveLetterEntry(DeviceInformation->UniqueId))
         {
             DriveLetterInfo->DriveLetterWasAssigned = FALSE;
             DriveLetterInfo->CurrentDriveLetter = 0;