Macro for dynamically loading windows dll functions
```rust use { windowsdll::dll, winapi::shared::{ minwindef::ULONG, ntdef::{NTSTATUS, NTSUCCESS, WCHAR}, }, };
struct OSVERSIONINFOW { dwOSVersionInfoSize: ULONG, dwMajorVersion: ULONG, dwMinorVersion: ULONG, dwBuildNumber: ULONG, dwPlatformId: ULONG, szCSDVersion: [WCHAR; 128], }
extern "system" { #[allow(nonsnakecase)] fn RtlGetVersion(lpVersionInformation: *mut OSVERSIONINFOW) -> NTSTATUS; }
fn osversioninfo() -> OSVERSIONINFOW { unsafe { let mut vi = OSVERSIONINFOW { dwOSVersionInfoSize: 0, dwMajorVersion: 0, dwMinorVersion: 0, dwBuildNumber: 0, dwPlatformId: 0, szCSDVersion: [0; 128], };
let status = RtlGetVersion(&mut vi as _);
if NT_SUCCESS(status) {
vi
} else {
panic!()
}
}
} ```
```rust
extern "system" { #[allow(nonsnakecase)] #[fallible] fn RtlGetVersion(lpVersionInformation: *mut OSVERSIONINFOW) -> NTSTATUS; }
fn osversioninfo() -> Result
let status = RtlGetVersion(&mut vi as _)?;
if NT_SUCCESS(status) {
Ok(vi)
} else {
panic!()
}
}
} ```
```rust
extern "system" { #[linkname = "RtlGetVersion"] fn rtlgetversion(lpversion_information: *mut OSVERSIONINFOW) -> NTSTATUS; } ```
```rust
extern "system" { #[linkordinal = 133] fn allowdarkmodefor_window(hwnd: HWND, allow: BOOL) -> BOOL; } ```