Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  psapi.rs   Sprache: unbekannt

 
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
//! FFI bindings to psapi.
use shared::basetsd::{SIZE_T, ULONG_PTR};
use shared::minwindef::{BOOL, DWORD, HMODULE, LPDWORD, LPVOID, PDWORD};
use um::winnt::{HANDLE, LPCSTR, LPCWSTR, LPSTR, LPWSTR, PVOID};
pub const LIST_MODULES_DEFAULT: DWORD = 0x0;
pub const LIST_MODULES_32BIT: DWORD = 0x01;
pub const LIST_MODULES_64BIT: DWORD = 0x02;
pub const LIST_MODULES_ALL: DWORD = LIST_MODULES_32BIT | LIST_MODULES_64BIT;
extern "system" {
    pub fn K32EnumProcesses(
        lpidProcess: *mut DWORD,
        cb: DWORD,
        lpcbNeeded: LPDWORD,
    ) -> BOOL;
    pub fn K32EnumProcessModules(
        hProcess: HANDLE,
        lphModule: *mut HMODULE,
        cb: DWORD,
        lpcbNeeded: LPDWORD,
    ) -> BOOL;
    pub fn K32EnumProcessModulesEx(
        hProcess: HANDLE,
        lphModule: *mut HMODULE,
        cb: DWORD,
        lpcbNeeded: LPDWORD,
        dwFilterFlag: DWORD,
    ) -> BOOL;
    pub fn K32GetModuleBaseNameA(
        hProcess: HANDLE,
        hModule: HMODULE,
        lpBaseName: LPSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn K32GetModuleBaseNameW(
        hProcess: HANDLE,
        hModule: HMODULE,
        lpBaseName: LPWSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn K32GetModuleFileNameExA(
        hProcess: HANDLE,
        hModule: HMODULE,
        lpFilename: LPSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn K32GetModuleFileNameExW(
        hProcess: HANDLE,
        hModule: HMODULE,
        lpFilename: LPWSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn K32EmptyWorkingSet(
        hProcess: HANDLE,
    ) -> BOOL;
    pub fn K32QueryWorkingSet(
        hProcess: HANDLE,
        pv: PVOID,
        cb: DWORD,
    ) -> BOOL;
    pub fn K32QueryWorkingSetEx(
        hProcess: HANDLE,
        pv: PVOID,
        cb: DWORD,
    ) -> BOOL;
    pub fn K32InitializeProcessForWsWatch(
        hProcess: HANDLE,
    ) -> BOOL;
    pub fn K32GetWsChanges(
        hProcess: HANDLE,
        lpWatchInfo: PPSAPI_WS_WATCH_INFORMATION,
        cb: DWORD,
    ) -> BOOL;
    pub fn K32GetWsChangesEx(
        hProcess: HANDLE,
        lpWatchInfoEx: PPSAPI_WS_WATCH_INFORMATION_EX,
        cb: PDWORD,
    ) -> BOOL;
    pub fn K32GetMappedFileNameW(
        hProcess: HANDLE,
        lpv: LPVOID,
        lpFilename: LPWSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn K32GetMappedFileNameA(
        hProcess: HANDLE,
        lpv: LPVOID,
        lpFilename: LPSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn K32EnumDeviceDrivers(
        lpImageBase: *mut LPVOID,
        cb: DWORD,
        lpcbNeeded: LPDWORD,
    ) -> BOOL;
    pub fn K32GetDeviceDriverBaseNameA(
        ImageBase: LPVOID,
        lpFilename: LPSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn K32GetDeviceDriverBaseNameW(
        ImageBase: LPVOID,
        lpFilename: LPWSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn K32GetDeviceDriverFileNameA(
        ImageBase: LPVOID,
        lpFilename: LPSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn K32GetDeviceDriverFileNameW(
        ImageBase: LPVOID,
        lpFilename: LPWSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn K32GetPerformanceInfo(
        pPerformanceInformation: PPERFORMANCE_INFORMATION,
        cb: DWORD,
    ) -> BOOL;
    pub fn K32EnumPageFilesW(
        pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKW,
        pContext: LPVOID,
    ) -> BOOL;
    pub fn K32EnumPageFilesA(
        pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKA,
        pContext: LPVOID,
    ) -> BOOL;
    pub fn K32GetProcessImageFileNameA(
        hProcess: HANDLE,
        lpImageFileName: LPSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn K32GetProcessImageFileNameW(
        hProcess: HANDLE,
        lpImageFileName: LPWSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn EnumProcesses(
        lpidProcess: *mut DWORD,
        cb: DWORD,
        lpcbNeeded: LPDWORD,
    ) -> BOOL;
    pub fn K32GetProcessMemoryInfo(
        Process: HANDLE,
        ppsmemCounters: PPROCESS_MEMORY_COUNTERS,
        cb: DWORD,
    ) -> BOOL;
    pub fn K32GetModuleInformation(
        hProcess: HANDLE,
        hModule: HMODULE,
        lpmodinfo: LPMODULEINFO,
        cb: DWORD,
    ) -> BOOL;
}
pub type LPMODULEINFO = *mut MODULEINFO;
pub type PPSAPI_WORKING_SET_INFORMATION = *mut PSAPI_WORKING_SET_INFORMATION;
pub type PPSAPI_WORKING_SET_EX_INFORMATION = *mut PSAPI_WORKING_SET_EX_INFORMATION;
pub type PPSAPI_WS_WATCH_INFORMATION = *mut PSAPI_WS_WATCH_INFORMATION;
pub type PPSAPI_WS_WATCH_INFORMATION_EX = *mut PSAPI_WS_WATCH_INFORMATION_EX;
pub type PENUM_PAGE_FILE_INFORMATION = *mut ENUM_PAGE_FILE_INFORMATION;
pub type PPERFORMANCE_INFORMATION = *mut PERFORMANCE_INFORMATION;
pub type PPROCESS_MEMORY_COUNTERS = *mut PROCESS_MEMORY_COUNTERS;
pub type PPROCESS_MEMORY_COUNTERS_EX = *mut PROCESS_MEMORY_COUNTERS_EX;
FN!{stdcall PENUM_PAGE_FILE_CALLBACKA(
    pContext: LPVOID,
    pPageFileInfo: PENUM_PAGE_FILE_INFORMATION,
    lpFilename: LPCSTR,
) -> BOOL}
FN!{stdcall PENUM_PAGE_FILE_CALLBACKW(
    pContext: LPVOID,
    pPageFileInfo: PENUM_PAGE_FILE_INFORMATION,
    lpFilename: LPCWSTR,
) -> BOOL}
STRUCT!{struct MODULEINFO {
    lpBaseOfDll: LPVOID,
    SizeOfImage: DWORD,
    EntryPoint: LPVOID,
}}
STRUCT!{struct ENUM_PAGE_FILE_INFORMATION {
    cb: DWORD,
    Reserved: DWORD,
    TotalSize: SIZE_T,
    TotalInUse: SIZE_T,
    PeakUsage: SIZE_T,
}}
STRUCT!{struct PERFORMANCE_INFORMATION {
    cb: DWORD,
    CommitTotal: SIZE_T,
    CommitLimit: SIZE_T,
    CommitPeak: SIZE_T,
    PhysicalTotal: SIZE_T,
    PhysicalAvailable: SIZE_T,
    SystemCache: SIZE_T,
    KernelTotal: SIZE_T,
    KernelPaged: SIZE_T,
    KernelNonpaged: SIZE_T,
    PageSize: SIZE_T,
    HandleCount: DWORD,
    ProcessCount: DWORD,
    ThreadCount: DWORD,
}}
STRUCT!{struct PROCESS_MEMORY_COUNTERS {
    cb: DWORD,
    PageFaultCount: DWORD,
    PeakWorkingSetSize: SIZE_T,
    WorkingSetSize: SIZE_T,
    QuotaPeakPagedPoolUsage: SIZE_T,
    QuotaPagedPoolUsage: SIZE_T,
    QuotaPeakNonPagedPoolUsage: SIZE_T,
    QuotaNonPagedPoolUsage: SIZE_T,
    PagefileUsage: SIZE_T,
    PeakPagefileUsage: SIZE_T,
}}
STRUCT!{struct PROCESS_MEMORY_COUNTERS_EX {
    cb: DWORD,
    PageFaultCount: DWORD,
    PeakWorkingSetSize: SIZE_T,
    WorkingSetSize: SIZE_T,
    QuotaPeakPagedPoolUsage: SIZE_T,
    QuotaPagedPoolUsage: SIZE_T,
    QuotaPeakNonPagedPoolUsage: SIZE_T,
    QuotaNonPagedPoolUsage: SIZE_T,
    PagefileUsage: SIZE_T,
    PeakPagefileUsage: SIZE_T,
    PrivateUsage: SIZE_T,
}}
STRUCT!{struct PSAPI_WORKING_SET_BLOCK {
    Flags: ULONG_PTR,
}}
BITFIELD!{PSAPI_WORKING_SET_BLOCK Flags: ULONG_PTR [
    Protection set_Protection[0..5],
    ShareCount set_ShareCount[5..8],
    Shared set_Shared[8..9],
    Reserved set_Reserved[9..12],
    VirtualPage set_VirtualPage[12..32],
]}
pub type PPSAPI_WORKING_SET_BLOCK = *mut PSAPI_WORKING_SET_BLOCK;
STRUCT!{struct PSAPI_WORKING_SET_EX_BLOCK {
    Flags: ULONG_PTR,
}}
#[cfg(not(target_arch="x86_64"))]
BITFIELD!{PSAPI_WORKING_SET_EX_BLOCK Flags: ULONG_PTR [
    Valid set_Valid[0..1],
    ShareCount set_ShareCount[1..4],
    Win32Protection set_Win32Protection[4..15],
    Shared set_Shared[15..16],
    Node set_Node[16..22],
    Locked set_Locked[22..23],
    LargePage set_LargePage[23..24],
    Reserved set_Reserved[24..31],
    Bad set_Bad[31..32],
]}
#[cfg(target_arch="x86_64")]
BITFIELD!{PSAPI_WORKING_SET_EX_BLOCK Flags: ULONG_PTR [
    Valid set_Valid[0..1],
    ShareCount set_ShareCount[1..4],
    Win32Protection set_Win32Protection[4..15],
    Shared set_Shared[15..16],
    Node set_Node[16..22],
    Locked set_Locked[22..23],
    LargePage set_LargePage[23..24],
    Reserved set_Reserved[24..31],
    Bad set_Bad[31..32],
    ReservedUlong set_ReservedULong[32..64],
]}
pub type PPSAPI_WORKING_SET_EX_BLOCK = *mut PSAPI_WORKING_SET_EX_BLOCK;
STRUCT!{struct PSAPI_WORKING_SET_INFORMATION {
    NumberOfEntries: ULONG_PTR,
    WorkingSetInfo: [PSAPI_WORKING_SET_BLOCK; 1],
}}
STRUCT!{struct PSAPI_WORKING_SET_EX_INFORMATION {
    VirtualAddress: PVOID,
    VirtualAttributes: PSAPI_WORKING_SET_EX_BLOCK,
}}
STRUCT!{struct PSAPI_WS_WATCH_INFORMATION {
    FaultingPc: LPVOID,
    FaultingVa: LPVOID,
}}
STRUCT!{struct PSAPI_WS_WATCH_INFORMATION_EX {
    BasicInfo: PSAPI_WS_WATCH_INFORMATION,
    FaultingThreadId: ULONG_PTR,
    Flags: ULONG_PTR,
}}
extern "system" {
    pub fn EmptyWorkingSet(
        hProcess: HANDLE,
    ) -> BOOL;
    pub fn EnumDeviceDrivers(
        lpImageBase: *mut LPVOID,
        cb: DWORD,
        lpcbNeeded: LPDWORD,
    ) -> BOOL;
    pub fn EnumPageFilesA(
        pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKA,
        pContext: LPVOID,
    ) -> BOOL;
    pub fn EnumPageFilesW(
        pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKW,
        pContext: LPVOID,
    ) -> BOOL;
    pub fn EnumProcessModules(
        hProcess: HANDLE,
        lphModule: *mut HMODULE,
        cb: DWORD,
        lpcbNeeded: LPDWORD,
    ) -> BOOL;
    pub fn EnumProcessModulesEx(
        hProcess: HANDLE,
        lphModule: *mut HMODULE,
        cb: DWORD,
        lpcbNeeded: LPDWORD,
        dwFilterFlag: DWORD,
    ) -> BOOL;
    pub fn GetDeviceDriverBaseNameA(
        ImageBase: LPVOID,
        lpFilename: LPSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn GetDeviceDriverBaseNameW(
        ImageBase: LPVOID,
        lpFilename: LPWSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn GetDeviceDriverFileNameA(
        ImageBase: LPVOID,
        lpFilename: LPSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn GetDeviceDriverFileNameW(
        ImageBase: LPVOID,
        lpFilename: LPWSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn GetMappedFileNameA(
        hProcess: HANDLE,
        lpv: LPVOID,
        lpFilename: LPSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn GetMappedFileNameW(
        hProcess: HANDLE,
        lpv: LPVOID,
        lpFilename: LPWSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn GetModuleBaseNameA(
        hProcess: HANDLE,
        hModule: HMODULE,
        lpBaseName: LPSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn GetModuleBaseNameW(
        hProcess: HANDLE,
        hModule: HMODULE,
        lpBaseName: LPWSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn GetModuleFileNameExA(
        hProcess: HANDLE,
        hModule: HMODULE,
        lpFilename: LPSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn GetModuleFileNameExW(
        hProcess: HANDLE,
        hModule: HMODULE,
        lpFilename: LPWSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn GetModuleInformation(
        hProcess: HANDLE,
        hModule: HMODULE,
        lpmodinfo: LPMODULEINFO,
        cb: DWORD,
    ) -> BOOL;
    pub fn GetPerformanceInfo(
        pPerformanceInformation: PPERFORMANCE_INFORMATION,
        cb: DWORD,
    ) -> BOOL;
    pub fn GetProcessImageFileNameA(
        hProcess: HANDLE,
        lpImageFileName: LPSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn GetProcessImageFileNameW(
        hProcess: HANDLE,
        lpImageFileName: LPWSTR,
        nSize: DWORD,
    ) -> DWORD;
    pub fn GetProcessMemoryInfo(
        hProcess: HANDLE,
        ppsmemCounters: PPROCESS_MEMORY_COUNTERS,
        cb: DWORD,
    ) -> BOOL;
    pub fn GetWsChanges(
        hProcess: HANDLE,
        lpWatchInfo: PPSAPI_WS_WATCH_INFORMATION,
        cb: DWORD,
    ) -> BOOL;
    pub fn GetWsChangesEx(
        hProcess: HANDLE,
        lpWatchInfoEx: PPSAPI_WS_WATCH_INFORMATION_EX,
        cb: PDWORD,
    ) -> BOOL;
    pub fn InitializeProcessForWsWatch(
        hProcess: HANDLE,
    ) -> BOOL;
    pub fn QueryWorkingSet(
        hProcess: HANDLE,
        pv: PVOID,
        cb: DWORD,
    ) -> BOOL;
    pub fn QueryWorkingSetEx(
        hProcess: HANDLE,
        pv: PVOID,
        cb: DWORD,
    ) -> BOOL;
}

[ Dauer der Verarbeitung: 0.2 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge