Service::serviceCtlHandler(DWORD OpCode)
{
//...
}
Service::ServiceStart
{
//...
serviceStatusHandle = RegisterServiceCtrlHandler("Service", &Service::serviceCtrlHandler /*incompatible*/);
//...
}
如何获得兼容指针?
最佳答案
您需要将serviceCtlHandler
函数设置为static
,这意味着它将无法访问任何对象成员。这是因为 RegisterServiceCtrlHandler
需要一个未绑定(bind)到对象的函数指针,并且不会接收隐含的 this
指针。
如果您改用 RegisterServiceCtrlHandlerEx
,您可以传递一个指向该对象的指针,并让静态函数在正确转换指针后调用另一个成员函数。
关于c++ - 传递类成员的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7474765/