diff options
author | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2019-01-14 01:01:00 +0100 |
---|---|---|
committer | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2019-01-14 10:49:13 +0100 |
commit | 07f6793bd25c7f2eab49292d36b2b64f86dfbf2a (patch) | |
tree | 804c8b045e9295b96d29916227751f06b0e102e7 /src/Mount/Mount.c | |
parent | d3e7ed96f3685d83dcc39a18574be1dd2cc8f2f6 (diff) | |
download | VeraCrypt-07f6793bd25c7f2eab49292d36b2b64f86dfbf2a.tar.gz VeraCrypt-07f6793bd25c7f2eab49292d36b2b64f86dfbf2a.zip |
Windows: enhance support of new behavior of favorite service which is now always running in case of system encryption
Diffstat (limited to 'src/Mount/Mount.c')
-rw-r--r-- | src/Mount/Mount.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/src/Mount/Mount.c b/src/Mount/Mount.c index 473372e1..13c353fa 100644 --- a/src/Mount/Mount.c +++ b/src/Mount/Mount.c @@ -9352,7 +9352,7 @@ static DWORD WINAPI SystemFavoritesServiceCtrlHandler ( DWORD dwControl, case SERVICE_CONTROL_PRESHUTDOWN: SystemFavoritesServiceSetStatus (SERVICE_STOP_PENDING); - if (BootEncObj) + if (BootEncObj && BootEncStatus.DriveMounted && BootEncObj->GetSystemDriveConfiguration().SystemPartition.IsGPT) { try { @@ -9383,11 +9383,10 @@ static DWORD WINAPI SystemFavoritesServiceCtrlHandler ( DWORD dwControl, DEV_BROADCAST_HDR* pHdr = (DEV_BROADCAST_HDR *) lpEventData; if (pHdr->dbch_devicetype != DBT_DEVTYP_VOLUME && pHdr->dbch_devicetype != DBT_DEVTYP_HANDLE) { - SystemFavoritesServiceLogInfo (L"SERVICE_CONTROL_DEVICEEVENT - DBT_DEVICEARRIVAL received"); - if (ReadDriverConfigurationFlags() & VC_DRIVER_CONFIG_CLEAR_KEYS_ON_NEW_DEVICE_INSERTION) { BOOL bClearKeys = TRUE; + SystemFavoritesServiceLogInfo (L"SERVICE_CONTROL_DEVICEEVENT - DBT_DEVICEARRIVAL received"); if (pHdr->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) { DEV_BROADCAST_DEVICEINTERFACE* pInf = (DEV_BROADCAST_DEVICEINTERFACE*) pHdr; @@ -9402,13 +9401,9 @@ static DWORD WINAPI SystemFavoritesServiceCtrlHandler ( DWORD dwControl, } if (bClearKeys) - { + { DWORD cbBytesReturned = 0; - BOOL bResult = DeviceIoControl (hDriver, VC_IOCTL_EMERGENCY_CLEAR_ALL_KEYS, NULL, 0, NULL, 0, &cbBytesReturned, NULL); - if (bResult) - SystemFavoritesServiceLogInfo (L"New device insertion detected - encryption keys cleared"); - else - SystemFavoritesServiceLogInfo (L"New device insertion detected - failed to clear encryption keys"); + DeviceIoControl (hDriver, VC_IOCTL_EMERGENCY_CLEAR_ALL_KEYS, NULL, 0, NULL, 0, &cbBytesReturned, NULL); } } } @@ -9445,8 +9440,8 @@ static VOID WINAPI SystemFavoritesServiceMain (DWORD argc, LPTSTR *argv) memset (&SystemFavoritesServiceStatus, 0, sizeof (SystemFavoritesServiceStatus)); SystemFavoritesServiceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS; SystemFavoritesServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP; - if (IsOSAtLeast (WIN_VISTA) && BootEncObj && BootEncStatus.DriveMounted && BootEncObj->GetSystemDriveConfiguration().SystemPartition.IsGPT) - SystemFavoritesServiceStatus.dwControlsAccepted |= SERVICE_ACCEPT_PRESHUTDOWN; + if (IsOSAtLeast (WIN_VISTA)) + SystemFavoritesServiceStatus.dwControlsAccepted |= SERVICE_ACCEPT_PRESHUTDOWN; ZeroMemory (&hdr, sizeof(hdr)); hdr.dbcc_size = sizeof (hdr); |