mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2026-07-23 00:13:21 +00:00
6bef9e009c
Keep the NTFS kernel-driver option as a generic in-kernel NTFS path rather than an ntfs3-specific path. Add --filesystem=kernel-ntfs and -m kernelntfs routes that select a registered or loadable kernel NTFS driver and mount with -i so mount.ntfs/ntfs-3g helpers are not invoked. Preserve --filesystem=ntfs3 as a literal pin to the ntfs3 driver. Treat both ntfs3 and kernel-ntfs as mount-only selectors; volume creation continues to use filesystem type NTFS. The preference and -m kernelntfs path only select an in-kernel NTFS driver when no explicit filesystem type was supplied and blkid detects NTFS. Treat ntfs as the preferred in-kernel driver on Linux 7.1 and later, where the upstream read/write driver is expected. On earlier kernels, select ntfs only when module metadata identifies the standalone read/write driver and /sys/module confirms it loaded, avoiding ntfs3 read-only ntfs compatibility registrations. Fall back to ntfs3 otherwise, and report a generic kernel-driver error if neither supported driver is available or loadable. Rename the internal preference/config field to MountNtfsWithKernelDriver, migrate the old MountNtfsWithNtfs3 preference key, and update UI strings, CLI help, documentation, release notes, and translation placeholders accordingly. Reference: https://github.com/veracrypt/VeraCrypt/issues/1735
69 lines
2.5 KiB
C++
69 lines
2.5 KiB
C++
/*
|
|
Derived from source code of TrueCrypt 7.1a, which is
|
|
Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
|
|
by the TrueCrypt License 3.0.
|
|
|
|
Modifications and additions to the original source code (contained in this file)
|
|
and all other portions of this file are Copyright (c) 2013-2025 AM Crypto
|
|
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_Core_CoreException
|
|
#define TC_HEADER_Core_CoreException
|
|
|
|
#include "Platform/Platform.h"
|
|
|
|
namespace VeraCrypt
|
|
{
|
|
struct ElevationFailed : public ExecutedProcessFailed
|
|
{
|
|
ElevationFailed () { }
|
|
ElevationFailed (const string &message, const string &command, int exitCode, const string &errorOutput)
|
|
: ExecutedProcessFailed (message, command, exitCode, errorOutput) { }
|
|
TC_SERIALIZABLE_EXCEPTION (ElevationFailed);
|
|
};
|
|
|
|
struct FilesystemDismountFailed : public ExecutedProcessFailed
|
|
{
|
|
FilesystemDismountFailed () { }
|
|
FilesystemDismountFailed (const string &message, const string &command, int exitCode, const string &errorOutput)
|
|
: ExecutedProcessFailed (message, command, exitCode, errorOutput) { }
|
|
FilesystemDismountFailed (const ExecutedProcessFailed &ex)
|
|
: ExecutedProcessFailed (ex.what(), ex.GetCommand(), static_cast <int> (ex.GetExitCode()), ex.GetErrorOutput()) { }
|
|
TC_SERIALIZABLE_EXCEPTION (FilesystemDismountFailed);
|
|
};
|
|
|
|
TC_EXCEPTION_DECL (RootDeviceUnavailable, SystemException);
|
|
|
|
#define TC_EXCEPTION(NAME) TC_EXCEPTION_DECL(NAME,Exception)
|
|
|
|
#undef TC_EXCEPTION_SET
|
|
#define TC_EXCEPTION_SET \
|
|
TC_EXCEPTION_NODECL (ElevationFailed); \
|
|
TC_EXCEPTION_NODECL (FilesystemDismountFailed); \
|
|
TC_EXCEPTION_NODECL (RootDeviceUnavailable); \
|
|
TC_EXCEPTION (DriveLetterUnavailable); \
|
|
TC_EXCEPTION (DriverError); \
|
|
TC_EXCEPTION (EncryptedSystemRequired); \
|
|
TC_EXCEPTION (HigherFuseVersionRequired); \
|
|
TC_EXCEPTION (KernelCryptoServiceTestFailed); \
|
|
TC_EXCEPTION (KernelNtfsDriverUnavailable); \
|
|
TC_EXCEPTION (LoopDeviceSetupFailed); \
|
|
TC_EXCEPTION (MountPointRequired); \
|
|
TC_EXCEPTION (MountPointUnavailable); \
|
|
TC_EXCEPTION (NoDriveLetterAvailable); \
|
|
TC_EXCEPTION (TemporaryDirectoryFailure); \
|
|
TC_EXCEPTION (UnsupportedSectorSizeHiddenVolumeProtection); \
|
|
TC_EXCEPTION (UnsupportedSectorSizeNoKernelCrypto); \
|
|
TC_EXCEPTION (VolumeAlreadyMounted); \
|
|
TC_EXCEPTION (VolumeSlotUnavailable);
|
|
|
|
TC_EXCEPTION_SET;
|
|
|
|
#undef TC_EXCEPTION
|
|
}
|
|
|
|
#endif // TC_HEADER_Core_CoreException
|