Skip to content

Commit 7cd1363

Browse files
LinusUevmar
authored andcommitted
Implement kernel32.dll VirtualLock
1 parent f55b5a0 commit 7cd1363

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
@@ -6061,6 +6061,30 @@ mod wrappers {
60616061
result.into()
60626062
}
60636063
}
6064+
pub unsafe fn VirtualLock(sys: &mut dyn System, stack_args: u32) -> ABIReturn {
6065+
use kernel32::memory::*;
6066+
unsafe {
6067+
let mem = sys.mem().detach();
6068+
let lpAddress = <u32>::from_stack(mem, stack_args + 0u32);
6069+
let dwSize = <u32>::from_stack(mem, stack_args + 4u32);
6070+
let __trace_record = if trace::enabled("kernel32/memory") {
6071+
trace::Record::new(
6072+
kernel32::memory::VirtualLock_pos,
6073+
"kernel32/memory",
6074+
"VirtualLock",
6075+
&[("lpAddress", &lpAddress), ("dwSize", &dwSize)],
6076+
)
6077+
.enter()
6078+
} else {
6079+
None
6080+
};
6081+
let result = kernel32::memory::VirtualLock(sys, lpAddress, dwSize);
6082+
if let Some(mut __trace_record) = __trace_record {
6083+
__trace_record.exit(&result);
6084+
}
6085+
result.into()
6086+
}
6087+
}
60646088
pub unsafe fn VirtualProtect(sys: &mut dyn System, stack_args: u32) -> ABIReturn {
60656089
use kernel32::memory::*;
60666090
unsafe {
@@ -6808,7 +6832,7 @@ mod wrappers {
68086832
}
68096833
}
68106834
}
6811-
const SHIMS: [Shim; 246usize] = [
6835+
const SHIMS: [Shim; 247usize] = [
68126836
Shim {
68136837
name: "AcquireSRWLockExclusive",
68146838
func: Handler::Sync(wrappers::AcquireSRWLockExclusive),
@@ -7693,6 +7717,10 @@ const SHIMS: [Shim; 246usize] = [
76937717
name: "VirtualFree",
76947718
func: Handler::Sync(wrappers::VirtualFree),
76957719
},
7720+
Shim {
7721+
name: "VirtualLock",
7722+
func: Handler::Sync(wrappers::VirtualLock),
7723+
},
76967724
Shim {
76977725
name: "VirtualProtect",
76987726
func: Handler::Sync(wrappers::VirtualProtect),

win32/dll/kernel32/src/memory.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,11 @@ pub fn VirtualProtect(
391391
true // success
392392
}
393393

394+
#[win32_derive::dllexport]
395+
pub fn VirtualLock(sys: &dyn System, lpAddress: u32, dwSize: u32) -> bool {
396+
true // success
397+
}
398+
394399
#[win32_derive::dllexport]
395400
pub fn GetProcessHeap(sys: &dyn System) -> u32 {
396401
sys.memory().process_heap.addr

0 commit comments

Comments
 (0)