function TWMIPhysicalDriveListGetter.IsHarddrive(const MediaType: String): Boolean; begin //Refer https://msdn.microsoft.com/en-us/library/aa394132%28v=vs.85%29.aspx result := Pos('hard', LowerCase(MediaType)) >= 0; end; function TWMIPhysicalDriveListGetter.IsDriveConnectedByKnownInterface: Boolean; begin result := IsDriveConnectedBy('IDE') or IsDriveConnectedBy('SCSI') or IsDriveConnectedBy('USB'); end; procedure TWMIPhysicalDriveListGetter.IfDriveConnectedByKnownInterfaceAddToList; begin if IsDriveConnectedByKnownInterface then AddDriveToDeviceIDList; end; procedure TWMIPhysicalDriveListGetter.CheckMediaTypeAndAddIfRequirementMet; begin if IsHarddrive(CurrentDrive.MediaType) then IfDriveConnectedByKnownInterfaceAddToList; end;