Skip to content

Commit 42dffdb

Browse files
committed
Added things for @XMPPwocky
Signed-off-by: Peter Atashian <retep998@gmail.com>
1 parent cd69c56 commit 42dffdb

File tree

1 file changed

+74
-8
lines changed

1 file changed

+74
-8
lines changed

src/lib.rs

Lines changed: 74 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,11 @@ pub type DWORD64 = __uint64;
225225
pub type PDWORD64 = *mut __uint64;
226226
pub type KAFFINITY = ULONG_PTR;
227227
pub type PKAFFINITY = *mut KAFFINITY;
228+
//-------------------------------------------------------------------------------------------------
228229
// winnt.h
230+
// This module defines the 32-Bit Windows types and constants that are defined by NT, but exposed
231+
// through the Win32 API.
232+
//-------------------------------------------------------------------------------------------------
229233
pub type PVOID = *mut c_void;
230234
pub type PVOID64 = u64; // This is a 64-bit pointer, even when in 32-bit
231235
pub type VOID = c_void;
@@ -434,6 +438,50 @@ pub struct XSAVE_FORMAT { // FIXME align 16
434438
pub XmmRegisters: [M128A, ..16],
435439
pub Reserved4: [BYTE, ..96],
436440
}
441+
#[repr(C)]
442+
pub struct TOKEN_PRIVILEGES {
443+
PrivilegeCount: DWORD,
444+
Privileges: [LUID_AND_ATTRIBUTES, ..0],
445+
}
446+
pub type PTOKEN_PRIVILEGES = *mut TOKEN_PRIVILEGES;
447+
#[repr(C)]
448+
pub struct LUID_AND_ATTRIBUTES {
449+
Luid: LUID,
450+
Attributes: DWORD,
451+
}
452+
pub type PLUID_AND_ATTRIBUTES = *mut LUID_AND_ATTRIBUTES;
453+
pub const DELETE: DWORD = 0x00010000;
454+
pub const READ_CONTROL: DWORD = 0x00020000;
455+
pub const WRITE_DAC: DWORD = 0x00040000;
456+
pub const WRITE_OWNER: DWORD = 0x00080000;
457+
pub const SYNCHRONIZE: DWORD = 0x00100000;
458+
pub const STANDARD_RIGHTS_REQUIRED: DWORD = 0x000F0000;
459+
pub const STANDARD_RIGHTS_READ: DWORD = READ_CONTROL;
460+
pub const STANDARD_RIGHTS_WRITE: DWORD = READ_CONTROL;
461+
pub const STANDARD_RIGHTS_EXECUTE: DWORD = READ_CONTROL;
462+
pub const STANDARD_RIGHTS_ALL: DWORD = 0x001F0000;
463+
pub const SPECIFIC_RIGHTS_ALL: DWORD = 0x0000FFFF;
464+
pub const ACCESS_SYSTEM_SECURITY: DWORD = 0x01000000;
465+
pub const MAXIMUM_ALLOWED: DWORD = 0x02000000;
466+
pub const GENERIC_READ: DWORD = 0x80000000;
467+
pub const GENERIC_WRITE: DWORD = 0x40000000;
468+
pub const GENERIC_EXECUTE: DWORD = 0x20000000;
469+
pub const GENERIC_ALL: DWORD = 0x10000000;
470+
pub const PROCESS_TERMINATE: DWORD = 0x0001;
471+
pub const PROCESS_CREATE_THREAD: DWORD = 0x0002;
472+
pub const PROCESS_SET_SESSIONID: DWORD = 0x0004;
473+
pub const PROCESS_VM_OPERATION: DWORD = 0x0008;
474+
pub const PROCESS_VM_READ: DWORD = 0x0010;
475+
pub const PROCESS_VM_WRITE: DWORD = 0x0020;
476+
pub const PROCESS_DUP_HANDLE: DWORD = 0x0040;
477+
pub const PROCESS_CREATE_PROCESS: DWORD = 0x0080;
478+
pub const PROCESS_SET_QUOTA: DWORD = 0x0100;
479+
pub const PROCESS_SET_INFORMATION: DWORD = 0x0200;
480+
pub const PROCESS_QUERY_INFORMATION: DWORD = 0x0400;
481+
pub const PROCESS_SUSPEND_RESUME: DWORD = 0x0800;
482+
pub const PROCESS_QUERY_LIMITED_INFORMATION: DWORD = 0x1000;
483+
pub const PROCESS_SET_LIMITED_INFORMATION: DWORD = 0x2000;
484+
pub const PROCESS_ALL_ACCESS: DWORD = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF;
437485
// guiddef.h
438486
#[repr(C)]
439487
pub struct GUID {
@@ -1467,7 +1515,6 @@ pub const FOLDERID_SearchHistory: GUID = GUID { Data1: 0x0d4c3db6, Data2: 0x03a3
14671515
pub const FOLDERID_SearchTemplates: GUID = GUID { Data1: 0x7e636bfe, Data2: 0xdfa9, Data3: 0x4d5e, Data4: [0xb4, 0x56, 0xd7, 0xb3, 0x98, 0x51, 0xd8, 0xa9]};
14681516
// constants
14691517
pub static INVALID_HANDLE_VALUE: HANDLE = -1 as HANDLE;
1470-
pub static PROCESS_QUERY_INFORMATION: DWORD = 0x400;
14711518
// error codes
14721519
pub static ERROR_INVALID_HANDLE: DWORD = 6;
14731520
pub static ERROR_ILLEGAL_CHARACTER: DWORD = 582;
@@ -1489,7 +1536,7 @@ pub static ENABLE_WRAP_AT_EOL_OUTPUT: DWORD = 0x2;
14891536
// Functions
14901537
//-------------------------------------------------------------------------------------------------
14911538

1492-
#[link(name = "Ole32")]
1539+
#[link(name = "ole32")]
14931540
extern "system" {
14941541
pub fn CoAllowUnmarshalerCLSID(
14951542
clsid: REFCLSID,
@@ -1712,7 +1759,6 @@ extern "system" {
17121759
) -> HRESULT;
17131760
}
17141761
#[link(name = "kernel32")]
1715-
#[link(name = "psapi")]
17161762
extern "system" {
17171763
pub fn CloseHandle(
17181764
hObject: HANDLE,
@@ -1728,11 +1774,6 @@ extern "system" {
17281774
lpMode: LPDWORD,
17291775
) -> BOOL;
17301776
pub fn GetLastError() -> DWORD;
1731-
pub fn GetProcessMemoryInfo(
1732-
Process: HANDLE,
1733-
ppsmemCounters: PPROCESS_MEMORY_COUNTERS,
1734-
cb: DWORD,
1735-
) -> BOOL;
17361777
pub fn GetProcessTimes(
17371778
hProcess: HANDLE,
17381779
lpCreationTime: LPFILETIME,
@@ -1757,6 +1798,13 @@ extern "system" {
17571798
lpNumberOfCharsRead: LPDWORD,
17581799
pInputControl: PCONSOLE_READCONSOLE_CONTROL,
17591800
) -> BOOL;
1801+
pub fn ReadProcessMemory(
1802+
hProcess: HANDLE,
1803+
lpBaseAddress: LPCVOID,
1804+
lpBuffer: LPVOID,
1805+
nSize: SIZE_T,
1806+
lpNumberOfBytesRead: *mut SIZE_T,
1807+
) -> BOOL;
17601808
pub fn SetConsoleMode(
17611809
hConsoleHandle: HANDLE,
17621810
lpMode: DWORD,
@@ -1768,4 +1816,22 @@ extern "system" {
17681816
lpNumberOfCharsWritten: LPDWORD,
17691817
lpReserved: LPVOID,
17701818
) -> BOOL;
1819+
pub fn WriteProcessMemory(
1820+
hProcess: HANDLE,
1821+
lpBaseAddress: LPVOID,
1822+
lpBuffer: LPCVOID,
1823+
nSize: SIZE_T,
1824+
lpNumberOfBytesWritten: *mut SIZE_T,
1825+
) -> BOOL;
1826+
}
1827+
#[link(name = "advapi32")]
1828+
extern "system" {
1829+
pub fn AdjustTokenPrivileges(
1830+
TokenHandle: HANDLE,
1831+
DisableAllPrivileges: BOOL,
1832+
NewState: PTOKEN_PRIVILEGES,
1833+
BufferLength: DWORD,
1834+
PreviousState: PTOKEN_PRIVILEGES,
1835+
ReturnLength: PDWORD,
1836+
) -> BOOL;
17711837
}

0 commit comments

Comments
 (0)