From 3bacd8a41677feaa401c744a31a71eb4b18114aa Mon Sep 17 00:00:00 2001 From: messense Date: Thu, 24 Nov 2022 23:08:12 +0800 Subject: [PATCH] Switch from winapi to windows-sys --- Cargo.toml | 2 +- src/windows.rs | 22 ++++++++-------------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 9830681..204c6cb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,7 @@ edition = "2018" libc = "0.2.62" [target.'cfg(windows)'.dependencies] -winapi = { version = "0.3.5", features = ["handleapi", "namedpipeapi", "processthreadsapi", "winnt"] } +windows-sys = { version = "0.42.0", features = ["Win32_Foundation", "Win32_System_Pipes", "Win32_Security", "Win32_System_Threading"] } [features] # Uses I/O safety features introduced in Rust 1.63 diff --git a/src/windows.rs b/src/windows.rs index 93ad29c..952b0c4 100644 --- a/src/windows.rs +++ b/src/windows.rs @@ -4,26 +4,20 @@ use std::fs::File; use std::io; use std::os::windows::prelude::*; use std::ptr; -use winapi::shared::minwindef::BOOL; -use winapi::shared::ntdef::{HANDLE, PHANDLE}; -use winapi::um::handleapi::DuplicateHandle; -use winapi::um::namedpipeapi; -use winapi::um::processthreadsapi::GetCurrentProcess; -use winapi::um::winnt::DUPLICATE_SAME_ACCESS; +use windows_sys::Win32::Foundation::{ + DuplicateHandle, BOOL, DUPLICATE_SAME_ACCESS, HANDLE, INVALID_HANDLE_VALUE, +}; +use windows_sys::Win32::System::Pipes::CreatePipe; +use windows_sys::Win32::System::Threading::GetCurrentProcess; pub(crate) fn pipe() -> io::Result<(PipeReader, PipeWriter)> { - let mut read_pipe: HANDLE = ptr::null_mut(); - let mut write_pipe: HANDLE = ptr::null_mut(); + let mut read_pipe = INVALID_HANDLE_VALUE; + let mut write_pipe = INVALID_HANDLE_VALUE; let ret = unsafe { // NOTE: These pipes do not support IOCP. We might want to emulate // anonymous pipes with CreateNamedPipe, as Rust's stdlib does. - namedpipeapi::CreatePipe( - &mut read_pipe as PHANDLE, - &mut write_pipe as PHANDLE, - ptr::null_mut(), - 0, - ) + CreatePipe(&mut read_pipe, &mut write_pipe, ptr::null_mut(), 0) }; if ret == 0 {