Works:
static void WINAPI ServiceStart(DWORD argc, LPTSTR* argv);
int main() {
SERVICE_TABLE_ENTRY DispatchTable[] = {
{"MyService", ServiceStart},
{NULL, NULL}
};
}
Doesn’t work:
error C2440: ‘initializing’ : cannot convert from ‘void (__stdcall Service::* )(DWORD,LPTSTR *)’ to ‘LPSERVICE_MAIN_FUNCTIONA’
class Service {
static void WINAPI ServiceStart(DWORD argc, LPTSTR* argv);
};
int main() {
SERVICE_TABLE_ENTRY DispatchTable[] = {
{"MyService", Service::ServiceStart},
{NULL, NULL}
};
}
You must use
&in that context to obtain a correct pointer.