Fix 32-bit thread context API selection in DllInjector
Because DllInjector enforces matching host/target bitness, a 32-bit caller always handles a 32-bit target. The correct API is native GetThreadContext/SetThreadContext with Context32; the Wow64 APIs are only for 64-bit processes inspecting WOW64 targets, which never happens here. - Collapse the 32-bit path to always use GetThreadContext/SetThreadContext. - Remove the now-unused Wow64GetThreadContext/Wow64SetThreadContext declarations. - Update Context32 doc comment to describe the x86 usage. - ExternalReader access guard now also accepts QueryLimitedInformation. Tests: 207 passing, 4 skipped.
This commit is contained in:
@@ -37,10 +37,11 @@ public sealed class ExternalReader : MemoryBase
|
||||
public ExternalReader(System.Diagnostics.Process process, ProcessAccess desiredAccess = DefaultAccess)
|
||||
{
|
||||
_processId = process.Id;
|
||||
if ((desiredAccess & ProcessAccess.QueryInformation) == 0)
|
||||
const ProcessAccess queryAccess = ProcessAccess.QueryInformation | ProcessAccess.QueryLimitedInformation;
|
||||
if ((desiredAccess & queryAccess) == 0)
|
||||
{
|
||||
throw new ArgumentException(
|
||||
"ExternalReader requires ProcessAccess.QueryInformation to determine target bitness.",
|
||||
"ExternalReader requires ProcessAccess.QueryInformation or ProcessAccess.QueryLimitedInformation to determine target bitness.",
|
||||
nameof(desiredAccess));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user