std\sys\net\hostname/
windows.rs1use crate::ffi::OsString;
2use crate::io::Result;
3use crate::mem::MaybeUninit;
4use crate::os::windows::ffi::OsStringExt;
5use crate::sys::pal::c;
6use crate::sys::pal::winsock::{self, cvt};
7
8pub fn hostname() -> Result<OsString> {
9 winsock::startup();
10
11 let mut buffer = [const { MaybeUninit::<u16>::uninit() }; 256];
14 cvt(unsafe { c::GetHostNameW(buffer.as_mut_ptr().cast(), buffer.len() as i32) })?;
16 let len = unsafe { c::lstrlenW(buffer.as_ptr().cast()) };
20 let name = unsafe { buffer[..len as usize].assume_init_ref() };
23 Ok(OsString::from_wide(name))
24}