我正在編寫一個服務應用程序,有時在從服務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