Struct HPROCESS

Source
pub struct HPROCESS(/* private fields */);
Available on crate feature kernel only.
Expand description

Handle to a process. Originally just a HANDLE.

Implementations§

Source§

impl HPROCESS

Source

pub fn OpenProcessToken( &self, desired_access: TOKEN, ) -> SysResult<CloseHandleGuard<HACCESSTOKEN>>

Available on crate feature advapi only.

OpenProcessToken function.

§Examples
use winsafe::{self as w, prelude::*, co};

let htoken = w::HPROCESS::GetCurrentProcess()
    .OpenProcessToken(co::TOKEN::ADJUST_PRIVILEGES | co::TOKEN::QUERY)?;
Source§

impl HPROCESS

Source

pub const unsafe fn from_ptr(p: *mut c_void) -> Self

Constructs a new handle object by wrapping a pointer.

This method can be used as an escape hatch to interoperate with other libraries.

§Safety

Be sure the pointer has the correct type and isn’t owned by anyone else, otherwise you may cause memory access violations.

Source

pub const unsafe fn raw_copy(&self) -> Self

Returns a raw copy of the underlying handle pointer.

§Safety

As the name implies, raw_copy returns a raw copy of the handle, so closing one of the copies won’t close the others. This means a handle can be used after it has been closed, what can lead to errors and undefined behavior. Even worse: sometimes Windows reuses handle values, so you can call a method on a completely different handle type, what can be catastrophic.

However, in some cases the Windows API demands a copy of the handle – raw_copy is an escape hatch to fill this gap.

Source

pub const unsafe fn as_mut(&mut self) -> &mut *mut c_void

Returns a mutable reference to the underlying raw pointer.

This method can be used as an escape hatch to interoperate with other libraries.

§Safety

This method exposes the raw pointer used by raw Windows calls. It’s an opaque pointer to an internal Windows structure, and no dereferencings should be attempted.

Source

pub const fn ptr(&self) -> *mut c_void

Returns the underlying raw pointer.

This method exposes the raw pointer used by raw Windows calls. It’s an opaque pointer to an internal Windows structure, and no dereferencings should be attempted.

This method can be used as an escape hatch to interoperate with other libraries.

Source§

impl HPROCESS

Source

pub fn CheckRemoteDebuggerPresent(&self) -> SysResult<bool>

Source

pub fn FlushInstructionCache( &self, base_address: *mut c_void, size: usize, ) -> SysResult<()>

Source

pub fn GetCurrentProcess() -> HPROCESS

Source

pub fn GetExitCodeProcess(&self) -> SysResult<u32>

Source

pub fn GetGuiResources(&self, flags: GR) -> SysResult<u32>

GetGuiResources function.

Source

pub fn GetPriorityClass(&self) -> SysResult<PRIORITY_CLASS>

GetPriorityClass function.

Source

pub fn GetProcessHandleCount(&self) -> SysResult<u32>

Source

pub fn GetProcessId(&self) -> SysResult<u32>

GetProcessId function.

Source

pub fn GetProcessTimes( &self, ) -> SysResult<(FILETIME, FILETIME, FILETIME, FILETIME)>

GetProcessTimes function.

Returns, respectively:

  1. creation time;
  2. exit time;
  3. kernel time;
  4. user time.
§Examples
use winsafe::{self as w, prelude::*, co};

let hprocess: w::HPROCESS; // initialized somewhere

let (creation, exit, kernel, user) = hprocess.GetProcessTimes()?;
Source

pub fn IsProcessCritical(&self) -> SysResult<bool>

Source

pub fn IsWow64Process(&self) -> SysResult<bool>

IsWow64Process function.

Source

pub fn OpenProcess( desired_access: PROCESS, inherit_handle: bool, process_id: u32, ) -> SysResult<CloseHandleGuard<HPROCESS>>

OpenProcess function.

This method will return ERROR::INVALID_PARAMETER if you try to open a system process.

Source

pub fn QueryFullProcessImageName( &self, flags: PROCESS_NAME, ) -> SysResult<String>

Source

pub fn QueryProcessAffinityUpdateMode(&self) -> SysResult<PROCESS_AFFINITY>

Source

pub fn QueryProcessCycleTime(&self) -> SysResult<u64>

Source

pub fn ReadProcessMemory( &self, base_address: *mut c_void, buffer: &mut [u8], ) -> SysResult<usize>

ReadProcessMemory function.

Reads at most buffer.len() bytes. Returns how many bytes were actually read.

Source

pub fn SetPriorityClass(&self, prority_class: PRIORITY_CLASS) -> SysResult<()>

SetPriorityClass function.

Source

pub fn SetProcessAffinityUpdateMode( &self, flags: PROCESS_AFFINITY, ) -> SysResult<()>

Source

pub fn SetProcessPriorityBoost( &self, disable_priority_boost: bool, ) -> SysResult<()>

Source

pub fn TerminateProcess(&self, exit_code: u32) -> SysResult<()>

TerminateProcess function.

Source

pub fn VirtualQueryEx( &self, address: Option<*mut c_void>, ) -> SysResult<MEMORY_BASIC_INFORMATION>

VirtualQueryEx function.

Source

pub fn WaitForSingleObject(&self, milliseconds: Option<u32>) -> SysResult<WAIT>

Source

pub fn WriteProcessMemory( &self, base_address: *mut c_void, buffer: &[u8], ) -> SysResult<usize>

WriteProcessMemory function.

Returns how many bytes were actually written.

Source§

impl HPROCESS

Source

pub fn EmptyWorkingSet(&self) -> SysResult<()>

Available on crate feature psapi only.

EmptyWorkingSet function.

Source

pub fn EnumProcessModules(&self) -> SysResult<Vec<HINSTANCE>>

Available on crate feature psapi only.
Source

pub fn GetMappedFileName(&self, address: *mut c_void) -> SysResult<String>

Available on crate feature psapi only.
Source

pub fn GetModuleBaseName( &self, hmodule: Option<&HINSTANCE>, ) -> SysResult<String>

Available on crate feature psapi only.
Source

pub fn GetModuleFileNameEx( &self, hmodule: Option<&HINSTANCE>, ) -> SysResult<String>

Available on crate feature psapi only.
Source

pub fn GetModuleInformation( &self, hmodule: Option<&HINSTANCE>, ) -> SysResult<MODULEINFO>

Available on crate feature psapi only.
Source

pub fn GetProcessImageFileName(&self) -> SysResult<String>

Available on crate feature psapi only.
Source

pub fn GetProcessMemoryInfo(&self) -> SysResult<PROCESS_MEMORY_COUNTERS_EX>

Available on crate feature psapi only.
Source§

impl HPROCESS

Source

pub unsafe fn SetUserObjectInformation<T>( &self, index: UOI, pv_info: &mut T, ) -> SysResult<()>

Available on crate feature user only.

SetUserObjectInformation function.

§Safety

The pv_info type varies according to index. If you set it wrong, you’re likely to cause a buffer overrun.

Source

pub fn WaitForInputIdle(&self, milliseconds: u32) -> SysResult<SuccessTimeout>

Available on crate feature user only.

WaitForInputIdle function.

Trait Implementations§

Source§

impl Debug for HPROCESS

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for HPROCESS

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Handle for HPROCESS

Source§

const NULL: Self

The null, uninitialized handle; equals to 0.
Source§

const INVALID: Self

The invalid handle; equals to -1. Read more
Source§

unsafe fn from_ptr(p: *mut c_void) -> Self

Constructs a new handle object by wrapping a pointer. Read more
Source§

unsafe fn raw_copy(&self) -> Self

Returns a raw copy of the underlying handle pointer. Read more
Source§

unsafe fn as_mut(&mut self) -> &mut *mut c_void

Returns a mutable reference to the underlying raw pointer. Read more
Source§

fn ptr(&self) -> *mut c_void

Returns the underlying raw pointer. Read more
Source§

fn as_opt(&self) -> Option<&Self>

Returns None if the handle is null or invalid, otherwise returns Some(&self). Read more
Source§

impl Hash for HPROCESS

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl LowerHex for HPROCESS

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for HPROCESS

Source§

fn eq(&self, other: &HPROCESS) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

const fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl UpperHex for HPROCESS

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for HPROCESS

Source§

impl Send for HPROCESS

Source§

impl StructuralPartialEq for HPROCESS

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.