aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-03-30 20:54:46 +0200
committerJakub Konka <kubkon@jakubkonka.com>2023-03-30 21:08:31 +0200
commit349349fa01f77fe3bf2b57dc821f889e2e869004 (patch)
treef4fd68878f8f30866863526cc671ec79d2837ff3 /lib
parent216badef0bd90c6353bf32bd927e2c6d36b3ebf6 (diff)
downloadzig-349349fa01f77fe3bf2b57dc821f889e2e869004.tar.gz
zig-349349fa01f77fe3bf2b57dc821f889e2e869004.zip
std: simplify VirtualProtectEx and fix ntdll signature
Diffstat (limited to 'lib')
-rw-r--r--lib/std/os/windows.zig7
-rw-r--r--lib/std/os/windows/ntdll.zig2
2 files changed, 5 insertions, 4 deletions
diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig
index 97462f6505..1e6f717bb2 100644
--- a/lib/std/os/windows.zig
+++ b/lib/std/os/windows.zig
@@ -1514,7 +1514,8 @@ pub fn VirtualProtect(lpAddress: ?LPVOID, dwSize: SIZE_T, flNewProtect: DWORD, l
}
}
-pub fn VirtualProtectEx(handle: HANDLE, addr: ?LPVOID, size: usize, new_prot: DWORD, old_prot: ?*DWORD) VirtualProtectError!void {
+pub fn VirtualProtectEx(handle: HANDLE, addr: ?LPVOID, size: SIZE_T, new_prot: DWORD) VirtualProtectError!DWORD {
+ var old_prot: DWORD = undefined;
var out_addr = addr;
var out_size = size;
switch (ntdll.NtProtectVirtualMemory(
@@ -1522,9 +1523,9 @@ pub fn VirtualProtectEx(handle: HANDLE, addr: ?LPVOID, size: usize, new_prot: DW
&out_addr,
&out_size,
new_prot,
- old_prot,
+ &old_prot,
)) {
- .SUCCESS => {},
+ .SUCCESS => return old_prot,
.INVALID_ADDRESS => return error.InvalidAddress,
// TODO: map errors
else => |rc| return std.os.windows.unexpectedStatus(rc),
diff --git a/lib/std/os/windows/ntdll.zig b/lib/std/os/windows/ntdll.zig
index 6fb75ae321..a8af39aa4d 100644
--- a/lib/std/os/windows/ntdll.zig
+++ b/lib/std/os/windows/ntdll.zig
@@ -283,5 +283,5 @@ pub extern "ntdll" fn NtProtectVirtualMemory(
BaseAddress: *?PVOID,
NumberOfBytesToProtect: *SIZE_T,
NewAccessProtection: ULONG,
- OldAccessProtection: ?*ULONG,
+ OldAccessProtection: *ULONG,
) callconv(WINAPI) NTSTATUS;