diff options
author | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2020-07-01 17:11:07 +0200 |
---|---|---|
committer | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2020-07-02 02:20:42 +0200 |
commit | 3f587a362943a59455c6b177829118fa87e6b7b0 (patch) | |
tree | 086729feb3dafaf3c4256537ba978190c6c1fe5b /src/Driver | |
parent | 5f04e5abd0867485056515854b9ecc3f24c4ae81 (diff) | |
download | VeraCrypt-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.c | 8 | ||||
-rw-r--r-- | src/Driver/Ntdriver.h | 2 |
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); |