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

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

如何獲得一個兼容的指針?傳遞類成員函數指針

+0

撥打免費或靜態函數和一個指針傳遞給。 –

回答

2

您將需要使您的serviceCtlHandler函數static,這意味着它將無法訪問任何對象成員。這是因爲RegisterServiceCtrlHandler期待一個函數指針,它是不依賴於對象,並且不會收到一個隱含this指針。

如果使用RegisterServiceCtrlHandlerEx相反,你可以傳遞一個指向對象的指針,並有靜態函數調用另一個成員函數後妥善鑄造的指針。