diff options
Diffstat (limited to 'plugins/Watrack/PsAPI.pas')
-rw-r--r-- | plugins/Watrack/PsAPI.pas | 418 |
1 files changed, 0 insertions, 418 deletions
diff --git a/plugins/Watrack/PsAPI.pas b/plugins/Watrack/PsAPI.pas deleted file mode 100644 index 2fe6ed2be7..0000000000 --- a/plugins/Watrack/PsAPI.pas +++ /dev/null @@ -1,418 +0,0 @@ -unit PsAPI;
-
-interface
-
-{$WEAKPACKAGEUNIT}
-
-uses Windows;
-
-{$HPPEMIT '#include <psapi.h>'}
-
-type
- PPointer = ^Pointer;
-
- TEnumProcesses = function (lpidProcess: LPDWORD; cb: DWORD; var cbNeeded: DWORD): BOOL stdcall;
- TEnumProcessModules = function (hProcess: THandle; lphModule: LPDWORD; cb: DWORD;
- var lpcbNeeded: DWORD): BOOL stdcall;
- TGetModuleBaseNameA = function (hProcess: THandle; hModule: HMODULE;
- lpBaseName: PAnsiChar; nSize: DWORD): DWORD stdcall;
- TGetModuleBaseNameW = function (hProcess: THandle; hModule: HMODULE;
- lpBaseName: PWideChar; nSize: DWORD): DWORD stdcall;
- TGetModuleBaseName = TGetModuleBaseNameA;
- TGetModuleFileNameExA = function (hProcess: THandle; hModule: HMODULE;
- lpFilename: PAnsiChar; nSize: DWORD): DWORD stdcall;
- TGetModuleFileNameExW = function (hProcess: THandle; hModule: HMODULE;
- lpFilename: PWideChar; nSize: DWORD): DWORD stdcall;
- TGetModuleFileNameEx = TGetModuleFileNameExA;
-
- {$EXTERNALSYM _MODULEINFO}
- _MODULEINFO = packed record
- lpBaseOfDll: Pointer;
- SizeOfImage: DWORD;
- EntryPoint: Pointer;
- end;
- {$EXTERNALSYM MODULEINFO}
- MODULEINFO = _MODULEINFO;
- {$EXTERNALSYM LPMODULEINFO}
- LPMODULEINFO = ^_MODULEINFO;
- TModuleInfo = _MODULEINFO;
- PModuleInfo = LPMODULEINFO;
-
- TGetModuleInformation = function (hProcess: THandle; hModule: HMODULE;
- lpmodinfo: LPMODULEINFO; cb: DWORD): BOOL stdcall;
- TEmptyWorkingSet = function (hProcess: THandle): BOOL stdcall;
- TQueryWorkingSet = function (hProcess: THandle; pv: Pointer; cb: DWORD): BOOL stdcall;
- TInitializeProcessForWsWatch = function (hProcess: THandle): BOOL stdcall;
-
- {$EXTERNALSYM _PSAPI_WS_WATCH_INFORMATION}
- _PSAPI_WS_WATCH_INFORMATION = packed record
- FaultingPc: Pointer;
- FaultingVa: Pointer;
- end;
- {$EXTERNALSYM PSAPI_WS_WATCH_INFORMATION}
- PSAPI_WS_WATCH_INFORMATION = _PSAPI_WS_WATCH_INFORMATION;
- {$EXTERNALSYM PPSAPI_WS_WATCH_INFORMATION}
- PPSAPI_WS_WATCH_INFORMATION = ^_PSAPI_WS_WATCH_INFORMATION;
- TPSAPIWsWatchInformation = _PSAPI_WS_WATCH_INFORMATION;
- PPSAPIWsWatchInformation = PPSAPI_WS_WATCH_INFORMATION;
-
- TGetWsChanges = function (hProcess: THandle; lpWatchInfo: PPSAPI_WS_WATCH_INFORMATION;
- cb: DWORD): BOOL stdcall;
-
- TGetMappedFileNameA = function (hProcess: THandle; lpv: Pointer;
- lpFilename: PAnsiChar; nSize: DWORD): DWORD stdcall;
- TGetMappedFileNameW = function (hProcess: THandle; lpv: Pointer;
- lpFilename: PWideChar; nSize: DWORD): DWORD stdcall;
- TGetMappedFileName = TGetMappedFileNameA;
- TGetDeviceDriverBaseNameA = function (ImageBase: Pointer; lpBaseName: PAnsiChar;
- nSize: DWORD): DWORD stdcall;
- TGetDeviceDriverBaseNameW = function (ImageBase: Pointer; lpBaseName: PWideChar;
- nSize: DWORD): DWORD stdcall;
- TGetDeviceDriverBaseName = TGetDeviceDriverBaseNameA;
- TGetDeviceDriverFileNameA = function (ImageBase: Pointer; lpFileName: PAnsiChar;
- nSize: DWORD): DWORD stdcall;
- TGetDeviceDriverFileNameW = function (ImageBase: Pointer; lpFileName: PWideChar;
- nSize: DWORD): DWORD stdcall;
- TGetDeviceDriverFileName = TGetDeviceDriverFileNameA;
-
- TEnumDeviceDrivers = function (lpImageBase: PPointer; cb: DWORD;
- var lpcbNeeded: DWORD): BOOL stdcall;
-
- {$EXTERNALSYM _PROCESS_MEMORY_COUNTERS}
- _PROCESS_MEMORY_COUNTERS = packed record
- cb: DWORD;
- PageFaultCount: DWORD;
- PeakWorkingSetSize: DWORD;
- WorkingSetSize: DWORD;
- QuotaPeakPagedPoolUsage: DWORD;
- QuotaPagedPoolUsage: DWORD;
- QuotaPeakNonPagedPoolUsage: DWORD;
- QuotaNonPagedPoolUsage: DWORD;
- PagefileUsage: DWORD;
- PeakPagefileUsage: DWORD;
- end;
- {$EXTERNALSYM PROCESS_MEMORY_COUNTERS}
- PROCESS_MEMORY_COUNTERS = _PROCESS_MEMORY_COUNTERS;
- {$EXTERNALSYM PPROCESS_MEMORY_COUNTERS}
- PPROCESS_MEMORY_COUNTERS = ^_PROCESS_MEMORY_COUNTERS;
- TProcessMemoryCounters = _PROCESS_MEMORY_COUNTERS;
- PProcessMemoryCounters = ^_PROCESS_MEMORY_COUNTERS;
-
- TGetProcessMemoryInfo = function (Process: THandle;
- ppsmemCounters: PPROCESS_MEMORY_COUNTERS; cb: DWORD): BOOL stdcall;
-
-{$EXTERNALSYM EnumProcesses}
-function EnumProcesses(lpidProcess: LPDWORD; cb: DWORD; var cbNeeded: DWORD): BOOL;
-{$EXTERNALSYM EnumProcessModules}
-function EnumProcessModules(hProcess: THandle; lphModule: LPDWORD; cb: DWORD;
- var lpcbNeeded: DWORD): BOOL;
-{$EXTERNALSYM GetModuleBaseName}
-function GetModuleBaseName(hProcess: THandle; hModule: HMODULE;
- lpBaseName: PChar; nSize: DWORD): DWORD;
-{$EXTERNALSYM GetModuleBaseNameA}
-function GetModuleBaseNameA(hProcess: THandle; hModule: HMODULE;
- lpBaseName: PAnsiChar; nSize: DWORD): DWORD;
-{$EXTERNALSYM GetModuleBaseNameW}
-function GetModuleBaseNameW(hProcess: THandle; hModule: HMODULE;
- lpBaseName: PWideChar; nSize: DWORD): DWORD;
-{$EXTERNALSYM GetModuleFileNameEx}
-function GetModuleFileNameEx(hProcess: THandle; hModule: HMODULE;
- lpFilename: PChar; nSize: DWORD): DWORD;
-{$EXTERNALSYM GetModuleFileNameExA}
-function GetModuleFileNameExA(hProcess: THandle; hModule: HMODULE;
- lpFilename: PAnsiChar; nSize: DWORD): DWORD;
-{$EXTERNALSYM GetModuleFileNameExW}
-function GetModuleFileNameExW(hProcess: THandle; hModule: HMODULE;
- lpFilename: PWideChar; nSize: DWORD): DWORD;
-{$EXTERNALSYM GetModuleInformation}
-function GetModuleInformation(hProcess: THandle; hModule: HMODULE;
- lpmodinfo: LPMODULEINFO; cb: DWORD): BOOL;
-{$EXTERNALSYM EmptyWorkingSet}
-function EmptyWorkingSet(hProcess: THandle): BOOL;
-{$EXTERNALSYM QueryWorkingSet}
-function QueryWorkingSet(hProcess: THandle; pv: Pointer; cb: DWORD): BOOL;
-{$EXTERNALSYM InitializeProcessForWsWatch}
-function InitializeProcessForWsWatch(hProcess: THandle): BOOL;
-{$EXTERNALSYM GetMappedFileName}
-function GetMappedFileName(hProcess: THandle; lpv: Pointer;
- lpFilename: PChar; nSize: DWORD): DWORD;
-{$EXTERNALSYM GetMappedFileNameA}
-function GetMappedFileNameA(hProcess: THandle; lpv: Pointer;
- lpFilename: PAnsiChar; nSize: DWORD): DWORD;
-{$EXTERNALSYM GetMappedFileNameW}
-function GetMappedFileNameW(hProcess: THandle; lpv: Pointer;
- lpFilename: PWideChar; nSize: DWORD): DWORD;
-{$EXTERNALSYM GetDeviceDriverBaseName}
-function GetDeviceDriverBaseName(ImageBase: Pointer; lpBaseName: PChar;
- nSize: DWORD): DWORD;
-{$EXTERNALSYM GetDeviceDriverBaseNameA}
-function GetDeviceDriverBaseNameA(ImageBase: Pointer; lpBaseName: PAnsiChar;
- nSize: DWORD): DWORD;
-{$EXTERNALSYM GetDeviceDriverBaseNameW}
-function GetDeviceDriverBaseNameW(ImageBase: Pointer; lpBaseName: PWideChar;
- nSize: DWORD): DWORD;
-{$EXTERNALSYM GetDeviceDriverFileName}
-function GetDeviceDriverFileName(ImageBase: Pointer; lpFileName: PChar;
- nSize: DWORD): DWORD;
-{$EXTERNALSYM GetDeviceDriverFileNameA}
-function GetDeviceDriverFileNameA(ImageBase: Pointer; lpFileName: PAnsiChar;
- nSize: DWORD): DWORD;
-{$EXTERNALSYM GetDeviceDriverFileNameW}
-function GetDeviceDriverFileNameW(ImageBase: Pointer; lpFileName: PWideChar;
- nSize: DWORD): DWORD;
-{$EXTERNALSYM EnumDeviceDrivers}
-function EnumDeviceDrivers(lpImageBase: PPointer; cb: DWORD;
- var lpcbNeeded: DWORD): BOOL;
-{$EXTERNALSYM GetProcessMemoryInfo}
-function GetProcessMemoryInfo(Process: THandle;
- ppsmemCounters: PPROCESS_MEMORY_COUNTERS; cb: DWORD): BOOL;
-
-implementation
-
-var
- hPSAPI: THandle;
- _EnumProcesses: TEnumProcesses;
- _EnumProcessModules: TEnumProcessModules;
- {procedure}_GetModuleBaseName: TGetModuleBaseNameA;
- {procedure}_GetModuleFileNameEx: TGetModuleFileNameExA;
- {procedure}_GetModuleBaseNameA: TGetModuleBaseNameA;
- {procedure}_GetModuleFileNameExA: TGetModuleFileNameExA;
- {procedure}_GetModuleBaseNameW: TGetModuleBaseNameW;
- {procedure}_GetModuleFileNameExW: TGetModuleFileNameExW;
- _GetModuleInformation: TGetModuleInformation;
- _EmptyWorkingSet: TEmptyWorkingSet;
- _QueryWorkingSet: TQueryWorkingSet;
- _InitializeProcessForWsWatch: TInitializeProcessForWsWatch;
- {procedure}_GetMappedFileName: TGetMappedFileNameA;
- {procedure}_GetDeviceDriverBaseName: TGetDeviceDriverBaseNameA;
- {procedure}_GetDeviceDriverFileName: TGetDeviceDriverFileNameA;
- {procedure}_GetMappedFileNameA: TGetMappedFileNameA;
- {procedure}_GetDeviceDriverBaseNameA: TGetDeviceDriverBaseNameA;
- {procedure}_GetDeviceDriverFileNameA: TGetDeviceDriverFileNameA;
- {procedure}_GetMappedFileNameW: TGetMappedFileNameW;
- {procedure}_GetDeviceDriverBaseNameW: TGetDeviceDriverBaseNameW;
- {procedure}_GetDeviceDriverFileNameW: TGetDeviceDriverFileNameW;
- _EnumDeviceDrivers: TEnumDeviceDrivers;
- _GetProcessMemoryInfo: TGetProcessMemoryInfo;
-
-function CheckPSAPILoaded: Boolean;
-begin
- if hPSAPI = 0 then
- begin
-{$IFDEF MSWINDOWS}
- hPSAPI := LoadLibrary('PSAPI.dll');
- if hPSAPI < 32 then
- begin
- hPSAPI := 0;
- Result := False;
- Exit;
- end;
-{$ENDIF}
- @_EnumProcesses := GetProcAddress(hPSAPI, 'EnumProcesses');
- @_EnumProcessModules := GetProcAddress(hPSAPI, 'EnumProcessModules');
- {procedure}@_GetModuleBaseName := GetProcAddress(hPSAPI, 'GetModuleBaseNameA');
- {procedure}@_GetModuleFileNameEx := GetProcAddress(hPSAPI, 'GetModuleFileNameExA');
- {procedure}@_GetModuleBaseNameA := GetProcAddress(hPSAPI, 'GetModuleBaseNameA');
- {procedure}@_GetModuleFileNameExA := GetProcAddress(hPSAPI, 'GetModuleFileNameExA');
- {procedure}@_GetModuleBaseNameW := GetProcAddress(hPSAPI, 'GetModuleBaseNameW');
- {procedure}@_GetModuleFileNameExW := GetProcAddress(hPSAPI, 'GetModuleFileNameExW');
- @_GetModuleInformation := GetProcAddress(hPSAPI, 'GetModuleInformation');
- @_EmptyWorkingSet := GetProcAddress(hPSAPI, 'EmptyWorkingSet');
- @_QueryWorkingSet := GetProcAddress(hPSAPI, 'QueryWorkingSet');
- @_InitializeProcessForWsWatch := GetProcAddress(hPSAPI, 'InitializeProcessForWsWatch');
- {procedure}@_GetMappedFileName := GetProcAddress(hPSAPI, 'GetMappedFileNameA');
- {procedure}@_GetDeviceDriverBaseName := GetProcAddress(hPSAPI, 'GetDeviceDriverBaseNameA');
- {procedure}@_GetDeviceDriverFileName := GetProcAddress(hPSAPI, 'GetDeviceDriverFileNameA');
- {procedure}@_GetMappedFileNameA := GetProcAddress(hPSAPI, 'GetMappedFileNameA');
- {procedure}@_GetDeviceDriverBaseNameA := GetProcAddress(hPSAPI, 'GetDeviceDriverBaseNameA');
- {procedure}@_GetDeviceDriverFileNameA := GetProcAddress(hPSAPI, 'GetDeviceDriverFileNameA');
- {procedure}@_GetMappedFileNameW := GetProcAddress(hPSAPI, 'GetMappedFileNameW');
- {procedure}@_GetDeviceDriverBaseNameW := GetProcAddress(hPSAPI, 'GetDeviceDriverBaseNameW');
- {procedure}@_GetDeviceDriverFileNameW := GetProcAddress(hPSAPI, 'GetDeviceDriverFileNameW');
- @_EnumDeviceDrivers := GetProcAddress(hPSAPI, 'EnumDeviceDrivers');
- @_GetProcessMemoryInfo := GetProcAddress(hPSAPI, 'GetProcessMemoryInfo');
- end;
- Result := True;
-end;
-
-function EnumProcesses(lpidProcess: LPDWORD; cb: DWORD; var cbNeeded: DWORD): BOOL;
-begin
- if CheckPSAPILoaded then
- Result := _EnumProcesses(lpidProcess, cb, cbNeeded)
- else Result := False;
-end;
-
-function EnumProcessModules(hProcess: THandle; lphModule: LPDWORD; cb: DWORD;
- var lpcbNeeded: DWORD): BOOL;
-begin
- if CheckPSAPILoaded then
- Result := _EnumProcessModules(hProcess, lphModule, cb, lpcbNeeded)
- else Result := False;
-end;
-
-function GetModuleBaseName(hProcess: THandle; hModule: HMODULE;
- lpBaseName: PChar; nSize: DWORD): DWORD;
-begin
- if CheckPSAPILoaded then
- Result := _GetModuleBaseName(hProcess, hModule, lpBaseName, nSize)
- else Result := 0;
-end;
-
-function GetModuleBaseNameA(hProcess: THandle; hModule: HMODULE;
- lpBaseName: PAnsiChar; nSize: DWORD): DWORD;
-begin
- if CheckPSAPILoaded then
- Result := _GetModuleBaseNameA(hProcess, hModule, lpBaseName, nSize)
- else Result := 0;
-end;
-
-function GetModuleBaseNameW(hProcess: THandle; hModule: HMODULE;
- lpBaseName: PWideChar; nSize: DWORD): DWORD;
-begin
- if CheckPSAPILoaded then
- Result := _GetModuleBaseNameW(hProcess, hModule, lpBaseName, nSize)
- else Result := 0;
-end;
-
-function GetModuleFileNameEx(hProcess: THandle; hModule: HMODULE;
- lpFilename: PChar; nSize: DWORD): DWORD;
-begin
- if CheckPSAPILoaded then
- Result := _GetModuleFileNameEx(hProcess, hModule, lpFileName, nSize)
- else Result := 0;
-end;
-
-function GetModuleFileNameExA(hProcess: THandle; hModule: HMODULE;
- lpFilename: PAnsiChar; nSize: DWORD): DWORD;
-begin
- if CheckPSAPILoaded then
- Result := _GetModuleFileNameExA(hProcess, hModule, lpFileName, nSize)
- else Result := 0;
-end;
-
-function GetModuleFileNameExW(hProcess: THandle; hModule: HMODULE;
- lpFilename: PWideChar; nSize: DWORD): DWORD;
-begin
- if CheckPSAPILoaded then
- Result := _GetModuleFileNameExW(hProcess, hModule, lpFileName, nSize)
- else Result := 0;
-end;
-
-function GetModuleInformation(hProcess: THandle; hModule: HMODULE;
- lpmodinfo: LPMODULEINFO; cb: DWORD): BOOL;
-begin
- if CheckPSAPILoaded then
- Result := _GetModuleInformation(hProcess, hModule, lpmodinfo, cb)
- else Result := False;
-end;
-
-function EmptyWorkingSet(hProcess: THandle): BOOL;
-begin
- if CheckPSAPILoaded then
- Result := _EmptyWorkingSet(hProcess)
- else Result := False;
-end;
-
-function QueryWorkingSet(hProcess: THandle; pv: Pointer; cb: DWORD): BOOL;
-begin
- if CheckPSAPILoaded then
- Result := _QueryWorkingSet(hProcess, pv, cb)
- else Result := False;
-end;
-
-function InitializeProcessForWsWatch(hProcess: THandle): BOOL;
-begin
- if CheckPSAPILoaded then
- Result := _InitializeProcessForWsWatch(hProcess)
- else Result := False;
-end;
-
-function GetMappedFileName(hProcess: THandle; lpv: Pointer;
- lpFilename: PChar; nSize: DWORD): DWORD;
-begin
- if CheckPSAPILoaded then
- Result := _GetMappedFileName(hProcess, lpv, lpFileName, nSize)
- else Result := 0;
-end;
-
-function GetMappedFileNameA(hProcess: THandle; lpv: Pointer;
- lpFilename: PAnsiChar; nSize: DWORD): DWORD;
-begin
- if CheckPSAPILoaded then
- Result := _GetMappedFileNameA(hProcess, lpv, lpFileName, nSize)
- else Result := 0;
-end;
-
-function GetMappedFileNameW(hProcess: THandle; lpv: Pointer;
- lpFilename: PWideChar; nSize: DWORD): DWORD;
-begin
- if CheckPSAPILoaded then
- Result := _GetMappedFileNameW(hProcess, lpv, lpFileName, nSize)
- else Result := 0;
-end;
-
-function GetDeviceDriverBaseName(ImageBase: Pointer; lpBaseName: PChar;
- nSize: DWORD): DWORD;
-begin
- if CheckPSAPILoaded then
- Result := _GetDeviceDriverBasename(ImageBase, lpBaseName, nSize)
- else Result := 0;
-end;
-
-function GetDeviceDriverBaseNameA(ImageBase: Pointer; lpBaseName: PAnsiChar;
- nSize: DWORD): DWORD;
-begin
- if CheckPSAPILoaded then
- Result := _GetDeviceDriverBasenameA(ImageBase, lpBaseName, nSize)
- else Result := 0;
-end;
-
-function GetDeviceDriverBaseNameW(ImageBase: Pointer; lpBaseName: PWideChar;
- nSize: DWORD): DWORD;
-begin
- if CheckPSAPILoaded then
- Result := _GetDeviceDriverBasenameW(ImageBase, lpBaseName, nSize)
- else Result := 0;
-end;
-
-function GetDeviceDriverFileName(ImageBase: Pointer; lpFileName: PChar;
- nSize: DWORD): DWORD;
-begin
- if CheckPSAPILoaded then
- Result := _GetDeviceDriverFileName(ImageBase, lpFileName, nSize)
- else Result := 0;
-end;
-
-function GetDeviceDriverFileNameA(ImageBase: Pointer; lpFileName: PAnsiChar;
- nSize: DWORD): DWORD;
-begin
- if CheckPSAPILoaded then
- Result := _GetDeviceDriverFileNameA(ImageBase, lpFileName, nSize)
- else Result := 0;
-end;
-
-function GetDeviceDriverFileNameW(ImageBase: Pointer; lpFileName: PWideChar;
- nSize: DWORD): DWORD;
-begin
- if CheckPSAPILoaded then
- Result := _GetDeviceDriverFileNameW(ImageBase, lpFileName, nSize)
- else Result := 0;
-end;
-
-function EnumDeviceDrivers(lpImageBase: PPointer; cb: DWORD;
- var lpcbNeeded: DWORD): BOOL;
-begin
- if CheckPSAPILoaded then
- Result := _EnumDeviceDrivers(lpImageBase, cb, lpcbNeeded)
- else Result := False;
-end;
-
-function GetProcessMemoryInfo(Process: THandle;
- ppsmemCounters: PPROCESS_MEMORY_COUNTERS; cb: DWORD): BOOL;
-begin
- if CheckPSAPILoaded then
- Result := _GetProcessMemoryInfo(Process, ppsmemCounters, cb)
- else Result := False;
-end;
-
-end.
|