// PSAPI.H
/*++ BUILD Version: 0001    // Increment this if a change has global effects 
 
Copyright (c) 1994-1997  Microsoft Corporation 
 
Module Name: 
 
    psapi.h 
 
Abstract: 
 
    Include file for APIs provided by PSAPI.DLL 
 
Author: 
 
    Richard Shupak   [richards]  06-Jan-1994 
 
Revision History: 
 
--*/ 
 
#ifndef _PSAPI_H_ 
#define _PSAPI_H_ 
 
#ifdef __cplusplus 
extern "C" { 
#endif 
 
BOOL 
WINAPI 
EnumProcesses( 
    DWORD * lpidProcess, 
    DWORD   cb, 
    DWORD * cbNeeded 
    ); 
 
BOOL 
WINAPI 
EnumProcessModules( 
    HANDLE hProcess, 
    HMODULE *lphModule, 
    DWORD cb, 
    LPDWORD lpcbNeeded 
    ); 
 
DWORD 
WINAPI 
GetModuleBaseNameA( 
    HANDLE hProcess, 
    HMODULE hModule, 
    LPSTR lpBaseName, 
    DWORD nSize 
    ); 
 
DWORD 
WINAPI 
GetModuleBaseNameW( 
    HANDLE hProcess, 
    HMODULE hModule, 
    LPWSTR lpBaseName, 
    DWORD nSize 
    ); 
 
#ifdef UNICODE 
#define GetModuleBaseName  GetModuleBaseNameW 
#else 
#define GetModuleBaseName  GetModuleBaseNameA 
#endif // !UNICODE 
 
 
DWORD 
WINAPI 
GetModuleFileNameExA( 
    HANDLE hProcess, 
    HMODULE hModule, 
    LPSTR lpFilename, 
    DWORD nSize 
    ); 
 
DWORD 
WINAPI 
GetModuleFileNameExW( 
    HANDLE hProcess, 
    HMODULE hModule, 
    LPWSTR lpFilename, 
    DWORD nSize 
    ); 
 
#ifdef UNICODE 
#define GetModuleFileNameEx  GetModuleFileNameExW 
#else 
#define GetModuleFileNameEx  GetModuleFileNameExA 
#endif // !UNICODE 
 
 
typedef struct _MODULEINFO { 
    LPVOID lpBaseOfDll; 
    DWORD SizeOfImage; 
    LPVOID EntryPoint; 
} MODULEINFO, *LPMODULEINFO; 
 
 
BOOL 
WINAPI 
GetModuleInformation( 
    HANDLE hProcess, 
    HMODULE hModule, 
    LPMODULEINFO lpmodinfo, 
    DWORD cb 
    ); 
 
 
BOOL 
WINAPI 
EmptyWorkingSet( 
    HANDLE hProcess 
    ); 
 
 
BOOL 
WINAPI 
QueryWorkingSet( 
    HANDLE hProcess, 
    PVOID pv, 
    DWORD cb 
    ); 
 
BOOL 
WINAPI 
InitializeProcessForWsWatch( 
    HANDLE hProcess 
    ); 
 
 
typedef struct _PSAPI_WS_WATCH_INFORMATION { 
    LPVOID FaultingPc; 
    LPVOID FaultingVa; 
} PSAPI_WS_WATCH_INFORMATION, *PPSAPI_WS_WATCH_INFORMATION; 
 
BOOL 
WINAPI 
GetWsChanges( 
    HANDLE hProcess, 
    PPSAPI_WS_WATCH_INFORMATION lpWatchInfo, 
    DWORD cb 
    ); 
 
DWORD 
WINAPI 
GetMappedFileNameW( 
    HANDLE hProcess, 
    LPVOID lpv, 
    LPWSTR lpFilename, 
    DWORD nSize 
    ); 
 
DWORD 
WINAPI 
GetMappedFileNameA( 
    HANDLE hProcess, 
    LPVOID lpv, 
    LPSTR lpFilename, 
    DWORD nSize 
    ); 
 
#ifdef UNICODE 
#define GetMappedFilenameEx  GetMappedFilenameExW 
#else 
#define GetMappedFilenameEx  GetMappedFilenameExA 
#endif // !UNICODE 
 
BOOL 
WINAPI 
EnumDeviceDrivers( 
    LPVOID *lpImageBase, 
    DWORD cb, 
    LPDWORD lpcbNeeded 
    ); 
 
 
DWORD 
WINAPI 
GetDeviceDriverBaseNameA( 
    LPVOID ImageBase, 
    LPSTR lpBaseName, 
    DWORD nSize 
    ); 
 
DWORD 
WINAPI 
GetDeviceDriverBaseNameW( 
    LPVOID ImageBase, 
    LPWSTR lpBaseName, 
    DWORD nSize 
    ); 
 
#ifdef UNICODE 
#define GetDeviceDriverBaseName  GetDeviceDriverBaseNameW 
#else 
#define GetDeviceDriverBaseName  GetDeviceDriverBaseNameA 
#endif // !UNICODE 
 
 
DWORD 
WINAPI 
GetDeviceDriverFileNameA( 
    LPVOID ImageBase, 
    LPSTR lpFilename, 
    DWORD nSize 
    ); 
 
DWORD 
WINAPI 
GetDeviceDriverFileNameW( 
    LPVOID ImageBase, 
    LPWSTR lpFilename, 
    DWORD nSize 
    ); 
 
#ifdef UNICODE 
#define GetDeviceDriverFileName  GetDeviceDriverFileNameW 
#else 
#define GetDeviceDriverFileName  GetDeviceDriverFileNameA 
#endif // !UNICODE 
 
// Structure for GetProcessMemoryInfo() 
 
typedef struct _PROCESS_MEMORY_COUNTERS { 
    DWORD cb; 
    DWORD PageFaultCount; 
    DWORD PeakWorkingSetSize; 
    DWORD WorkingSetSize; 
    DWORD QuotaPeakPagedPoolUsage; 
    DWORD QuotaPagedPoolUsage; 
    DWORD QuotaPeakNonPagedPoolUsage; 
    DWORD QuotaNonPagedPoolUsage; 
    DWORD PagefileUsage; 
    DWORD PeakPagefileUsage; 
} PROCESS_MEMORY_COUNTERS; 
typedef PROCESS_MEMORY_COUNTERS *PPROCESS_MEMORY_COUNTERS; 
 
BOOL 
WINAPI 
GetProcessMemoryInfo( 
    HANDLE Process, 
    PPROCESS_MEMORY_COUNTERS ppsmemCounters, 
    DWORD cb 
    ); 
 
#ifdef __cplusplus 
} 
#endif 
 
#endif 
 

