【发布时间】:2013-12-12 08:52:53
【问题描述】:
我可以使用成员函数作为 SERVICE_TABLE_ENTRYA 结构中的回调吗?它的类型 LPSERVICE_MAIN_FUNCTION 被定义为
typedef VOID (WINAPI *LPSERVICE_MAIN_FUNCTIONA)(
DWORD dwNumServicesArgs,
LPSTR *lpServiceArgVectors
);
这里的主要问题是 WINAPI 调用约定(我不能像 previous question 那样使用 lambda)。我也不想使用静态成员函数。
【问题讨论】:
-
很好,因为静态成员函数并不总是能正常工作。无论如何,由于它无法传递任意数据,您可能会发现这很有用:stackoverflow.com/questions/18169180/…
-
不过,我认为您可能能够与服务建立某种形式的通信以通过对象发送。
-
很难知道为什么要使用非静态成员函数。我想知道这个问题背后是否存在一些更深层次的误解。
-
@DavidHeffernan,至于使用静态的,this page 非常有用。
-
请注意,VC++ 自动使用正确的调用约定,因此如果您使用该编译器,则可以安全地使用带有 WinAPI 回调函数的 lambda。