diff options
Diffstat (limited to 'src/thread_parker/windows/waitaddress.rs')
-rw-r--r-- | src/thread_parker/windows/waitaddress.rs | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/src/thread_parker/windows/waitaddress.rs b/src/thread_parker/windows/waitaddress.rs index dde0db7..ef6cb44 100644 --- a/src/thread_parker/windows/waitaddress.rs +++ b/src/thread_parker/windows/waitaddress.rs @@ -32,24 +32,21 @@ pub struct WaitAddress { impl WaitAddress { #[allow(non_snake_case)] pub fn create() -> Option<WaitAddress> { - unsafe { - // MSDN claims that that WaitOnAddress and WakeByAddressSingle are - // located in kernel32.dll, but they are lying... - let synch_dll = - GetModuleHandleA(b"api-ms-win-core-synch-l1-2-0.dll\0".as_ptr()); - if synch_dll == 0 { - return None; - } + // MSDN claims that that WaitOnAddress and WakeByAddressSingle are + // located in kernel32.dll, but they are lying... + let synch_dll = unsafe { GetModuleHandleA(b"api-ms-win-core-synch-l1-2-0.dll\0".as_ptr()) }; + if synch_dll == 0 { + return None; + } - let WaitOnAddress = GetProcAddress(synch_dll, b"WaitOnAddress\0".as_ptr())?; - let WakeByAddressSingle = - GetProcAddress(synch_dll, b"WakeByAddressSingle\0".as_ptr())?; + let WaitOnAddress = unsafe { GetProcAddress(synch_dll, b"WaitOnAddress\0".as_ptr())? }; + let WakeByAddressSingle = + unsafe { GetProcAddress(synch_dll, b"WakeByAddressSingle\0".as_ptr())? }; - Some(WaitAddress { - WaitOnAddress: mem::transmute(WaitOnAddress), - WakeByAddressSingle: mem::transmute(WakeByAddressSingle), - }) - } + Some(WaitAddress { + WaitOnAddress: unsafe { mem::transmute(WaitOnAddress) }, + WakeByAddressSingle: unsafe { mem::transmute(WakeByAddressSingle) }, + }) } #[inline] |