From aa95cfad10de57088ca674d8e1a14049f94ce453 Mon Sep 17 00:00:00 2001 From: Benjamin Oldenburg Date: Fri, 20 Mar 2026 17:22:33 +0700 Subject: [PATCH] winnt.h: fix ARM64 CONTEXT Bvr/Wvr register types MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The fallback CONTEXT struct incorrectly defined Bvr (Breakpoint Value Registers) and Wvr (Watchpoint Value Registers) as DWORD (32-bit) instead of DWORD64 (64-bit). On ARM64: - BCR/WCR (Control Registers) are 32-bit ✓ - BVR/WVR (Value Registers) are 64-bit ✓ This mismatch caused struct size and layout errors, potentially corrupting debug register state when used with Windows debugging APIs. --- win32/include/winapi/winnt.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/win32/include/winapi/winnt.h b/win32/include/winapi/winnt.h index 49217351..27e2895b 100644 --- a/win32/include/winapi/winnt.h +++ b/win32/include/winapi/winnt.h @@ -2117,9 +2117,9 @@ typedef DWORD LCID; DWORD Fpcr; DWORD Fpsr; DWORD Bcr[8]; - DWORD Bvr[8]; + DWORD64 Bvr[8]; DWORD Wcr[2]; - DWORD Wvr[2]; + DWORD64 Wvr[2]; } CONTEXT,*PCONTEXT; #endif