diff --git a/win32/dll/kernel32.dll b/win32/dll/kernel32.dll index 73e873ca..d97e52b8 100755 Binary files a/win32/dll/kernel32.dll and b/win32/dll/kernel32.dll differ diff --git a/win32/src/winapi/builtin.rs b/win32/src/winapi/builtin.rs index ef5b0845..d98c155b 100644 --- a/win32/src/winapi/builtin.rs +++ b/win32/src/winapi/builtin.rs @@ -2908,6 +2908,12 @@ pub mod kernel32 { let hFile = ::from_stack(mem, esp + 4u32); winapi::kernel32::SetEndOfFile(machine, hFile).to_raw() } + pub unsafe fn SetEnvironmentVariableA(machine: &mut Machine, esp: u32) -> u32 { + let mem = machine.mem().detach(); + let name = >::from_stack(mem, esp + 4u32); + let value = >::from_stack(mem, esp + 8u32); + winapi::kernel32::SetEnvironmentVariableA(machine, name, value).to_raw() + } pub unsafe fn SetEvent(machine: &mut Machine, esp: u32) -> u32 { let mem = machine.mem().detach(); let hEvent = >::from_stack(mem, esp + 4u32); @@ -3931,6 +3937,12 @@ pub mod kernel32 { stack_consumed: 4u32, is_async: false, }; + pub const SetEnvironmentVariableA: Shim = Shim { + name: "SetEnvironmentVariableA", + func: impls::SetEnvironmentVariableA, + stack_consumed: 8u32, + is_async: false, + }; pub const SetEvent: Shim = Shim { name: "SetEvent", func: impls::SetEvent, @@ -4148,7 +4160,7 @@ pub mod kernel32 { is_async: true, }; } - const SHIMS: [Shim; 150usize] = [ + const SHIMS: [Shim; 151usize] = [ shims::AcquireSRWLockExclusive, shims::AcquireSRWLockShared, shims::AddVectoredExceptionHandler, @@ -4263,6 +4275,7 @@ pub mod kernel32 { shims::SetConsoleCtrlHandler, shims::SetCurrentDirectoryA, shims::SetEndOfFile, + shims::SetEnvironmentVariableA, shims::SetEvent, shims::SetFileAttributesA, shims::SetFilePointer, diff --git a/win32/src/winapi/kernel32/misc.rs b/win32/src/winapi/kernel32/misc.rs index f1cb07ee..decaeb34 100644 --- a/win32/src/winapi/kernel32/misc.rs +++ b/win32/src/winapi/kernel32/misc.rs @@ -98,6 +98,15 @@ pub fn GetEnvironmentVariableW( false } +#[win32_derive::dllexport] +pub fn SetEnvironmentVariableA( + _machine: &mut Machine, + name: Option<&str>, + value: Option<&str>, +) -> bool { + true +} + #[derive(Debug, win32_derive::TryFromEnum)] pub enum ProcessorFeature { FLOATING_POINT_PRECISION_ERRATA = 0,