2011-09-19 125 views
1
Service::serviceCtlHandler(DWORD OpCode) 
{ 
    //... 
} 

Service::ServiceStart 
{ 
    //... 
    serviceStatusHandle = RegisterServiceCtrlHandler("Service", &Service::serviceCtrlHandler /*incompatible*/); 
    //... 
} 

如何获得一个兼容的指针?传递类成员函数指针

+0

拨打免费或静态函数和一个指针传递给。 –

回答

2

您将需要使您的serviceCtlHandler函数static,这意味着它将无法访问任何对象成员。这是因为RegisterServiceCtrlHandler期待一个函数指针,它是不依赖于对象,并且不会收到一个隐含this指针。

如果使用RegisterServiceCtrlHandlerEx相反,你可以传递一个指向对象的指针,并有静态函数调用另一个成员函数后妥善铸造的指针。