Index: src/ch/TLocalFilesystem.cpp
===================================================================
diff -u -r4be0f47d68a1a161529dc55901659b9daec996e3 -r8a7d1f41ad744b7dbe25e5cee2a99a2300eb2b5c
--- src/ch/TLocalFilesystem.cpp	(.../TLocalFilesystem.cpp)	(revision 4be0f47d68a1a161529dc55901659b9daec996e3)
+++ src/ch/TLocalFilesystem.cpp	(.../TLocalFilesystem.cpp)	(revision 8a7d1f41ad744b7dbe25e5cee2a99a2300eb2b5c)
@@ -222,7 +222,13 @@
 			DWORD dwFirstPhysicalDisk = GetPhysicalDiskNumber(wchFirstDrive);
 			DWORD dwSecondPhysicalDisk = GetPhysicalDiskNumber(wchSecondDrive);
 			if(dwFirstPhysicalDisk == std::numeric_limits<DWORD>::max() || dwSecondPhysicalDisk == std::numeric_limits<DWORD>::max())
-				THROW(_T("Problem with physical disk detection"), 0, 0, 0);
+			{
+				// NOTE: disabled throwing an exception here - when testing, it came out that some DRIVE_FIXED
+				//       volumes might have problems handling this detection (TrueCrypt volumes for example).
+				//       So for now we report it as two different physical disks.
+				//THROW(_T("Problem with physical disk detection"), 0, 0, 0);
+				eRelation = eRelation_TwoPhysicalDisks;
+			}
 
 			if(dwFirstPhysicalDisk == dwSecondPhysicalDisk)
 				eRelation = eRelation_SinglePhysicalDisk;
@@ -259,7 +265,11 @@
 	DWORD dwBytesReturned = 0;
 	BOOL bResult = DeviceIoControl(hDevice, IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS, NULL, 0, pVolumeDiskExtents, stSize, &dwBytesReturned, NULL);
 	if(!bResult)
+	{
+		// NOTE: when ERROR_INVALID_FUNCTION is reported here, it probably means that underlying volume
+		//       cannot support IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS properly (such case includes TrueCrypt volumes)
 		return std::numeric_limits<DWORD>::max();
+	}
 
 	CloseHandle(hDevice);