Skip to content

Commit 9c0588a

Browse files
LinusUevmar
authored andcommitted
Implement kernel32.dll VirtualUnlock
1 parent 7cd1363 commit 9c0588a

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

win32/dll/kernel32/src/builtin.rs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6152,6 +6152,30 @@ mod wrappers {
61526152
result.into()
61536153
}
61546154
}
6155+
pub unsafe fn VirtualUnlock(sys: &mut dyn System, stack_args: u32) -> ABIReturn {
6156+
use kernel32::memory::*;
6157+
unsafe {
6158+
let mem = sys.mem().detach();
6159+
let lpAddress = <u32>::from_stack(mem, stack_args + 0u32);
6160+
let dwSize = <u32>::from_stack(mem, stack_args + 4u32);
6161+
let __trace_record = if trace::enabled("kernel32/memory") {
6162+
trace::Record::new(
6163+
kernel32::memory::VirtualUnlock_pos,
6164+
"kernel32/memory",
6165+
"VirtualUnlock",
6166+
&[("lpAddress", &lpAddress), ("dwSize", &dwSize)],
6167+
)
6168+
.enter()
6169+
} else {
6170+
None
6171+
};
6172+
let result = kernel32::memory::VirtualUnlock(sys, lpAddress, dwSize);
6173+
if let Some(mut __trace_record) = __trace_record {
6174+
__trace_record.exit(&result);
6175+
}
6176+
result.into()
6177+
}
6178+
}
61556179
pub unsafe fn WaitForMultipleObjects(
61566180
sys: &mut dyn System,
61576181
stack_args: u32,
@@ -6832,7 +6856,7 @@ mod wrappers {
68326856
}
68336857
}
68346858
}
6835-
const SHIMS: [Shim; 247usize] = [
6859+
const SHIMS: [Shim; 248usize] = [
68366860
Shim {
68376861
name: "AcquireSRWLockExclusive",
68386862
func: Handler::Sync(wrappers::AcquireSRWLockExclusive),
@@ -7729,6 +7753,10 @@ const SHIMS: [Shim; 247usize] = [
77297753
name: "VirtualQuery",
77307754
func: Handler::Sync(wrappers::VirtualQuery),
77317755
},
7756+
Shim {
7757+
name: "VirtualUnlock",
7758+
func: Handler::Sync(wrappers::VirtualUnlock),
7759+
},
77327760
Shim {
77337761
name: "WaitForMultipleObjects",
77347762
func: Handler::Async(wrappers::WaitForMultipleObjects),

win32/dll/kernel32/src/memory.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,11 @@ pub fn VirtualLock(sys: &dyn System, lpAddress: u32, dwSize: u32) -> bool {
396396
true // success
397397
}
398398

399+
#[win32_derive::dllexport]
400+
pub fn VirtualUnlock(sys: &dyn System, lpAddress: u32, dwSize: u32) -> bool {
401+
true // success
402+
}
403+
399404
#[win32_derive::dllexport]
400405
pub fn GetProcessHeap(sys: &dyn System) -> u32 {
401406
sys.memory().process_heap.addr

0 commit comments

Comments
 (0)