VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Driver
diff options
context:
space:
mode:
authorMounir IDRASSI <mounir.idrassi@idrix.fr>2020-07-01 17:11:07 +0200
committerMounir IDRASSI <mounir.idrassi@idrix.fr>2020-07-02 02:20:42 +0200
commit3f587a362943a59455c6b177829118fa87e6b7b0 (patch)
tree086729feb3dafaf3c4256537ba978190c6c1fe5b /src/Driver
parent5f04e5abd0867485056515854b9ecc3f24c4ae81 (diff)
downloadVeraCrypt-3f587a362943a59455c6b177829118fa87e6b7b0.tar.gz
VeraCrypt-3f587a362943a59455c6b177829118fa87e6b7b0.zip
Windows: Don't use API for Processor Groups support if there is only 1 CPU group in the system. This can fix slowness issue observed on some PCs with AMD CPUs.
Diffstat (limited to 'src/Driver')
-rw-r--r--src/Driver/Ntdriver.c8
-rw-r--r--src/Driver/Ntdriver.h2
2 files changed, 8 insertions, 2 deletions
diff --git a/src/Driver/Ntdriver.c b/src/Driver/Ntdriver.c
index 188c6647..957853cd 100644
--- a/src/Driver/Ntdriver.c
+++ b/src/Driver/Ntdriver.c
@@ -4491,7 +4491,7 @@ NTSTATUS TCCompleteDiskIrp (PIRP irp, NTSTATUS status, ULONG_PTR information)
}
-size_t GetCpuCount ()
+size_t GetCpuCount (WORD* pGroupCount)
{
size_t cpuCount = 0;
if (KeQueryActiveGroupCountPtr && KeQueryActiveProcessorCountExPtr)
@@ -4501,6 +4501,9 @@ size_t GetCpuCount ()
{
cpuCount += (size_t) KeQueryActiveProcessorCountExPtr (i);
}
+
+ if (pGroupCount)
+ *pGroupCount = groupCount;
}
else
{
@@ -4514,6 +4517,9 @@ size_t GetCpuCount ()
activeCpuMap >>= 1;
}
+
+ if (pGroupCount)
+ *pGroupCount = 1;
}
if (cpuCount == 0)
diff --git a/src/Driver/Ntdriver.h b/src/Driver/Ntdriver.h
index 25ee64e9..47ae49f7 100644
--- a/src/Driver/Ntdriver.h
+++ b/src/Driver/Ntdriver.h
@@ -173,7 +173,7 @@ NTSTATUS TCCompleteIrp (PIRP irp, NTSTATUS status, ULONG_PTR information);
NTSTATUS TCCompleteDiskIrp (PIRP irp, NTSTATUS status, ULONG_PTR information);
NTSTATUS ProbeRealDriveSize (PDEVICE_OBJECT driveDeviceObject, LARGE_INTEGER *driveSize);
BOOL UserCanAccessDriveDevice ();
-size_t GetCpuCount ();
+size_t GetCpuCount (WORD* pGroupCount);
USHORT GetCpuGroup (size_t index);
void SetThreadCpuGroupAffinity (USHORT index);
void EnsureNullTerminatedString (wchar_t *str, size_t maxSizeInBytes);