From 101467caf5c14f051556577dea0b50744e294304 Mon Sep 17 00:00:00 2001 From: Kenny Kerr Date: Mon, 28 Aug 2023 16:30:20 -0500 Subject: [PATCH] Fix `BOOLEAN` parameter binding (#2635) --- .../mod/Win32/Foundation/BOOLEAN.rs | 5 ++++ .../src/Windows/Win32/Foundation/mod.rs | 5 ++++ crates/tests/extensions/Cargo.toml | 4 ++++ crates/tests/extensions/tests/bool32.rs | 11 ++++++++- crates/tests/extensions/tests/boolean.rs | 23 ++++++++++++++++++- 5 files changed, 46 insertions(+), 2 deletions(-) diff --git a/crates/libs/bindgen/src/rust/extensions/mod/Win32/Foundation/BOOLEAN.rs b/crates/libs/bindgen/src/rust/extensions/mod/Win32/Foundation/BOOLEAN.rs index dd113d100d..33b32a8d62 100644 --- a/crates/libs/bindgen/src/rust/extensions/mod/Win32/Foundation/BOOLEAN.rs +++ b/crates/libs/bindgen/src/rust/extensions/mod/Win32/Foundation/BOOLEAN.rs @@ -66,3 +66,8 @@ impl ::core::ops::Not for BOOLEAN { } } } +impl ::windows_core::IntoParam for bool { + fn into_param(self) -> ::windows_core::Param { + ::windows_core::Param::Owned(self.into()) + } +} diff --git a/crates/libs/windows/src/Windows/Win32/Foundation/mod.rs b/crates/libs/windows/src/Windows/Win32/Foundation/mod.rs index 469d329ed0..49f92769eb 100644 --- a/crates/libs/windows/src/Windows/Win32/Foundation/mod.rs +++ b/crates/libs/windows/src/Windows/Win32/Foundation/mod.rs @@ -21677,6 +21677,11 @@ impl ::core::ops::Not for BOOLEAN { } } } +impl ::windows_core::IntoParam for bool { + fn into_param(self) -> ::windows_core::Param { + ::windows_core::Param::Owned(self.into()) + } +} impl NTSTATUS { #[inline] pub const fn is_ok(self) -> bool { diff --git a/crates/tests/extensions/Cargo.toml b/crates/tests/extensions/Cargo.toml index 0d4282c6e4..e9bb7f32d5 100644 --- a/crates/tests/extensions/Cargo.toml +++ b/crates/tests/extensions/Cargo.toml @@ -9,4 +9,8 @@ path = "../../libs/windows" features = [ "Win32_Foundation", "Win32_Security_Cryptography", + "Win32_NetworkManagement_IpHelper", + "Win32_NetworkManagement_Ndis", + "Win32_Networking_WinSock", + "Win32_System_Threading", ] diff --git a/crates/tests/extensions/tests/bool32.rs b/crates/tests/extensions/tests/bool32.rs index e8cb7aec75..e3c5ce17c1 100644 --- a/crates/tests/extensions/tests/bool32.rs +++ b/crates/tests/extensions/tests/bool32.rs @@ -1,4 +1,4 @@ -use windows::Win32::Foundation::*; +use windows::{Win32::Foundation::*, Win32::System::Threading::*}; #[test] fn test() { @@ -21,3 +21,12 @@ fn test() { let error = result.unwrap_err(); assert_eq!(error.code(), E_ACCESSDENIED); } + +#[test] +#[ignore] +fn no_run() { + unsafe { + _ = CreateEventA(None, false, true, None); + _ = CreateEventA(None, BOOL(0), BOOL(1), None); + } +} diff --git a/crates/tests/extensions/tests/boolean.rs b/crates/tests/extensions/tests/boolean.rs index 6b51866b72..06e4c556e2 100644 --- a/crates/tests/extensions/tests/boolean.rs +++ b/crates/tests/extensions/tests/boolean.rs @@ -1,4 +1,4 @@ -use windows::Win32::Foundation::*; +use windows::{Win32::Foundation::*, Win32::NetworkManagement::IpHelper::*}; #[test] fn test() { @@ -21,3 +21,24 @@ fn test() { let error = result.unwrap_err(); assert_eq!(error.code(), E_ACCESSDENIED); } + +#[test] +#[ignore] +fn no_run() { + unsafe { + _ = NotifyUnicastIpAddressChange( + Default::default(), + None, + None, + true, + std::ptr::null_mut(), + ); + _ = NotifyUnicastIpAddressChange( + Default::default(), + None, + None, + BOOLEAN(1), + std::ptr::null_mut(), + ); + } +}