0

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 ?

Header:
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?

Cheers and hth. - Alf
  • 142,714
  • 15
  • 209
  • 331
user63898
  • 29,839
  • 85
  • 272
  • 514

0 Answers0