I'm using Windows' CreateThread
function calling it from static function.
I want to pass to my working thread function pointer, which is a non-static member. Can it be done ?
public:
WinService();
virtual ~WinService();
private:
static DWORD WINAPI ServiceWorkerThread(LPVOID lpParam);
static VOID WINAPI ServiceMain(DWORD argc, LPTSTR *argv);
IHttpServer* p_IHttpServer;
Implementation:
WinService::WinService()
{
p_IHttpServer = new WinHttpServer();
SERVICE_TABLE_ENTRY [] =
{
{ SERVICE_NAME, (LPSERVICE_MAIN_FUNCTION)ServiceMain },
{ NULL, NULL }
};
StartServiceCtrlDispatcher(ServiceTable
}
VOID WINAPI WinService::ServiceMain(DWORD argc, LPTSTR *argv)
{
HANDLE hThread = CreateThread(NULL, 0, ServiceWorkerThread, WinService::p_IHttpServer, 0, NULL); //THIS IS ERROR !!!!!
}
DWORD WINAPI WinService::ServiceWorkerThread(LPVOID lpParam)
{
IHttpServer* httpServer = (IHttpServer*)lpParam;
return ERROR_SUCCESS;
}
I'm getting the error in CreateThread
, is there any way to use non-static p_IHttpServer
there?