authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-03-30 20:54:46+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-03-30 21:08:31+02:00
log349349fa01f77fe3bf2b57dc821f889e2e869004
treef4fd68878f8f30866863526cc671ec79d2837ff3
parent216badef0bd90c6353bf32bd927e2c6d36b3ebf6

std: simplify VirtualProtectEx and fix ntdll signature


2 files changed, 5 insertions(+), 4 deletions(-)

lib/std/os/windows.zig+4-3
...@@ -1514,7 +1514,8 @@ pub fn VirtualProtect(lpAddress: ?LPVOID, dwSize: SIZE_T, flNewProtect: DWORD, l...@@ -1514,7 +1514,8 @@ pub fn VirtualProtect(lpAddress: ?LPVOID, dwSize: SIZE_T, flNewProtect: DWORD, l
1514 }1514 }
1515}1515}
15161516
1517pub fn VirtualProtectEx(handle: HANDLE, addr: ?LPVOID, size: usize, new_prot: DWORD, old_prot: ?*DWORD) VirtualProtectError!void {1517pub fn VirtualProtectEx(handle: HANDLE, addr: ?LPVOID, size: SIZE_T, new_prot: DWORD) VirtualProtectError!DWORD {
1518 var old_prot: DWORD = undefined;
1518 var out_addr = addr;1519 var out_addr = addr;
1519 var out_size = size;1520 var out_size = size;
1520 switch (ntdll.NtProtectVirtualMemory(1521 switch (ntdll.NtProtectVirtualMemory(
...@@ -1522,9 +1523,9 @@ pub fn VirtualProtectEx(handle: HANDLE, addr: ?LPVOID, size: usize, new_prot: DW...@@ -1522,9 +1523,9 @@ pub fn VirtualProtectEx(handle: HANDLE, addr: ?LPVOID, size: usize, new_prot: DW
1522 &out_addr,1523 &out_addr,
1523 &out_size,1524 &out_size,
1524 new_prot,1525 new_prot,
1525 old_prot,1526 &old_prot,
1526 )) {1527 )) {
1527 .SUCCESS => {},1528 .SUCCESS => return old_prot,
1528 .INVALID_ADDRESS => return error.InvalidAddress,1529 .INVALID_ADDRESS => return error.InvalidAddress,
1529 // TODO: map errors1530 // TODO: map errors
1530 else => |rc| return std.os.windows.unexpectedStatus(rc),1531 else => |rc| return std.os.windows.unexpectedStatus(rc),
lib/std/os/windows/ntdll.zig+1-1
...@@ -283,5 +283,5 @@ pub extern "ntdll" fn NtProtectVirtualMemory(...@@ -283,5 +283,5 @@ pub extern "ntdll" fn NtProtectVirtualMemory(
283 BaseAddress: *?PVOID,283 BaseAddress: *?PVOID,
284 NumberOfBytesToProtect: *SIZE_T,284 NumberOfBytesToProtect: *SIZE_T,
285 NewAccessProtection: ULONG,285 NewAccessProtection: ULONG,
286 OldAccessProtection: ?*ULONG,286 OldAccessProtection: *ULONG,
287) callconv(WINAPI) NTSTATUS;287) callconv(WINAPI) NTSTATUS;