From fc37cc4a02ed13d1a73b941a9f80975600fd1b99 Mon Sep 17 00:00:00 2001 From: David Foerster Date: Tue, 10 May 2016 20:20:14 +0200 Subject: Normalize all line terminators --- src/Common/Dlgcode.h | 1186 +++++++++++++++++++++++++------------------------- 1 file changed, 593 insertions(+), 593 deletions(-) (limited to 'src/Common/Dlgcode.h') diff --git a/src/Common/Dlgcode.h b/src/Common/Dlgcode.h index cf9239e0..dd6eb801 100644 --- a/src/Common/Dlgcode.h +++ b/src/Common/Dlgcode.h @@ -1,593 +1,593 @@ -/* - Legal Notice: Some portions of the source code contained in this file were - derived from the source code of TrueCrypt 7.1a, which is - Copyright (c) 2003-2012 TrueCrypt Developers Association and which is - governed by the TrueCrypt License 3.0, also from the source code of - Encryption for the Masses 2.02a, which is Copyright (c) 1998-2000 Paul Le Roux - and which is governed by the 'License Agreement for Encryption for the Masses' - Modifications and additions to the original source code (contained in this file) - and all other portions of this file are Copyright (c) 2013-2016 IDRIX - and are governed by the Apache License 2.0 the full text of which is - contained in the file License.txt included in VeraCrypt binary and source - code distribution packages. */ - -#ifndef TC_HEADER_DLGCODE -#define TC_HEADER_DLGCODE - -#include "Common.h" -#include "Apidrvr.h" -#include "Keyfiles.h" -#include "Wipe.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* IDs for dynamically generated GUI elements */ -enum dynamic_gui_element_ids -{ - IDPM_CHECK_FILESYS = 500001, - IDPM_REPAIR_FILESYS, - IDPM_OPEN_VOLUME, - IDPM_SELECT_FILE_AND_MOUNT, - IDPM_SELECT_DEVICE_AND_MOUNT, - IDPM_ADD_TO_FAVORITES, - IDPM_ADD_TO_SYSTEM_FAVORITES, - IDM_SHOW_HIDE, - IDM_HOMEPAGE_SYSTRAY, - IDPM_COPY_VALUE_TO_CLIPBOARD -}; - -enum -{ - TC_TBXID_LEGAL_NOTICES, - TC_TBXID_SYS_ENCRYPTION_PRETEST, - TC_TBXID_SYS_ENC_RESCUE_DISK, - TC_TBXID_DECOY_OS_INSTRUCTIONS, - TC_TBXID_EXTRA_BOOT_PARTITION_REMOVAL_INSTRUCTIONS -}; - -#define TC_APPLICATION_ID L"IDRIX.VeraCrypt" - -#define TC_MUTEX_NAME_SYSENC L"Global\\VeraCrypt System Encryption Wizard" -#define TC_MUTEX_NAME_NONSYS_INPLACE_ENC L"Global\\VeraCrypt In-Place Encryption Wizard" -#define TC_MUTEX_NAME_APP_SETUP L"Global\\VeraCrypt Setup" -#define TC_MUTEX_NAME_DRIVER_SETUP L"Global\\VeraCrypt Driver Setup" - -#define IDC_ABOUT 0x7fff /* ID for AboutBox on system menu in wm_user range */ - -#define EXCL_ACCESS_MAX_AUTO_RETRIES 500 -#define EXCL_ACCESS_AUTO_RETRY_DELAY 10 - -#define UNMOUNT_MAX_AUTO_RETRIES 30 -#define UNMOUNT_AUTO_RETRY_DELAY 50 - -// After the user receives the "Incorrect password" error this number of times in a row, we should automatically -// try using the embedded header backup (if any). This ensures that the "Incorrect password" message is reported faster -// initially (most such errors are really caused by supplying an incorrect password, not by header corruption). -#define TC_TRY_HEADER_BAK_AFTER_NBR_WRONG_PWD_TRIES 2 - -#define MAX_MULTI_CHOICES 10 /* Maximum number of options for mutliple-choice dialog */ - -#define TC_APPD_FILENAME_CONFIGURATION L"Configuration.xml" -#define TC_APPD_FILENAME_SYSTEM_ENCRYPTION L"System Encryption.xml" -#define TC_APPD_FILENAME_DEFAULT_KEYFILES L"Default Keyfiles.xml" -#define TC_APPD_FILENAME_HISTORY L"History.xml" -#define TC_APPD_FILENAME_FAVORITE_VOLUMES L"Favorite Volumes.xml" -#define TC_APPD_FILENAME_SYSTEM_FAVORITE_VOLUMES _T(TC_APP_NAME) L" System Favorite Volumes.xml" -#define TC_APPD_FILENAME_NONSYS_INPLACE_ENC L"In-Place Encryption" -#define TC_APPD_FILENAME_NONSYS_INPLACE_ENC_WIPE L"In-Place Encryption Wipe Algo" -#define TC_APPD_FILENAME_POST_INSTALL_TASK_TUTORIAL L"Post-Install Task - Tutorial" -#define TC_APPD_FILENAME_POST_INSTALL_TASK_RELEASE_NOTES L"Post-Install Task - Release Notes" - -#define VC_FILENAME_RENAMED_SUFFIX L"_old" - -#ifndef USER_DEFAULT_SCREEN_DPI -#define USER_DEFAULT_SCREEN_DPI 96 -#endif - -#if (USER_DEFAULT_SCREEN_DPI != 96) -# error Revision of GUI and graphics necessary, since everything assumes default screen DPI as 96 (note that 96 is the default on Windows 2000, XP, and Vista). -#endif - -enum -{ - TC_POST_INSTALL_CFG_REMOVE_ALL = 0, - TC_POST_INSTALL_CFG_TUTORIAL, - TC_POST_INSTALL_CFG_RELEASE_NOTES -}; - -extern char *LastDialogId; -extern char *ConfigBuffer; -extern wchar_t szHelpFile[TC_MAX_PATH]; -extern wchar_t szHelpFile2[TC_MAX_PATH]; -extern wchar_t SecurityTokenLibraryPath[TC_MAX_PATH]; -extern HFONT hFixedDigitFont; -extern HFONT hBoldFont; -extern HFONT hTitleFont; -extern HFONT hFixedFont; -extern HFONT hUserFont; -extern HFONT hUserUnderlineFont; -extern HFONT hUserBoldFont; -extern HFONT WindowTitleBarFont; -extern int ScreenDPI; -extern double DlgAspectRatio; -extern HWND MainDlg; -extern BOOL Silent; -extern BOOL bHistory; -extern BOOL bPreserveTimestamp; -extern BOOL bShowDisconnectedNetworkDrives; -extern BOOL bHideWaitingDialog; -extern BOOL bCmdHideWaitingDialog; -extern BOOL bCmdHideWaitingDialogValid; -extern BOOL bStartOnLogon; -extern BOOL bMountDevicesOnLogon; -extern BOOL bMountFavoritesOnLogon; -extern int HiddenSectorDetectionStatus; -extern wchar_t *lpszTitle; -extern OSVersionEnum nCurrentOS; -extern int CurrentOSMajor; -extern int CurrentOSMinor; -extern int CurrentOSServicePack; -extern BOOL RemoteSession; -extern HANDLE hDriver; -extern HINSTANCE hInst; -extern int SystemEncryptionStatus; -extern WipeAlgorithmId nWipeMode; -extern BOOL bSysPartitionSelected; -extern BOOL bSysDriveSelected; - -extern wchar_t SysPartitionDevicePath [TC_MAX_PATH]; -extern wchar_t SysDriveDevicePath [TC_MAX_PATH]; -extern char bCachedSysDevicePathsValid; - -extern BOOL bHyperLinkBeingTracked; -extern BOOL bInPlaceEncNonSysPending; - -extern BOOL PimEnable; -extern BOOL KeyFilesEnable; -extern KeyFile *FirstKeyFile; -extern KeyFilesDlgParam defaultKeyFilesParam; -extern BOOL UacElevated; -extern BOOL IgnoreWmDeviceChange; -extern BOOL DeviceChangeBroadcastDisabled; -extern BOOL LastMountedVolumeDirty; -extern BOOL MountVolumesAsSystemFavorite; -extern BOOL FavoriteMountOnArrivalInProgress; -extern BOOL MultipleMountOperationInProgress; - - -enum tc_app_msg_ids -{ - /* WARNING: Changing these values or their meanings may cause incompatibility with other versions - (for example, if a new version of the TrueCrypt installer needed to shut down this version of - TrueCrypt during upgrade, it could fail or do something unwanted because the signal value would - be incorrect). When adding a new constant, verify that the value is unique within this block and - that it is less than WM_APP+16383. */ - - // Common (inter-app) - TC_APPMSG_CLOSE_BKG_TASK = WM_APP + 4, // Changing this value will prevent smooth upgrades from pre-5.x versions - TC_APPMSG_SYSENC_CONFIG_UPDATE = WM_APP + 101, - TC_APPMSG_TASKBAR_ICON = WM_APP + 102, - TC_APPMSG_LOAD_TEXT_BOX_CONTENT = WM_APP + 103, - // Mount - TC_APPMSG_MOUNT_ENABLE_DISABLE_CONTROLS = WM_APP + 201, - TC_APPMSG_MOUNT_SHOW_WINDOW = WM_APP + 202, - TC_APPMSG_PREBOOT_PASSWORD_MODE = WM_APP + 203, - // Format - TC_APPMSG_VOL_TRANSFORM_THREAD_ENDED = WM_APP + 301, - TC_APPMSG_FORMAT_FINISHED = WM_APP + 302, - TC_APPMSG_FORMAT_USER_QUIT = WM_APP + 303, - TC_APPMSG_PERFORM_POST_WMINIT_TASKS = WM_APP + 304, - TC_APPMSG_PERFORM_POST_SYSENC_WMINIT_TASKS = WM_APP + 305, - TC_APPMSG_NONSYS_INPLACE_ENC_FINISHED = WM_APP + 306, - // Setup - TC_APPMSG_INSTALL_SUCCESS = WM_APP + 401, - TC_APPMSG_UNINSTALL_SUCCESS = WM_APP + 402, - TC_APPMSG_EXTRACTION_SUCCESS = WM_APP + 403, - TC_APPMSG_INSTALL_FAILURE = WM_APP + 404, - TC_APPMSG_UNINSTALL_FAILURE = WM_APP + 405, - TC_APPMSG_EXTRACTION_FAILURE = WM_APP + 406 -}; - -enum system_encryption_status -{ - /* WARNING: As these values are written to config files, if they or their meanings - are changed, incompatiblity with other versions may arise (upgrade, downgrade, etc.). - When adding a new constant, verify that the value is unique within this block. */ - SYSENC_STATUS_NONE = 0, - SYSENC_STATUS_PRETEST = 200, // This may also mean that the OS is to be (or has been) copied to a hidden volume (to create a hidden OS). - SYSENC_STATUS_ENCRYPTING = 400, - SYSENC_STATUS_DECRYPTING = 600 -}; - -enum vol_creation_wizard_modes -{ - WIZARD_MODE_FILE_CONTAINER = 0, - WIZARD_MODE_NONSYS_DEVICE, - WIZARD_MODE_SYS_DEVICE -}; - - -typedef struct -{ - BOOL VolumeIsOpen; - - CRYPTO_INFO *CryptoInfo; - BOOL IsDevice; - HANDLE HostFileHandle; - uint64 HostSize; - - BOOL TimestampsValid; - FILETIME CreationTime; - FILETIME LastWriteTime; - FILETIME LastAccessTime; - -} OpenVolumeContext; - - -#define DEFAULT_VOL_CREATION_WIZARD_MODE WIZARD_MODE_FILE_CONTAINER - -#define ICON_HAND MB_ICONHAND -#define YES_NO MB_YESNO - -#define ISO_BURNER_TOOL L"isoburn.exe" -#define PRINT_TOOL L"notepad.exe" - -void cleanup ( void ); -void LowerCaseCopy ( wchar_t *lpszDest , const wchar_t *lpszSource ); -void UpperCaseCopy ( wchar_t *lpszDest , size_t cbDest, const wchar_t *lpszSource ); -void CreateFullVolumePath ( wchar_t *lpszDiskFile , size_t cbDiskFile, const wchar_t *lpszFileName , BOOL *bDevice ); -int FakeDosNameForDevice ( const wchar_t *lpszDiskFile , wchar_t *lpszDosDevice , size_t cbDosDevice, wchar_t *lpszCFDevice , size_t cbCFDevice, BOOL bNameOnly ); -int RemoveFakeDosName ( wchar_t *lpszDiskFile , wchar_t *lpszDosDevice ); -void AbortProcessDirect ( wchar_t *abortMsg ); -void AbortProcess ( char *stringId ); -void AbortProcessSilent ( void ); -void *err_malloc ( size_t size ); -char *err_strdup ( char *lpszText ); -DWORD handleWin32Error ( HWND hwndDlg, const char* srcPos ); -BOOL IsDiskReadError (DWORD error); -BOOL IsDiskWriteError (DWORD error); -BOOL IsDiskError (DWORD error); -BOOL translateWin32Error ( wchar_t *lpszMsgBuf , int nWSizeOfBuf ); -BOOL CALLBACK AboutDlgProc ( HWND hwndDlg , UINT msg , WPARAM wParam , LPARAM lParam ); -static BOOL CALLBACK StaticModelessWaitDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); -void DisplayStaticModelessWaitDlg (HWND parent); -void CloseStaticModelessWaitDlg (void); -BOOL IsButtonChecked ( HWND hButton ); -void CheckButton ( HWND hButton ); -void LeftPadString (wchar_t *szTmp, int len, int targetLen, wchar_t filler); -void InitDialog ( HWND hwndDlg ); -void ProcessPaintMessages (HWND hwnd, int maxMessagesToProcess); -HDC CreateMemBitmap ( HINSTANCE hInstance , HWND hwnd , wchar_t *resource ); -HBITMAP RenderBitmap ( wchar_t *resource , HWND hwndDest , int x , int y , int nWidth , int nHeight , BOOL bDirectRender , BOOL bKeepAspectRatio); -LRESULT CALLBACK RedTick ( HWND hwnd , UINT uMsg , WPARAM wParam , LPARAM lParam ); -BOOL RegisterRedTick ( HINSTANCE hInstance ); -BOOL UnregisterRedTick ( HINSTANCE hInstance ); -LRESULT CALLBACK SplashDlgProc ( HWND hwnd , UINT uMsg , WPARAM wParam , LPARAM lParam ); -void WaitCursor ( void ); -void NormalCursor ( void ); -void ArrowWaitCursor ( void ); -void HandCursor (); -void AddComboPair (HWND hComboBox, const wchar_t *lpszItem, int value); -void SelectAlgo ( HWND hComboBox , int *nCipher ); -void PopulateWipeModeCombo (HWND hComboBox, BOOL bNA, BOOL bInPlaceEncryption, BOOL bHeaderWipe); -wchar_t *GetWipeModeName (WipeAlgorithmId modeId); -wchar_t *GetPathType (const wchar_t *path, BOOL bUpperCase, BOOL *bIsPartition); -LRESULT CALLBACK CustomDlgProc ( HWND hwnd , UINT uMsg , WPARAM wParam , LPARAM lParam ); -BOOL TCCreateMutex (volatile HANDLE *hMutex, wchar_t *name); -void TCCloseMutex (volatile HANDLE *hMutex); -BOOL MutexExistsOnSystem (wchar_t *name); -BOOL CreateSysEncMutex (void); -BOOL InstanceHasSysEncMutex (void); -void CloseSysEncMutex (void); -BOOL CreateNonSysInplaceEncMutex (void); -BOOL InstanceHasNonSysInplaceEncMutex (void); -void CloseNonSysInplaceEncMutex (void); -BOOL NonSysInplaceEncInProgressElsewhere (void); -BOOL CreateDriverSetupMutex (void); -void CloseDriverSetupMutex (void); -BOOL CreateAppSetupMutex (void); -BOOL InstanceHasAppSetupMutex (void); -void CloseAppSetupMutex (void); -BOOL IsTrueCryptInstallerRunning (void); -uint32 ReadDriverConfigurationFlags (); -uint32 ReadEncryptionThreadPoolFreeCpuCountLimit (); -BOOL LoadSysEncSettings (); -int LoadNonSysInPlaceEncSettings (WipeAlgorithmId *wipeAlgorithm); -void RemoveNonSysInPlaceEncNotifications (void); -void SavePostInstallTasksSettings (int command); -void DoPostInstallTasks (HWND hwndDlg); -void InitOSVersionInfo (); -void InitApp ( HINSTANCE hInstance, wchar_t *lpszCommandLine ); -void FinalizeApp (void); -void InitHelpFileName (void); -BOOL OpenDevice (const wchar_t *lpszPath, OPEN_TEST_STRUCT *driver, BOOL detectFilesystem, BOOL matchVolumeID, const BYTE* pbVolumeID); -void NotifyDriverOfPortableMode (void); -int GetAvailableFixedDisks ( HWND hComboBox , char *lpszRootPath ); -int GetAvailableRemovables ( HWND hComboBox , char *lpszRootPath ); -int IsSystemDevicePath (const wchar_t *path, HWND hwndDlg, BOOL bReliableRequired); -int IsNonSysPartitionOnSysDrive (const wchar_t *path); -BOOL CALLBACK RawDevicesDlgProc ( HWND hwndDlg , UINT msg , WPARAM wParam , LPARAM lParam ); -INT_PTR TextInfoDialogBox (int nID); -BOOL CALLBACK TextInfoDialogBoxDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); -char * GetLegalNotices (); -BOOL CALLBACK BenchmarkDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); -void UserEnrichRandomPool (HWND hwndDlg); -BOOL CALLBACK KeyfileGeneratorDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); -BOOL CALLBACK MultiChoiceDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); -int DriverAttach ( void ); -BOOL CALLBACK CipherTestDialogProc ( HWND hwndDlg , UINT uMsg , WPARAM wParam , LPARAM lParam ); -void ResetCipherTest ( HWND hwndDlg , int idTestCipher ); -void ResetCurrentDirectory (); -BOOL BrowseFiles (HWND hwndDlg, char *stringId, wchar_t *lpszFileName, BOOL keepHistory, BOOL saveMode, wchar_t *browseFilter); -BOOL BrowseDirectories (HWND hWnd, char *lpszTitle, wchar_t *dirName); -void handleError ( HWND hwndDlg , int code, const char* srcPos ); -BOOL CheckFileStreamWriteErrors (HWND hwndDlg, FILE *file, const wchar_t *fileName); -void LocalizeDialog ( HWND hwnd, char *stringId ); -void OpenVolumeExplorerWindow (int driveNo); -static BOOL CALLBACK CloseVolumeExplorerWindowsEnum( HWND hwnd, LPARAM driveNo); -BOOL CloseVolumeExplorerWindows (HWND hwnd, int driveNo); -BOOL UpdateDriveCustomLabel (int driveNo, wchar_t* effectiveLabel, BOOL bSetValue); -BOOL CheckCapsLock (HWND hwnd, BOOL quiet); -BOOL CheckFileExtension (wchar_t *fileName); -void CorrectFileName (wchar_t* fileName); -void IncreaseWrongPwdRetryCount (int count); -void ResetWrongPwdRetryCount (void); -BOOL WrongPwdRetryCountOverLimit (void); -DWORD GetUsedLogicalDrives (void); -int GetFirstAvailableDrive (); -int GetLastAvailableDrive (); -BOOL IsDriveAvailable (int driveNo); -BOOL IsDeviceMounted (wchar_t *deviceName); -int DriverUnmountVolume (HWND hwndDlg, int nDosDriveNo, BOOL forced); -void BroadcastDeviceChange (WPARAM message, int nDosDriveNo, DWORD driveMap); -int MountVolume (HWND hwndDlg, int driveNo, wchar_t *volumePath, Password *password, int pkcs5, int pim, BOOL truecryptMode, BOOL cachePassword, BOOL cachePim, BOOL sharedAccess, const MountOptions* const mountOptions, BOOL quiet, BOOL bReportWrongPassword); -BOOL UnmountVolume (HWND hwndDlg , int nDosDriveNo, BOOL forceUnmount); -BOOL UnmountVolumeAfterFormatExCall (HWND hwndDlg, int nDosDriveNo); -BOOL IsPasswordCacheEmpty (void); -BOOL IsMountedVolumeID (BYTE volumeID[VOLUME_ID_SIZE]); -BOOL IsMountedVolume (const wchar_t *volname); -int GetMountedVolumeDriveNo (wchar_t *volname); -BOOL IsAdmin (void); -BOOL IsBuiltInAdmin (); -BOOL IsUacSupported (); -BOOL ResolveSymbolicLink (const wchar_t *symLinkName, PWSTR targetName, size_t cbTargetName); -int GetDiskDeviceDriveLetter (PWSTR deviceName); -int FileSystemAppearsEmpty (const wchar_t *devicePath); -__int64 GetStatsFreeSpaceOnPartition (const wchar_t *devicePath, float *percent, __int64 *occupiedBytes, BOOL silent); -__int64 GetDeviceSize (const wchar_t *devicePath); -HANDLE DismountDrive (wchar_t *devName, wchar_t *devicePath); -int64 FindString (const char *buf, const char *str, int64 bufLen, int64 strLen, int64 startOffset); -BOOL FileExists (const wchar_t *filePathPtr); -__int64 FindStringInFile (const wchar_t *filePath, const char *str, int strLen); -BOOL TCCopyFile (wchar_t *sourceFileName, wchar_t *destinationFile); -BOOL SaveBufferToFile (const char *inputBuffer, const wchar_t *destinationFile, DWORD inputLength, BOOL bAppend, BOOL bRenameIfFailed); -BOOL TCFlushFile (FILE *f); -BOOL PrintHardCopyTextUTF16 (wchar_t *text, wchar_t *title, size_t byteLen); -void GetSpeedString (unsigned __int64 speed, wchar_t *str, size_t cbStr); -BOOL IsNonInstallMode (); -BOOL DriverUnload (); -LRESULT SetCheckBox (HWND hwndDlg, int dlgItem, BOOL state); -BOOL GetCheckBox (HWND hwndDlg, int dlgItem); -void SetListScrollHPos (HWND hList, int topMostVisibleItem); -void ManageStartupSeq (void); -void ManageStartupSeqWiz (BOOL bRemove, const wchar_t *arg); -void CleanLastVisitedMRU (void); -void ClearHistory (HWND hwndDlgItem); -LRESULT ListItemAdd (HWND list, int index, const wchar_t *string); -LRESULT ListSubItemSet (HWND list, int index, int subIndex, const wchar_t *string); -BOOL GetMountList (MOUNT_LIST_STRUCT *list); -int GetDriverRefCount (); -void GetSizeString (unsigned __int64 size, wchar_t *str, size_t cbStr); -__int64 GetFileSize64 (const wchar_t *path); -BOOL LoadInt16 (const wchar_t *filePath, int *result, __int64 fileOffset); -BOOL LoadInt32 (const wchar_t *filePath, unsigned __int32 *result, __int64 fileOffset); -char *LoadFile (const wchar_t *fileName, DWORD *size); -char *LoadFileBlock (const wchar_t *fileName, __int64 fileOffset, DWORD count); -wchar_t *GetModPath (wchar_t *path, int maxSize); -wchar_t *GetConfigPath (wchar_t *fileName); -wchar_t *GetProgramConfigPath (wchar_t *fileName); -wchar_t GetSystemDriveLetter (void); -void OpenPageHelp (HWND hwndDlg, int nPage); -void TaskBarIconDisplayBalloonTooltip (HWND hwnd, wchar_t *headline, wchar_t *text, BOOL warning); -void InfoBalloon (char *headingStringId, char *textStringId, HWND hwnd); -void InfoBalloonDirect (wchar_t *headingString, wchar_t *textString, HWND hwnd); -void WarningBalloon (char *headingStringId, char *textStringId, HWND hwnd); -void WarningBalloonDirect (wchar_t *headingString, wchar_t *textString, HWND hwnd); -int Info (char *stringId, HWND hwnd); -int InfoTopMost (char *stringId, HWND hwnd); -int InfoDirect (const wchar_t *msg, HWND hwnd); -int Warning (char *stringId, HWND hwnd); -int WarningTopMost (char *stringId, HWND hwnd); -int WarningDirect (const wchar_t *warnMsg, HWND hwnd); -int Error (char *stringId, HWND hwnd); -int ErrorRetryCancel (char *stringId, HWND hwnd); -int ErrorDirect (const wchar_t *errMsg, HWND hwnd); -int ErrorTopMost (char *stringId, HWND hwnd); -int AskYesNo (char *stringId, HWND hwnd); -int AskYesNoString (const wchar_t *str, HWND hwnd); -int AskYesNoTopmost (char *stringId, HWND hwnd); -int AskNoYes (char *stringId, HWND hwnd); -int AskNoYesString (const wchar_t *string, HWND hwnd); -int AskOkCancel (char *stringId, HWND hwnd); -int AskWarnYesNo (char *stringId, HWND hwnd); -int AskWarnYesNoString (const wchar_t *string, HWND hwnd); -int AskWarnYesNoTopmost (char *stringId, HWND hwnd); -int AskWarnYesNoStringTopmost (const wchar_t *string, HWND hwnd); -int AskWarnNoYes (char *stringId, HWND hwnd); -int AskWarnNoYesString (const wchar_t *string, HWND hwnd); -int AskWarnNoYesTopmost (char *stringId, HWND hwnd); -int AskWarnOkCancel (char *stringId, HWND hwnd); -int AskWarnCancelOk (char *stringId, HWND hwnd); -int AskErrYesNo (char *stringId, HWND hwnd); -int AskErrNoYes (char *stringId, HWND hwnd); -int AskMultiChoice (void *strings[], BOOL bBold, HWND hwnd); -BOOL ConfigWriteBegin (); -BOOL ConfigWriteEnd (HWND hwnd); -BOOL ConfigWriteString (char *configKey, char *configValue); -BOOL ConfigWriteStringW (char *configKey, wchar_t *configValue); -BOOL ConfigWriteInt (char *configKey, int configValue); -int ConfigReadInt (char *configKey, int defaultValue); -char *ConfigReadString (char *configKey, char *defaultValue, char *str, int maxLen); -void ConfigReadCompareInt(char *configKey, int defaultValue, int* pOutputValue, BOOL bOnlyCheckModified, BOOL* pbModified); -void ConfigReadCompareString (char *configKey, char *defaultValue, char *str, int maxLen, BOOL bOnlyCheckModified, BOOL *pbModified); -void RestoreDefaultKeyFilesParam (void); -BOOL LoadDefaultKeyFilesParam (void); -void Debug (char *format, ...); -void DebugMsgBox (char *format, ...); -BOOL IsOSAtLeast (OSVersionEnum reqMinOS); -BOOL IsOSVersionAtLeast (OSVersionEnum reqMinOS, int reqMinServicePack); -BOOL Is64BitOs (); -BOOL IsServerOS (); -BOOL IsHiddenOSRunning (void); -BOOL EnableWow64FsRedirection (BOOL enable); -BOOL RestartComputer (void); -void Applink (char *dest, BOOL bSendOS, char *extraOutput); -wchar_t *RelativePath2Absolute (wchar_t *szFileName); -void HandleDriveNotReadyError (HWND hwnd); -BOOL CALLBACK CloseTCWindowsEnum( HWND hwnd, LPARAM lParam); -BOOL CALLBACK FindTCWindowEnum (HWND hwnd, LPARAM lParam); -BYTE *MapResource (wchar_t *resourceType, int resourceId, PDWORD size); -void InconsistencyResolved (char *msg); -void ReportUnexpectedState (char *techInfo); -BOOL SelectMultipleFiles (HWND hwndDlg, const char *stringId, wchar_t *lpszFileName, size_t cbFileName, BOOL keepHistory); -BOOL SelectMultipleFilesNext (wchar_t *lpszFileName, size_t cbFileName); -void OpenOnlineHelp (); -BOOL GetPartitionInfo (const wchar_t *deviceName, PPARTITION_INFORMATION rpartInfo); -BOOL GetDeviceInfo (const wchar_t *deviceName, DISK_PARTITION_INFO_STRUCT *info); -BOOL GetDriveGeometry (const wchar_t *deviceName, PDISK_GEOMETRY diskGeometry); -BOOL GetPhysicalDriveGeometry (int driveNumber, PDISK_GEOMETRY diskGeometry); -BOOL IsVolumeDeviceHosted (const wchar_t *lpszDiskFile); -int CompensateXDPI (int val); -int CompensateYDPI (int val); -int CompensateDPIFont (int val); -int GetTextGfxWidth (HWND hwndDlgItem, const wchar_t *text, HFONT hFont); -int GetTextGfxHeight (HWND hwndDlgItem, const wchar_t *text, HFONT hFont); -BOOL ToHyperlink (HWND hwndDlg, UINT ctrlId); -BOOL ToCustHyperlink (HWND hwndDlg, UINT ctrlId, HFONT hFont); -void DisableCloseButton (HWND hwndDlg); -void EnableCloseButton (HWND hwndDlg); -void ToBootPwdField (HWND hwndDlg, UINT ctrlId); -void AccommodateTextField (HWND hwndDlg, UINT ctrlId, BOOL bFirstUpdate, HFONT hFont); -BOOL GetDriveLabel (int driveNo, wchar_t *label, int labelSize); -BOOL GetSysDevicePaths (HWND hwndDlg); -BOOL DoDriverInstall (HWND hwndDlg); -int OpenVolume (OpenVolumeContext *context, const wchar_t *volumePath, Password *password, int pkcs5_prf, int pim, BOOL truecryptMode, BOOL write, BOOL preserveTimestamps, BOOL useBackupHeader); -void CloseVolume (OpenVolumeContext *context); -int ReEncryptVolumeHeader (HWND hwndDlg, char *buffer, BOOL bBoot, CRYPTO_INFO *cryptoInfo, Password *password, int pim, BOOL wipeMode); -BOOL IsPagingFileActive (BOOL checkNonWindowsPartitionsOnly); -BOOL IsPagingFileWildcardActive (); -BOOL DisablePagingFile (); -BOOL CALLBACK SecurityTokenPasswordDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); -BOOL CALLBACK SecurityTokenKeyfileDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); -BOOL InitSecurityTokenLibrary (HWND hwndDlg); -BOOL FileHasReadOnlyAttribute (const wchar_t *path); -BOOL IsFileOnReadOnlyFilesystem (const wchar_t *path); -void CheckFilesystem (HWND hwndDlg, int driveNo, BOOL fixErrors); -BOOL BufferContainsString (const byte *buffer, size_t bufferSize, const char *str); -int AskNonSysInPlaceEncryptionResume (HWND hwndDlg, BOOL* pbDecrypt); -BOOL RemoveDeviceWriteProtection (HWND hwndDlg, wchar_t *devicePath); -void EnableElevatedCursorChange (HWND parent); -BOOL DisableFileCompression (HANDLE file); -BOOL VolumePathExists (const wchar_t *volumePath); -BOOL IsWindowsIsoBurnerAvailable (); -BOOL LaunchWindowsIsoBurner (HWND hwnd, const wchar_t *isoPath); -BOOL IsApplicationInstalled (const wchar_t *appName); -int GetPim (HWND hwndDlg, UINT ctrlId); -void SetPim (HWND hwndDlg, UINT ctrlId, int pim); -BOOL GetPassword (HWND hwndDlg, UINT ctrlID, char* passValue, int bufSize, BOOL bShowError); -void SetPassword (HWND hwndDlg, UINT ctrlID, char* passValue); -void HandleShowPasswordFieldAction (HWND hwndDlg, UINT checkBoxId, UINT edit1Id, UINT edit2Id); -HKEY OpenDeviceClassRegKey (const GUID *deviceClassGuid); -LSTATUS DeleteRegistryKey (HKEY, LPCTSTR); -HIMAGELIST CreateImageList(int cx, int cy, UINT flags, int cInitial, int cGrow); -int AddBitmapToImageList(HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask); -HRESULT VCStrDupW(LPCWSTR psz, LPWSTR *ppwsz); -void ProcessEntropyEstimate (HWND hProgress, DWORD* pdwInitialValue, DWORD dwCounter, DWORD dwMaxLevel, DWORD* pdwEntropy); -void AllowMessageInUIPI (UINT msg); -BOOL IsRepeatedByteArray (byte value, const byte* buffer, size_t bufferSize); -BOOL TranslateVolumeID (HWND hwndDlg, wchar_t* pathValue, size_t cchPathValue); -BOOL CopyTextToClipboard (const wchar_t* txtValue); - -#ifdef __cplusplus -} - -#include -#include - -struct HostDevice -{ - HostDevice () - : - Bootable (false), - ContainsSystem (false), - DynamicVolume (false), - Floppy (false), - IsPartition (false), - IsVirtualPartition (false), - HasUnencryptedFilesystem (false), - Removable (false), - Size (0), - SystemNumber((uint32) -1) - { - } - - ~HostDevice () { } - - bool Bootable; - bool ContainsSystem; - bool DynamicVolume; - bool Floppy; - bool IsPartition; - bool IsVirtualPartition; - bool HasUnencryptedFilesystem; - std::wstring MountPoint; - std::wstring Name; - std::wstring Path; - bool Removable; - uint64 Size; - uint32 SystemNumber; - - std::vector Partitions; -}; - -struct RawDevicesDlgParam -{ - std::vector devices; - wchar_t *pszFileName; -}; - -BOOL BrowseFilesInDir (HWND hwndDlg, char *stringId, wchar_t *initialDir, wchar_t *lpszFileName, BOOL keepHistory, BOOL saveMode, wchar_t *browseFilter, const wchar_t *initialFileName = NULL, const wchar_t *defaultExtension = NULL); -std::wstring SingleStringToWide (const std::string &singleString); -std::wstring Utf8StringToWide (const std::string &utf8String); -std::string WideToUtf8String (const std::wstring &wideString); -std::vector GetAvailableHostDevices (bool noDeviceProperties = false, bool singleList = false, bool noFloppy = true, bool detectUnencryptedFilesystems = false); -std::wstring ToUpperCase (const std::wstring &str); -std::wstring GetWrongPasswordErrorMessage (HWND hwndDlg); -std::wstring GetWindowsEdition (); -std::wstring FitPathInGfxWidth (HWND hwnd, HFONT hFont, LONG width, const std::wstring &path); -std::wstring GetServiceConfigPath (const wchar_t *fileName, bool useLegacy); -std::wstring VolumeGuidPathToDevicePath (std::wstring volumeGuidPath); -std::wstring HarddiskVolumePathToPartitionPath (const std::wstring &harddiskVolumePath); -std::wstring FindLatestFileOrDirectory (const std::wstring &directory, const wchar_t *namePattern, bool findDirectory, bool findFile); -std::wstring GetUserFriendlyVersionString (int version); -std::wstring IntToWideString (int val); -std::wstring ArrayToHexWideString (const unsigned char* pbData, int cbData); -bool HexWideStringToArray (const wchar_t* hexStr, std::vector& arr); -std::wstring FindDeviceByVolumeID (const BYTE volumeID [VOLUME_ID_SIZE]); -void RegisterDriverInf (bool registerFilter, const std::string& filter, const std::string& filterReg, HWND ParentWindow, HKEY regKey); -std::wstring GetTempPathString (); -inline std::wstring AppendSrcPos (const wchar_t* msg, const char* srcPos) -{ - return std::wstring (msg? msg : L"") + L"\n\nSource: " + SingleStringToWide (srcPos); -} - -// Display a wait dialog while calling the provided callback with the given parameter -typedef void (CALLBACK* WaitThreadProc)(void* pArg, HWND hWaitDlg); -void BringToForeground(HWND hWnd); -void ShowWaitDialog(HWND hwnd, BOOL bUseHwndAsParent, WaitThreadProc callback, void* pArg); - -#endif // __cplusplus - -#endif // TC_HEADER_DLGCODE +/* + Legal Notice: Some portions of the source code contained in this file were + derived from the source code of TrueCrypt 7.1a, which is + Copyright (c) 2003-2012 TrueCrypt Developers Association and which is + governed by the TrueCrypt License 3.0, also from the source code of + Encryption for the Masses 2.02a, which is Copyright (c) 1998-2000 Paul Le Roux + and which is governed by the 'License Agreement for Encryption for the Masses' + Modifications and additions to the original source code (contained in this file) + and all other portions of this file are Copyright (c) 2013-2016 IDRIX + and are governed by the Apache License 2.0 the full text of which is + contained in the file License.txt included in VeraCrypt binary and source + code distribution packages. */ + +#ifndef TC_HEADER_DLGCODE +#define TC_HEADER_DLGCODE + +#include "Common.h" +#include "Apidrvr.h" +#include "Keyfiles.h" +#include "Wipe.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* IDs for dynamically generated GUI elements */ +enum dynamic_gui_element_ids +{ + IDPM_CHECK_FILESYS = 500001, + IDPM_REPAIR_FILESYS, + IDPM_OPEN_VOLUME, + IDPM_SELECT_FILE_AND_MOUNT, + IDPM_SELECT_DEVICE_AND_MOUNT, + IDPM_ADD_TO_FAVORITES, + IDPM_ADD_TO_SYSTEM_FAVORITES, + IDM_SHOW_HIDE, + IDM_HOMEPAGE_SYSTRAY, + IDPM_COPY_VALUE_TO_CLIPBOARD +}; + +enum +{ + TC_TBXID_LEGAL_NOTICES, + TC_TBXID_SYS_ENCRYPTION_PRETEST, + TC_TBXID_SYS_ENC_RESCUE_DISK, + TC_TBXID_DECOY_OS_INSTRUCTIONS, + TC_TBXID_EXTRA_BOOT_PARTITION_REMOVAL_INSTRUCTIONS +}; + +#define TC_APPLICATION_ID L"IDRIX.VeraCrypt" + +#define TC_MUTEX_NAME_SYSENC L"Global\\VeraCrypt System Encryption Wizard" +#define TC_MUTEX_NAME_NONSYS_INPLACE_ENC L"Global\\VeraCrypt In-Place Encryption Wizard" +#define TC_MUTEX_NAME_APP_SETUP L"Global\\VeraCrypt Setup" +#define TC_MUTEX_NAME_DRIVER_SETUP L"Global\\VeraCrypt Driver Setup" + +#define IDC_ABOUT 0x7fff /* ID for AboutBox on system menu in wm_user range */ + +#define EXCL_ACCESS_MAX_AUTO_RETRIES 500 +#define EXCL_ACCESS_AUTO_RETRY_DELAY 10 + +#define UNMOUNT_MAX_AUTO_RETRIES 30 +#define UNMOUNT_AUTO_RETRY_DELAY 50 + +// After the user receives the "Incorrect password" error this number of times in a row, we should automatically +// try using the embedded header backup (if any). This ensures that the "Incorrect password" message is reported faster +// initially (most such errors are really caused by supplying an incorrect password, not by header corruption). +#define TC_TRY_HEADER_BAK_AFTER_NBR_WRONG_PWD_TRIES 2 + +#define MAX_MULTI_CHOICES 10 /* Maximum number of options for mutliple-choice dialog */ + +#define TC_APPD_FILENAME_CONFIGURATION L"Configuration.xml" +#define TC_APPD_FILENAME_SYSTEM_ENCRYPTION L"System Encryption.xml" +#define TC_APPD_FILENAME_DEFAULT_KEYFILES L"Default Keyfiles.xml" +#define TC_APPD_FILENAME_HISTORY L"History.xml" +#define TC_APPD_FILENAME_FAVORITE_VOLUMES L"Favorite Volumes.xml" +#define TC_APPD_FILENAME_SYSTEM_FAVORITE_VOLUMES _T(TC_APP_NAME) L" System Favorite Volumes.xml" +#define TC_APPD_FILENAME_NONSYS_INPLACE_ENC L"In-Place Encryption" +#define TC_APPD_FILENAME_NONSYS_INPLACE_ENC_WIPE L"In-Place Encryption Wipe Algo" +#define TC_APPD_FILENAME_POST_INSTALL_TASK_TUTORIAL L"Post-Install Task - Tutorial" +#define TC_APPD_FILENAME_POST_INSTALL_TASK_RELEASE_NOTES L"Post-Install Task - Release Notes" + +#define VC_FILENAME_RENAMED_SUFFIX L"_old" + +#ifndef USER_DEFAULT_SCREEN_DPI +#define USER_DEFAULT_SCREEN_DPI 96 +#endif + +#if (USER_DEFAULT_SCREEN_DPI != 96) +# error Revision of GUI and graphics necessary, since everything assumes default screen DPI as 96 (note that 96 is the default on Windows 2000, XP, and Vista). +#endif + +enum +{ + TC_POST_INSTALL_CFG_REMOVE_ALL = 0, + TC_POST_INSTALL_CFG_TUTORIAL, + TC_POST_INSTALL_CFG_RELEASE_NOTES +}; + +extern char *LastDialogId; +extern char *ConfigBuffer; +extern wchar_t szHelpFile[TC_MAX_PATH]; +extern wchar_t szHelpFile2[TC_MAX_PATH]; +extern wchar_t SecurityTokenLibraryPath[TC_MAX_PATH]; +extern HFONT hFixedDigitFont; +extern HFONT hBoldFont; +extern HFONT hTitleFont; +extern HFONT hFixedFont; +extern HFONT hUserFont; +extern HFONT hUserUnderlineFont; +extern HFONT hUserBoldFont; +extern HFONT WindowTitleBarFont; +extern int ScreenDPI; +extern double DlgAspectRatio; +extern HWND MainDlg; +extern BOOL Silent; +extern BOOL bHistory; +extern BOOL bPreserveTimestamp; +extern BOOL bShowDisconnectedNetworkDrives; +extern BOOL bHideWaitingDialog; +extern BOOL bCmdHideWaitingDialog; +extern BOOL bCmdHideWaitingDialogValid; +extern BOOL bStartOnLogon; +extern BOOL bMountDevicesOnLogon; +extern BOOL bMountFavoritesOnLogon; +extern int HiddenSectorDetectionStatus; +extern wchar_t *lpszTitle; +extern OSVersionEnum nCurrentOS; +extern int CurrentOSMajor; +extern int CurrentOSMinor; +extern int CurrentOSServicePack; +extern BOOL RemoteSession; +extern HANDLE hDriver; +extern HINSTANCE hInst; +extern int SystemEncryptionStatus; +extern WipeAlgorithmId nWipeMode; +extern BOOL bSysPartitionSelected; +extern BOOL bSysDriveSelected; + +extern wchar_t SysPartitionDevicePath [TC_MAX_PATH]; +extern wchar_t SysDriveDevicePath [TC_MAX_PATH]; +extern char bCachedSysDevicePathsValid; + +extern BOOL bHyperLinkBeingTracked; +extern BOOL bInPlaceEncNonSysPending; + +extern BOOL PimEnable; +extern BOOL KeyFilesEnable; +extern KeyFile *FirstKeyFile; +extern KeyFilesDlgParam defaultKeyFilesParam; +extern BOOL UacElevated; +extern BOOL IgnoreWmDeviceChange; +extern BOOL DeviceChangeBroadcastDisabled; +extern BOOL LastMountedVolumeDirty; +extern BOOL MountVolumesAsSystemFavorite; +extern BOOL FavoriteMountOnArrivalInProgress; +extern BOOL MultipleMountOperationInProgress; + + +enum tc_app_msg_ids +{ + /* WARNING: Changing these values or their meanings may cause incompatibility with other versions + (for example, if a new version of the TrueCrypt installer needed to shut down this version of + TrueCrypt during upgrade, it could fail or do something unwanted because the signal value would + be incorrect). When adding a new constant, verify that the value is unique within this block and + that it is less than WM_APP+16383. */ + + // Common (inter-app) + TC_APPMSG_CLOSE_BKG_TASK = WM_APP + 4, // Changing this value will prevent smooth upgrades from pre-5.x versions + TC_APPMSG_SYSENC_CONFIG_UPDATE = WM_APP + 101, + TC_APPMSG_TASKBAR_ICON = WM_APP + 102, + TC_APPMSG_LOAD_TEXT_BOX_CONTENT = WM_APP + 103, + // Mount + TC_APPMSG_MOUNT_ENABLE_DISABLE_CONTROLS = WM_APP + 201, + TC_APPMSG_MOUNT_SHOW_WINDOW = WM_APP + 202, + TC_APPMSG_PREBOOT_PASSWORD_MODE = WM_APP + 203, + // Format + TC_APPMSG_VOL_TRANSFORM_THREAD_ENDED = WM_APP + 301, + TC_APPMSG_FORMAT_FINISHED = WM_APP + 302, + TC_APPMSG_FORMAT_USER_QUIT = WM_APP + 303, + TC_APPMSG_PERFORM_POST_WMINIT_TASKS = WM_APP + 304, + TC_APPMSG_PERFORM_POST_SYSENC_WMINIT_TASKS = WM_APP + 305, + TC_APPMSG_NONSYS_INPLACE_ENC_FINISHED = WM_APP + 306, + // Setup + TC_APPMSG_INSTALL_SUCCESS = WM_APP + 401, + TC_APPMSG_UNINSTALL_SUCCESS = WM_APP + 402, + TC_APPMSG_EXTRACTION_SUCCESS = WM_APP + 403, + TC_APPMSG_INSTALL_FAILURE = WM_APP + 404, + TC_APPMSG_UNINSTALL_FAILURE = WM_APP + 405, + TC_APPMSG_EXTRACTION_FAILURE = WM_APP + 406 +}; + +enum system_encryption_status +{ + /* WARNING: As these values are written to config files, if they or their meanings + are changed, incompatiblity with other versions may arise (upgrade, downgrade, etc.). + When adding a new constant, verify that the value is unique within this block. */ + SYSENC_STATUS_NONE = 0, + SYSENC_STATUS_PRETEST = 200, // This may also mean that the OS is to be (or has been) copied to a hidden volume (to create a hidden OS). + SYSENC_STATUS_ENCRYPTING = 400, + SYSENC_STATUS_DECRYPTING = 600 +}; + +enum vol_creation_wizard_modes +{ + WIZARD_MODE_FILE_CONTAINER = 0, + WIZARD_MODE_NONSYS_DEVICE, + WIZARD_MODE_SYS_DEVICE +}; + + +typedef struct +{ + BOOL VolumeIsOpen; + + CRYPTO_INFO *CryptoInfo; + BOOL IsDevice; + HANDLE HostFileHandle; + uint64 HostSize; + + BOOL TimestampsValid; + FILETIME CreationTime; + FILETIME LastWriteTime; + FILETIME LastAccessTime; + +} OpenVolumeContext; + + +#define DEFAULT_VOL_CREATION_WIZARD_MODE WIZARD_MODE_FILE_CONTAINER + +#define ICON_HAND MB_ICONHAND +#define YES_NO MB_YESNO + +#define ISO_BURNER_TOOL L"isoburn.exe" +#define PRINT_TOOL L"notepad.exe" + +void cleanup ( void ); +void LowerCaseCopy ( wchar_t *lpszDest , const wchar_t *lpszSource ); +void UpperCaseCopy ( wchar_t *lpszDest , size_t cbDest, const wchar_t *lpszSource ); +void CreateFullVolumePath ( wchar_t *lpszDiskFile , size_t cbDiskFile, const wchar_t *lpszFileName , BOOL *bDevice ); +int FakeDosNameForDevice ( const wchar_t *lpszDiskFile , wchar_t *lpszDosDevice , size_t cbDosDevice, wchar_t *lpszCFDevice , size_t cbCFDevice, BOOL bNameOnly ); +int RemoveFakeDosName ( wchar_t *lpszDiskFile , wchar_t *lpszDosDevice ); +void AbortProcessDirect ( wchar_t *abortMsg ); +void AbortProcess ( char *stringId ); +void AbortProcessSilent ( void ); +void *err_malloc ( size_t size ); +char *err_strdup ( char *lpszText ); +DWORD handleWin32Error ( HWND hwndDlg, const char* srcPos ); +BOOL IsDiskReadError (DWORD error); +BOOL IsDiskWriteError (DWORD error); +BOOL IsDiskError (DWORD error); +BOOL translateWin32Error ( wchar_t *lpszMsgBuf , int nWSizeOfBuf ); +BOOL CALLBACK AboutDlgProc ( HWND hwndDlg , UINT msg , WPARAM wParam , LPARAM lParam ); +static BOOL CALLBACK StaticModelessWaitDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); +void DisplayStaticModelessWaitDlg (HWND parent); +void CloseStaticModelessWaitDlg (void); +BOOL IsButtonChecked ( HWND hButton ); +void CheckButton ( HWND hButton ); +void LeftPadString (wchar_t *szTmp, int len, int targetLen, wchar_t filler); +void InitDialog ( HWND hwndDlg ); +void ProcessPaintMessages (HWND hwnd, int maxMessagesToProcess); +HDC CreateMemBitmap ( HINSTANCE hInstance , HWND hwnd , wchar_t *resource ); +HBITMAP RenderBitmap ( wchar_t *resource , HWND hwndDest , int x , int y , int nWidth , int nHeight , BOOL bDirectRender , BOOL bKeepAspectRatio); +LRESULT CALLBACK RedTick ( HWND hwnd , UINT uMsg , WPARAM wParam , LPARAM lParam ); +BOOL RegisterRedTick ( HINSTANCE hInstance ); +BOOL UnregisterRedTick ( HINSTANCE hInstance ); +LRESULT CALLBACK SplashDlgProc ( HWND hwnd , UINT uMsg , WPARAM wParam , LPARAM lParam ); +void WaitCursor ( void ); +void NormalCursor ( void ); +void ArrowWaitCursor ( void ); +void HandCursor (); +void AddComboPair (HWND hComboBox, const wchar_t *lpszItem, int value); +void SelectAlgo ( HWND hComboBox , int *nCipher ); +void PopulateWipeModeCombo (HWND hComboBox, BOOL bNA, BOOL bInPlaceEncryption, BOOL bHeaderWipe); +wchar_t *GetWipeModeName (WipeAlgorithmId modeId); +wchar_t *GetPathType (const wchar_t *path, BOOL bUpperCase, BOOL *bIsPartition); +LRESULT CALLBACK CustomDlgProc ( HWND hwnd , UINT uMsg , WPARAM wParam , LPARAM lParam ); +BOOL TCCreateMutex (volatile HANDLE *hMutex, wchar_t *name); +void TCCloseMutex (volatile HANDLE *hMutex); +BOOL MutexExistsOnSystem (wchar_t *name); +BOOL CreateSysEncMutex (void); +BOOL InstanceHasSysEncMutex (void); +void CloseSysEncMutex (void); +BOOL CreateNonSysInplaceEncMutex (void); +BOOL InstanceHasNonSysInplaceEncMutex (void); +void CloseNonSysInplaceEncMutex (void); +BOOL NonSysInplaceEncInProgressElsewhere (void); +BOOL CreateDriverSetupMutex (void); +void CloseDriverSetupMutex (void); +BOOL CreateAppSetupMutex (void); +BOOL InstanceHasAppSetupMutex (void); +void CloseAppSetupMutex (void); +BOOL IsTrueCryptInstallerRunning (void); +uint32 ReadDriverConfigurationFlags (); +uint32 ReadEncryptionThreadPoolFreeCpuCountLimit (); +BOOL LoadSysEncSettings (); +int LoadNonSysInPlaceEncSettings (WipeAlgorithmId *wipeAlgorithm); +void RemoveNonSysInPlaceEncNotifications (void); +void SavePostInstallTasksSettings (int command); +void DoPostInstallTasks (HWND hwndDlg); +void InitOSVersionInfo (); +void InitApp ( HINSTANCE hInstance, wchar_t *lpszCommandLine ); +void FinalizeApp (void); +void InitHelpFileName (void); +BOOL OpenDevice (const wchar_t *lpszPath, OPEN_TEST_STRUCT *driver, BOOL detectFilesystem, BOOL matchVolumeID, const BYTE* pbVolumeID); +void NotifyDriverOfPortableMode (void); +int GetAvailableFixedDisks ( HWND hComboBox , char *lpszRootPath ); +int GetAvailableRemovables ( HWND hComboBox , char *lpszRootPath ); +int IsSystemDevicePath (const wchar_t *path, HWND hwndDlg, BOOL bReliableRequired); +int IsNonSysPartitionOnSysDrive (const wchar_t *path); +BOOL CALLBACK RawDevicesDlgProc ( HWND hwndDlg , UINT msg , WPARAM wParam , LPARAM lParam ); +INT_PTR TextInfoDialogBox (int nID); +BOOL CALLBACK TextInfoDialogBoxDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); +char * GetLegalNotices (); +BOOL CALLBACK BenchmarkDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); +void UserEnrichRandomPool (HWND hwndDlg); +BOOL CALLBACK KeyfileGeneratorDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); +BOOL CALLBACK MultiChoiceDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); +int DriverAttach ( void ); +BOOL CALLBACK CipherTestDialogProc ( HWND hwndDlg , UINT uMsg , WPARAM wParam , LPARAM lParam ); +void ResetCipherTest ( HWND hwndDlg , int idTestCipher ); +void ResetCurrentDirectory (); +BOOL BrowseFiles (HWND hwndDlg, char *stringId, wchar_t *lpszFileName, BOOL keepHistory, BOOL saveMode, wchar_t *browseFilter); +BOOL BrowseDirectories (HWND hWnd, char *lpszTitle, wchar_t *dirName); +void handleError ( HWND hwndDlg , int code, const char* srcPos ); +BOOL CheckFileStreamWriteErrors (HWND hwndDlg, FILE *file, const wchar_t *fileName); +void LocalizeDialog ( HWND hwnd, char *stringId ); +void OpenVolumeExplorerWindow (int driveNo); +static BOOL CALLBACK CloseVolumeExplorerWindowsEnum( HWND hwnd, LPARAM driveNo); +BOOL CloseVolumeExplorerWindows (HWND hwnd, int driveNo); +BOOL UpdateDriveCustomLabel (int driveNo, wchar_t* effectiveLabel, BOOL bSetValue); +BOOL CheckCapsLock (HWND hwnd, BOOL quiet); +BOOL CheckFileExtension (wchar_t *fileName); +void CorrectFileName (wchar_t* fileName); +void IncreaseWrongPwdRetryCount (int count); +void ResetWrongPwdRetryCount (void); +BOOL WrongPwdRetryCountOverLimit (void); +DWORD GetUsedLogicalDrives (void); +int GetFirstAvailableDrive (); +int GetLastAvailableDrive (); +BOOL IsDriveAvailable (int driveNo); +BOOL IsDeviceMounted (wchar_t *deviceName); +int DriverUnmountVolume (HWND hwndDlg, int nDosDriveNo, BOOL forced); +void BroadcastDeviceChange (WPARAM message, int nDosDriveNo, DWORD driveMap); +int MountVolume (HWND hwndDlg, int driveNo, wchar_t *volumePath, Password *password, int pkcs5, int pim, BOOL truecryptMode, BOOL cachePassword, BOOL cachePim, BOOL sharedAccess, const MountOptions* const mountOptions, BOOL quiet, BOOL bReportWrongPassword); +BOOL UnmountVolume (HWND hwndDlg , int nDosDriveNo, BOOL forceUnmount); +BOOL UnmountVolumeAfterFormatExCall (HWND hwndDlg, int nDosDriveNo); +BOOL IsPasswordCacheEmpty (void); +BOOL IsMountedVolumeID (BYTE volumeID[VOLUME_ID_SIZE]); +BOOL IsMountedVolume (const wchar_t *volname); +int GetMountedVolumeDriveNo (wchar_t *volname); +BOOL IsAdmin (void); +BOOL IsBuiltInAdmin (); +BOOL IsUacSupported (); +BOOL ResolveSymbolicLink (const wchar_t *symLinkName, PWSTR targetName, size_t cbTargetName); +int GetDiskDeviceDriveLetter (PWSTR deviceName); +int FileSystemAppearsEmpty (const wchar_t *devicePath); +__int64 GetStatsFreeSpaceOnPartition (const wchar_t *devicePath, float *percent, __int64 *occupiedBytes, BOOL silent); +__int64 GetDeviceSize (const wchar_t *devicePath); +HANDLE DismountDrive (wchar_t *devName, wchar_t *devicePath); +int64 FindString (const char *buf, const char *str, int64 bufLen, int64 strLen, int64 startOffset); +BOOL FileExists (const wchar_t *filePathPtr); +__int64 FindStringInFile (const wchar_t *filePath, const char *str, int strLen); +BOOL TCCopyFile (wchar_t *sourceFileName, wchar_t *destinationFile); +BOOL SaveBufferToFile (const char *inputBuffer, const wchar_t *destinationFile, DWORD inputLength, BOOL bAppend, BOOL bRenameIfFailed); +BOOL TCFlushFile (FILE *f); +BOOL PrintHardCopyTextUTF16 (wchar_t *text, wchar_t *title, size_t byteLen); +void GetSpeedString (unsigned __int64 speed, wchar_t *str, size_t cbStr); +BOOL IsNonInstallMode (); +BOOL DriverUnload (); +LRESULT SetCheckBox (HWND hwndDlg, int dlgItem, BOOL state); +BOOL GetCheckBox (HWND hwndDlg, int dlgItem); +void SetListScrollHPos (HWND hList, int topMostVisibleItem); +void ManageStartupSeq (void); +void ManageStartupSeqWiz (BOOL bRemove, const wchar_t *arg); +void CleanLastVisitedMRU (void); +void ClearHistory (HWND hwndDlgItem); +LRESULT ListItemAdd (HWND list, int index, const wchar_t *string); +LRESULT ListSubItemSet (HWND list, int index, int subIndex, const wchar_t *string); +BOOL GetMountList (MOUNT_LIST_STRUCT *list); +int GetDriverRefCount (); +void GetSizeString (unsigned __int64 size, wchar_t *str, size_t cbStr); +__int64 GetFileSize64 (const wchar_t *path); +BOOL LoadInt16 (const wchar_t *filePath, int *result, __int64 fileOffset); +BOOL LoadInt32 (const wchar_t *filePath, unsigned __int32 *result, __int64 fileOffset); +char *LoadFile (const wchar_t *fileName, DWORD *size); +char *LoadFileBlock (const wchar_t *fileName, __int64 fileOffset, DWORD count); +wchar_t *GetModPath (wchar_t *path, int maxSize); +wchar_t *GetConfigPath (wchar_t *fileName); +wchar_t *GetProgramConfigPath (wchar_t *fileName); +wchar_t GetSystemDriveLetter (void); +void OpenPageHelp (HWND hwndDlg, int nPage); +void TaskBarIconDisplayBalloonTooltip (HWND hwnd, wchar_t *headline, wchar_t *text, BOOL warning); +void InfoBalloon (char *headingStringId, char *textStringId, HWND hwnd); +void InfoBalloonDirect (wchar_t *headingString, wchar_t *textString, HWND hwnd); +void WarningBalloon (char *headingStringId, char *textStringId, HWND hwnd); +void WarningBalloonDirect (wchar_t *headingString, wchar_t *textString, HWND hwnd); +int Info (char *stringId, HWND hwnd); +int InfoTopMost (char *stringId, HWND hwnd); +int InfoDirect (const wchar_t *msg, HWND hwnd); +int Warning (char *stringId, HWND hwnd); +int WarningTopMost (char *stringId, HWND hwnd); +int WarningDirect (const wchar_t *warnMsg, HWND hwnd); +int Error (char *stringId, HWND hwnd); +int ErrorRetryCancel (char *stringId, HWND hwnd); +int ErrorDirect (const wchar_t *errMsg, HWND hwnd); +int ErrorTopMost (char *stringId, HWND hwnd); +int AskYesNo (char *stringId, HWND hwnd); +int AskYesNoString (const wchar_t *str, HWND hwnd); +int AskYesNoTopmost (char *stringId, HWND hwnd); +int AskNoYes (char *stringId, HWND hwnd); +int AskNoYesString (const wchar_t *string, HWND hwnd); +int AskOkCancel (char *stringId, HWND hwnd); +int AskWarnYesNo (char *stringId, HWND hwnd); +int AskWarnYesNoString (const wchar_t *string, HWND hwnd); +int AskWarnYesNoTopmost (char *stringId, HWND hwnd); +int AskWarnYesNoStringTopmost (const wchar_t *string, HWND hwnd); +int AskWarnNoYes (char *stringId, HWND hwnd); +int AskWarnNoYesString (const wchar_t *string, HWND hwnd); +int AskWarnNoYesTopmost (char *stringId, HWND hwnd); +int AskWarnOkCancel (char *stringId, HWND hwnd); +int AskWarnCancelOk (char *stringId, HWND hwnd); +int AskErrYesNo (char *stringId, HWND hwnd); +int AskErrNoYes (char *stringId, HWND hwnd); +int AskMultiChoice (void *strings[], BOOL bBold, HWND hwnd); +BOOL ConfigWriteBegin (); +BOOL ConfigWriteEnd (HWND hwnd); +BOOL ConfigWriteString (char *configKey, char *configValue); +BOOL ConfigWriteStringW (char *configKey, wchar_t *configValue); +BOOL ConfigWriteInt (char *configKey, int configValue); +int ConfigReadInt (char *configKey, int defaultValue); +char *ConfigReadString (char *configKey, char *defaultValue, char *str, int maxLen); +void ConfigReadCompareInt(char *configKey, int defaultValue, int* pOutputValue, BOOL bOnlyCheckModified, BOOL* pbModified); +void ConfigReadCompareString (char *configKey, char *defaultValue, char *str, int maxLen, BOOL bOnlyCheckModified, BOOL *pbModified); +void RestoreDefaultKeyFilesParam (void); +BOOL LoadDefaultKeyFilesParam (void); +void Debug (char *format, ...); +void DebugMsgBox (char *format, ...); +BOOL IsOSAtLeast (OSVersionEnum reqMinOS); +BOOL IsOSVersionAtLeast (OSVersionEnum reqMinOS, int reqMinServicePack); +BOOL Is64BitOs (); +BOOL IsServerOS (); +BOOL IsHiddenOSRunning (void); +BOOL EnableWow64FsRedirection (BOOL enable); +BOOL RestartComputer (void); +void Applink (char *dest, BOOL bSendOS, char *extraOutput); +wchar_t *RelativePath2Absolute (wchar_t *szFileName); +void HandleDriveNotReadyError (HWND hwnd); +BOOL CALLBACK CloseTCWindowsEnum( HWND hwnd, LPARAM lParam); +BOOL CALLBACK FindTCWindowEnum (HWND hwnd, LPARAM lParam); +BYTE *MapResource (wchar_t *resourceType, int resourceId, PDWORD size); +void InconsistencyResolved (char *msg); +void ReportUnexpectedState (char *techInfo); +BOOL SelectMultipleFiles (HWND hwndDlg, const char *stringId, wchar_t *lpszFileName, size_t cbFileName, BOOL keepHistory); +BOOL SelectMultipleFilesNext (wchar_t *lpszFileName, size_t cbFileName); +void OpenOnlineHelp (); +BOOL GetPartitionInfo (const wchar_t *deviceName, PPARTITION_INFORMATION rpartInfo); +BOOL GetDeviceInfo (const wchar_t *deviceName, DISK_PARTITION_INFO_STRUCT *info); +BOOL GetDriveGeometry (const wchar_t *deviceName, PDISK_GEOMETRY diskGeometry); +BOOL GetPhysicalDriveGeometry (int driveNumber, PDISK_GEOMETRY diskGeometry); +BOOL IsVolumeDeviceHosted (const wchar_t *lpszDiskFile); +int CompensateXDPI (int val); +int CompensateYDPI (int val); +int CompensateDPIFont (int val); +int GetTextGfxWidth (HWND hwndDlgItem, const wchar_t *text, HFONT hFont); +int GetTextGfxHeight (HWND hwndDlgItem, const wchar_t *text, HFONT hFont); +BOOL ToHyperlink (HWND hwndDlg, UINT ctrlId); +BOOL ToCustHyperlink (HWND hwndDlg, UINT ctrlId, HFONT hFont); +void DisableCloseButton (HWND hwndDlg); +void EnableCloseButton (HWND hwndDlg); +void ToBootPwdField (HWND hwndDlg, UINT ctrlId); +void AccommodateTextField (HWND hwndDlg, UINT ctrlId, BOOL bFirstUpdate, HFONT hFont); +BOOL GetDriveLabel (int driveNo, wchar_t *label, int labelSize); +BOOL GetSysDevicePaths (HWND hwndDlg); +BOOL DoDriverInstall (HWND hwndDlg); +int OpenVolume (OpenVolumeContext *context, const wchar_t *volumePath, Password *password, int pkcs5_prf, int pim, BOOL truecryptMode, BOOL write, BOOL preserveTimestamps, BOOL useBackupHeader); +void CloseVolume (OpenVolumeContext *context); +int ReEncryptVolumeHeader (HWND hwndDlg, char *buffer, BOOL bBoot, CRYPTO_INFO *cryptoInfo, Password *password, int pim, BOOL wipeMode); +BOOL IsPagingFileActive (BOOL checkNonWindowsPartitionsOnly); +BOOL IsPagingFileWildcardActive (); +BOOL DisablePagingFile (); +BOOL CALLBACK SecurityTokenPasswordDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); +BOOL CALLBACK SecurityTokenKeyfileDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); +BOOL InitSecurityTokenLibrary (HWND hwndDlg); +BOOL FileHasReadOnlyAttribute (const wchar_t *path); +BOOL IsFileOnReadOnlyFilesystem (const wchar_t *path); +void CheckFilesystem (HWND hwndDlg, int driveNo, BOOL fixErrors); +BOOL BufferContainsString (const byte *buffer, size_t bufferSize, const char *str); +int AskNonSysInPlaceEncryptionResume (HWND hwndDlg, BOOL* pbDecrypt); +BOOL RemoveDeviceWriteProtection (HWND hwndDlg, wchar_t *devicePath); +void EnableElevatedCursorChange (HWND parent); +BOOL DisableFileCompression (HANDLE file); +BOOL VolumePathExists (const wchar_t *volumePath); +BOOL IsWindowsIsoBurnerAvailable (); +BOOL LaunchWindowsIsoBurner (HWND hwnd, const wchar_t *isoPath); +BOOL IsApplicationInstalled (const wchar_t *appName); +int GetPim (HWND hwndDlg, UINT ctrlId); +void SetPim (HWND hwndDlg, UINT ctrlId, int pim); +BOOL GetPassword (HWND hwndDlg, UINT ctrlID, char* passValue, int bufSize, BOOL bShowError); +void SetPassword (HWND hwndDlg, UINT ctrlID, char* passValue); +void HandleShowPasswordFieldAction (HWND hwndDlg, UINT checkBoxId, UINT edit1Id, UINT edit2Id); +HKEY OpenDeviceClassRegKey (const GUID *deviceClassGuid); +LSTATUS DeleteRegistryKey (HKEY, LPCTSTR); +HIMAGELIST CreateImageList(int cx, int cy, UINT flags, int cInitial, int cGrow); +int AddBitmapToImageList(HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask); +HRESULT VCStrDupW(LPCWSTR psz, LPWSTR *ppwsz); +void ProcessEntropyEstimate (HWND hProgress, DWORD* pdwInitialValue, DWORD dwCounter, DWORD dwMaxLevel, DWORD* pdwEntropy); +void AllowMessageInUIPI (UINT msg); +BOOL IsRepeatedByteArray (byte value, const byte* buffer, size_t bufferSize); +BOOL TranslateVolumeID (HWND hwndDlg, wchar_t* pathValue, size_t cchPathValue); +BOOL CopyTextToClipboard (const wchar_t* txtValue); + +#ifdef __cplusplus +} + +#include +#include + +struct HostDevice +{ + HostDevice () + : + Bootable (false), + ContainsSystem (false), + DynamicVolume (false), + Floppy (false), + IsPartition (false), + IsVirtualPartition (false), + HasUnencryptedFilesystem (false), + Removable (false), + Size (0), + SystemNumber((uint32) -1) + { + } + + ~HostDevice () { } + + bool Bootable; + bool ContainsSystem; + bool DynamicVolume; + bool Floppy; + bool IsPartition; + bool IsVirtualPartition; + bool HasUnencryptedFilesystem; + std::wstring MountPoint; + std::wstring Name; + std::wstring Path; + bool Removable; + uint64 Size; + uint32 SystemNumber; + + std::vector Partitions; +}; + +struct RawDevicesDlgParam +{ + std::vector devices; + wchar_t *pszFileName; +}; + +BOOL BrowseFilesInDir (HWND hwndDlg, char *stringId, wchar_t *initialDir, wchar_t *lpszFileName, BOOL keepHistory, BOOL saveMode, wchar_t *browseFilter, const wchar_t *initialFileName = NULL, const wchar_t *defaultExtension = NULL); +std::wstring SingleStringToWide (const std::string &singleString); +std::wstring Utf8StringToWide (const std::string &utf8String); +std::string WideToUtf8String (const std::wstring &wideString); +std::vector GetAvailableHostDevices (bool noDeviceProperties = false, bool singleList = false, bool noFloppy = true, bool detectUnencryptedFilesystems = false); +std::wstring ToUpperCase (const std::wstring &str); +std::wstring GetWrongPasswordErrorMessage (HWND hwndDlg); +std::wstring GetWindowsEdition (); +std::wstring FitPathInGfxWidth (HWND hwnd, HFONT hFont, LONG width, const std::wstring &path); +std::wstring GetServiceConfigPath (const wchar_t *fileName, bool useLegacy); +std::wstring VolumeGuidPathToDevicePath (std::wstring volumeGuidPath); +std::wstring HarddiskVolumePathToPartitionPath (const std::wstring &harddiskVolumePath); +std::wstring FindLatestFileOrDirectory (const std::wstring &directory, const wchar_t *namePattern, bool findDirectory, bool findFile); +std::wstring GetUserFriendlyVersionString (int version); +std::wstring IntToWideString (int val); +std::wstring ArrayToHexWideString (const unsigned char* pbData, int cbData); +bool HexWideStringToArray (const wchar_t* hexStr, std::vector& arr); +std::wstring FindDeviceByVolumeID (const BYTE volumeID [VOLUME_ID_SIZE]); +void RegisterDriverInf (bool registerFilter, const std::string& filter, const std::string& filterReg, HWND ParentWindow, HKEY regKey); +std::wstring GetTempPathString (); +inline std::wstring AppendSrcPos (const wchar_t* msg, const char* srcPos) +{ + return std::wstring (msg? msg : L"") + L"\n\nSource: " + SingleStringToWide (srcPos); +} + +// Display a wait dialog while calling the provided callback with the given parameter +typedef void (CALLBACK* WaitThreadProc)(void* pArg, HWND hWaitDlg); +void BringToForeground(HWND hWnd); +void ShowWaitDialog(HWND hwnd, BOOL bUseHwndAsParent, WaitThreadProc callback, void* pArg); + +#endif // __cplusplus + +#endif // TC_HEADER_DLGCODE -- cgit v1.2.3