我正在编写一个服务应用程序,有时在从服务MMC接收到SERVICE_CONTROL_STOP时不能立即停止。我目前正在处理这件事是这样的:(伪代码):如何从服务中返回错误?
DWORD
HandlerEx(
DWORD dwControl,
DWORD dwEventType,
PVOID pvEventData,
PVOID pvContext
)
{
switch(dwControl)
{
case SERVICE_CONTROL_STOP:
if (CanStopServiceNow())
{
ReportStatus(SERVICE_STOP_PENDING);
DoStopService();
ReportStatus(SERVICE_STOPPED);
return NO_ERROR;
}
else
return ERROR_BUSY;
break;
}
return NO_ERROR;
}
它运作良好,当服务可以停止(和它停止),但是,当它不能停止,我希望Windows能够报告错误我回国(ERROR_BUSY在这个例子中)。相反,Windows会显示一条消息说:
"The service did not return an error.
This could be an internal Windows error or an internal service error."
所以我的问题是,如何使服务报告回SCM,它现在不能停下来,让MMC显示器关于我要返回的实际错误代码的消息?
这正是我正在做的。但是这并不能回答我的问题,对不起。 – 2008-11-15 23:04:15