Initial
This commit is contained in:
60
service/ServiceHook.hpp
Normal file
60
service/ServiceHook.hpp
Normal file
@@ -0,0 +1,60 @@
|
||||
#ifndef _SERVICE_SERVICEHOOK_HPP_
|
||||
#define _SERVICE_SERVICEHOOK_HPP_
|
||||
#ifndef _HOOKPROC_APIENTRY_HPP_
|
||||
#include <hookproc/apientry.hpp>
|
||||
#endif
|
||||
#ifndef _HOOKPROC_PROCADDRESS_HPP_
|
||||
#include <hookproc/procaddr.hpp>
|
||||
#endif
|
||||
|
||||
class ServiceHook;
|
||||
typedef ProcAddress<ServiceHook> ServiceHookProc;
|
||||
|
||||
class ServiceHook : private ServiceHookProc
|
||||
{
|
||||
public:
|
||||
typedef void (__stdcall *LPFNSERVICEMAIN)(DWORD dwArgc,LPTSTR *lpszArg);
|
||||
typedef void (__stdcall *LPFNSERVICEHANDLER)(DWORD dwControl);
|
||||
ServiceHook(void);
|
||||
virtual ~ServiceHook();
|
||||
LPFNSERVICEMAIN getServiceMainBase(void)const;
|
||||
LPFNSERVICEHANDLER getServiceHandlerBase(void)const;
|
||||
protected:
|
||||
virtual void svcMain(DWORD dwArgc,LPTSTR *lpszArg);
|
||||
virtual void svcHandler(DWORD dwControl);
|
||||
private:
|
||||
enum {ParamLength=8};
|
||||
enum {ServiceMainParamLength=8,ServiceHandlerParamLength=4};
|
||||
ServiceHook &operator=(const ServiceHook &someServiceHook);
|
||||
void serviceMainEntryProc(DWORD dwArgc,LPTSTR *lpszArg);
|
||||
void serviceHandlerEntryProc(DWORD dwControl);
|
||||
|
||||
APIEntry mServiceMainEntry;
|
||||
APIEntry mServiceHandlerEntry;
|
||||
};
|
||||
|
||||
inline
|
||||
ServiceHook::ServiceHook(void)
|
||||
: mServiceMainEntry(ServiceMainParamLength,(DWORD)this,getProcAddress((ProcAddress<ServiceHook>::LPFNMETHODVOID)&ServiceHook::serviceMainEntryProc)),
|
||||
mServiceHandlerEntry(ServiceHandlerParamLength,(DWORD)this,getProcAddress((ProcAddress<ServiceHook>::LPFNMETHODVOID)&ServiceHook::serviceHandlerEntryProc))
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
ServiceHook &ServiceHook::operator=(const ServiceHook &someServiceHook)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline
|
||||
ServiceHook::LPFNSERVICEMAIN ServiceHook::getServiceMainBase(void)const
|
||||
{
|
||||
return (LPFNSERVICEMAIN)mServiceMainEntry.codeBase();
|
||||
}
|
||||
|
||||
inline
|
||||
ServiceHook::LPFNSERVICEHANDLER ServiceHook::getServiceHandlerBase(void)const
|
||||
{
|
||||
return (LPFNSERVICEHANDLER)mServiceHandlerEntry.codeBase();
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user