@@ -225,7 +225,11 @@ pub type DWORD64 = __uint64;
225
225
pub type PDWORD64 = * mut __uint64 ;
226
226
pub type KAFFINITY = ULONG_PTR ;
227
227
pub type PKAFFINITY = * mut KAFFINITY ;
228
+ //-------------------------------------------------------------------------------------------------
228
229
// 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
+ //-------------------------------------------------------------------------------------------------
229
233
pub type PVOID = * mut c_void ;
230
234
pub type PVOID64 = u64 ; // This is a 64-bit pointer, even when in 32-bit
231
235
pub type VOID = c_void ;
@@ -434,6 +438,50 @@ pub struct XSAVE_FORMAT { // FIXME align 16
434
438
pub XmmRegisters : [ M128A , ..16 ] ,
435
439
pub Reserved4 : [ BYTE , ..96 ] ,
436
440
}
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 ;
437
485
// guiddef.h
438
486
#[ repr( C ) ]
439
487
pub struct GUID {
@@ -1467,7 +1515,6 @@ pub const FOLDERID_SearchHistory: GUID = GUID { Data1: 0x0d4c3db6, Data2: 0x03a3
1467
1515
pub const FOLDERID_SearchTemplates : GUID = GUID { Data1 : 0x7e636bfe , Data2 : 0xdfa9 , Data3 : 0x4d5e , Data4 : [ 0xb4 , 0x56 , 0xd7 , 0xb3 , 0x98 , 0x51 , 0xd8 , 0xa9 ] } ;
1468
1516
// constants
1469
1517
pub static INVALID_HANDLE_VALUE : HANDLE = -1 as HANDLE ;
1470
- pub static PROCESS_QUERY_INFORMATION : DWORD = 0x400 ;
1471
1518
// error codes
1472
1519
pub static ERROR_INVALID_HANDLE : DWORD = 6 ;
1473
1520
pub static ERROR_ILLEGAL_CHARACTER : DWORD = 582 ;
@@ -1489,7 +1536,7 @@ pub static ENABLE_WRAP_AT_EOL_OUTPUT: DWORD = 0x2;
1489
1536
// Functions
1490
1537
//-------------------------------------------------------------------------------------------------
1491
1538
1492
- #[ link( name = "Ole32 " ) ]
1539
+ #[ link( name = "ole32 " ) ]
1493
1540
extern "system" {
1494
1541
pub fn CoAllowUnmarshalerCLSID (
1495
1542
clsid : REFCLSID ,
@@ -1712,7 +1759,6 @@ extern "system" {
1712
1759
) -> HRESULT ;
1713
1760
}
1714
1761
#[ link( name = "kernel32" ) ]
1715
- #[ link( name = "psapi" ) ]
1716
1762
extern "system" {
1717
1763
pub fn CloseHandle (
1718
1764
hObject : HANDLE ,
@@ -1728,11 +1774,6 @@ extern "system" {
1728
1774
lpMode : LPDWORD ,
1729
1775
) -> BOOL ;
1730
1776
pub fn GetLastError ( ) -> DWORD ;
1731
- pub fn GetProcessMemoryInfo (
1732
- Process : HANDLE ,
1733
- ppsmemCounters : PPROCESS_MEMORY_COUNTERS ,
1734
- cb : DWORD ,
1735
- ) -> BOOL ;
1736
1777
pub fn GetProcessTimes (
1737
1778
hProcess : HANDLE ,
1738
1779
lpCreationTime : LPFILETIME ,
@@ -1757,6 +1798,13 @@ extern "system" {
1757
1798
lpNumberOfCharsRead : LPDWORD ,
1758
1799
pInputControl : PCONSOLE_READCONSOLE_CONTROL ,
1759
1800
) -> 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 ;
1760
1808
pub fn SetConsoleMode (
1761
1809
hConsoleHandle : HANDLE ,
1762
1810
lpMode : DWORD ,
@@ -1768,4 +1816,22 @@ extern "system" {
1768
1816
lpNumberOfCharsWritten : LPDWORD ,
1769
1817
lpReserved : LPVOID ,
1770
1818
) -> 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 ;
1771
1837
}
0 commit comments