我正在编写一个服务应用程序,有时无法在从服务 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 显示有关我返回的实际错误代码的消息?