#ifndef _EMEXTN_H #define _EMEXTN_H #ifdef __cplusplus extern "C" { #endif // __cplusplus typedef BOOL (CALLBACK* ENUMPROCSANDSERVICES)(long, LPCTSTR, LPCTSTR, LPCTSTR, LPARAM, LONG); #define E_TOOMANY_PROCESSES -1 DWORD GetNumberOfRunningApps ( /* [out] */ DWORD *pdwNumbApps ); DWORD GetAllPids ( /* [out] */ DWORD adwProcIDs[], /* [in] */ DWORD dwBuffSize, /* [out] */ DWORD *pdwNumbProcs ); DWORD GetNumberOfServices ( /* [out */ DWORD *pdwNumbSrvcs, /* [in] */ DWORD dwServiceType = SERVICE_WIN32, /* [in] */ DWORD dwServiceState = SERVICE_ACTIVE ); DWORD GetNumberOfActiveServices ( /* [out */ DWORD *pdwNumbRunningSrvcs ); DWORD GetNumberOfInactiveServices ( /* [out */ DWORD *pdwNumbStoppedSrvcs ); DWORD IsService ( /* [in] */ UINT nPid, /* [out] */ bool *pbIsService, /* [out] */ LPTSTR lpszImagePath = NULL, /* [out] */ ULONG cchImagePath = 0L, /* [out] */ LPTSTR lpszServiceShortName = NULL, /* [in] */ ULONG cchServiceShortName = 0L, /* [out] */ LPTSTR lpszServiceDescription = NULL, /* [in] */ ULONG cchServiceDescription = 0L ); DWORD IsService_NT5 ( /* [in] */ UINT nPid, /* [out] */ bool *pbIsService, /* [out] */ LPTSTR lpszImagePath = NULL, /* [out] */ ULONG cchImagePath = 0L, /* [out] */ LPTSTR lpszServiceShortName = NULL, /* [in] */ ULONG cchServiceShortName = 0L, /* [out] */ LPTSTR lpszServiceDescription = NULL, /* [in] */ ULONG cchServiceDescription = 0L ); HRESULT IsService_NT4 ( IN UINT nPid, OUT bool *pbIsService ); DWORD GetServiceInfo ( /* [in] */ UINT nPid, /* [out] */ LPTSTR lpszImagePath, /* [out] */ ULONG cchImagePath, /* [out] */ LPTSTR lpszServiceShortName, /* [in] */ ULONG cchServiceShortName, /* [out] */ LPTSTR lpszServiceDescription, /* [in] */ ULONG cchServiceDescription ); DWORD EnumRunningProcesses ( /* [in] */ ENUMPROCSANDSERVICES lpEnumRunProc, /* [in] */ LPARAM lParam, /* [in] */ UINT nStartIndex = 0L ); DWORD EnumRunningServices ( /* [in] */ ENUMPROCSANDSERVICES lpEnumSrvcsProc, /* [in] */ LPARAM lParam, /* [in] */ UINT nStartIndex = 0L ); DWORD EnumStoppedServices ( /* [in] */ ENUMPROCSANDSERVICES lpEnumSrvcsProc, /* [in] */ LPARAM lParam, /* [in] */ UINT nStartIndex = 0L ); DWORD EnumServices ( /* [in] */ ENUMPROCSANDSERVICES lpEnumSrvcsProc, /* [in] */ LPARAM lParam, /* [in] */ DWORD dwSrvcState, /* [in] */ UINT nStartIndex = 0L ); /***************************************************/ BOOL IsImageRunning ( /* [in] */ ULONG lPID ); DWORD GetImageNameFromPID ( /* [in] */ ULONG lPID, /* [out] */ LPTSTR lpszImagePath, /* [in] */ DWORD dwBuffSize ); DWORD StartServiceAndGetPid ( /* [in] */ LPCTSTR lpszServiceShortName, /* [out] */ UINT *pnPid ); DWORD IsValidImage ( /* [in] */ ULONG lPID, /* [in] */ LPCTSTR lpszImageName, /* [out] */ bool *pbValidImage ); DWORD IsValidProcess ( /* [in] */ ULONG lPID, /* [in] */ LPCTSTR lpszImageName, /* [out] */ bool *pbValidImage ); DWORD IsValidService ( /* [in] */ ULONG lPID, /* [in] */ LPCTSTR lpszImageName, /* [out] */ bool *pbValidImage ); DWORD GetProcessHandle ( IN ULONG lPid, OUT HANDLE *phProcess ); HRESULT GetPackageDescription ( /* [in] */ const long nPid, /* [out] */ BSTR &bstrDescription ); BOOL IsPackage ( /* [in[ */ LPTSTR lpszImageName ); #ifdef __cplusplus } // extern "C" #endif #endif // _EMEXTN_H