рдорд╛рдЗрдХреНрд░реЛрд╕рдлреНрдЯрд▓реЗ рд╡рд┐рдиреНрдбреЛрдЬ рдПрдкреАрдЖрдИрдХреЛ рд▓рд╛рдЧрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд╕реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬрд╛рд░реА рдЧрд░реЗрдХреЛ рдЫ

рдкреБрд╕реНрддрдХрд╛рд▓рдпрд▓рд╛рдИ MIT рд▓рд╛рдЗрд╕реЗрдиреНрд╕ рдЕрдиреНрддрд░реНрдЧрдд рд░рд╕реНрдЯ рдХреНрд░реЗрдЯрдХреЛ рд░реВрдкрдорд╛ рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬреБрди рдпрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:

[рдирд┐рд░реНрднрд░рддрд╛] рд╡рд┐рдиреНрдбреЛрдЬ = "реж.реи.рез"

[рдирд┐рд░реНрдорд╛рдг-рдирд┐рд░реНрднрд░рддрд╛] рд╡рд┐рдиреНрдбреЛрдЬ = "реж.реи.рез"

рдпрд╕ рдкрдЫрд┐, build.rs рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯрдорд╛, рддрдкрд╛рдЗрдБ рддрдкрд╛рдЗрдБрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

fn main() {
windows::build!(
windows::data::xml::dom::*
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}

рдЙрдкрд▓рдмреНрдз рдореЛрдбреНрдпреБрд▓рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХрд╛рдЧрдЬрд╛рдд рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ docs.rs.

рдирдореВрдирд╛ рдХреЛрдб:

рдореЛрдб рдмрд╛рдЗрдиреНрдбрд┐рдЩреНрд╕ {
::windows::include_bindings!();
}

рдмрд╛рдЗрдиреНрдбрд┐рдЩрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};

fn main() -> windows::Result<()> {
let doc = XmlDocument::new()?;
doc.load_xml(" рдирдорд╕реНрдХрд╛рд░ рд╕рдВрд╕рд╛рд░ ") ?;

let root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "рдирдорд╕реНрддреЗ рд╕рдВрд╕рд╛рд░");

рдЕрд╕реБрд░рдХреНрд╖рд┐рдд {
рдШрдЯрдирд╛ рджрд┐рдиреБрд╣реЛрд╕реН = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

SetEvent(рдШрдЯрдирд╛) рдареАрдХ рдЫ()?;
WaitForSingleObject(рдШрдЯрдирд╛, 0);
CloseHandle(рдШрдЯрдирд╛) рдареАрдХ рдЫ()?;
}

рдард┐рдХ рдЫ(())
}

рдХреЗрд╣рд┐ рдкреНрд░рдХрд╛рд░реНрдп рдХрд▓рд╣рд░реВрд▓реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ рдХрд┐рдирднрдиреЗ рдпреА рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд░рд╕реНрдЯ рдХрдиреНрднреЗрдиреНрд╕рдирд╣рд░реВрдорд╛ рдЕрдиреБрдХреВрд▓рди рдирдЧрд░реА рдЬрд╕реНрддреИ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдиреНрдЫред рдХреНрд░реЗрдЯ рдПрдЙрдЯреИ рд╕рд┐рджреНрдзрд╛рдиреНрдд рдорд╛ рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдЫред libc, рдЬрд╕рд▓реЗ libc рдкрд╣реБрдБрдЪ рдЧрд░реНрди рдЖрдзрд╛рд░рднреВрдд рдХреНрд░реЗрдЯрдХреЛ рд░реВрдкрдорд╛ рдХрд╛рд░реНрдп рдЧрд░реНрджрдЫ рд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдЗрдиреНрдЯрд░рдлреЗрд╕рдХреЛ рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдЖрдзрд╛рд░рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдврд╛рдБрдЪрд╛ рднрд┐рддреНрд░ рдирд┐рд░реНрдорд╛рдг рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ Win32 рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛, рдЬреБрди рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ API рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрди рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рд╣реЛред рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдкрд╣рд┐рд▓реЛ рдЪрд░рдгрдорд╛ рдореЗрдЯрд╛рдбрд╛рдЯрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдЖрдзрд╛рд░рд┐рдд рджреЛрд╕реНрд░реЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп - C#/Win32ред рдорд╛рдЗрдХреНрд░реЛрд╕рдлреНрдЯрд▓реЗ рдкрдирд┐ рдХрд╛рдо рд╕реБрд░реБ рдЧрд░реНрдиреЗ рдШреЛрд╖рдгрд╛ рдЧрд░реЗрдХреЛ рдЫ C++ рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдВрд╕реНрдХрд░рдг, рдЬрд╕рд▓реЗ рднрд╛рд╖рд╛рдХреЛ рдЖрдзреБрдирд┐рдХ рд╢реИрд▓реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред

рд╕реНрд░реЛрдд: linux.org.ru