estrutura SERVICE_STATUS (winsvc.h)
Contém status informações de um serviço. As funções ControlService, EnumDependentServices, EnumServicesStatus e QueryServiceStatus usam essa estrutura. Um serviço usa essa estrutura na função SetServiceStatus para relatar seu status atual ao gerenciador de controle de serviço.
Sintaxe
typedef struct _SERVICE_STATUS {
DWORD dwServiceType;
DWORD dwCurrentState;
DWORD dwControlsAccepted;
DWORD dwWin32ExitCode;
DWORD dwServiceSpecificExitCode;
DWORD dwCheckPoint;
DWORD dwWaitHint;
} SERVICE_STATUS, *LPSERVICE_STATUS;
Membros
dwServiceType
O tipo do serviço. Esse membro pode ser um dos valores a seguir.
Se o tipo de serviço for SERVICE_WIN32_OWN_PROCESS ou SERVICE_WIN32_SHARE_PROCESS e o serviço estiver em execução no contexto da conta LocalSystem, o tipo a seguir também poderá ser especificado.
Valor | Significado |
---|---|
|
O serviço pode interagir com a área de trabalho.
Para obter mais informações, consulte Serviços Interativos. |
dwCurrentState
O estado atual do serviço. Esse membro pode ser um dos valores a seguir.
dwControlsAccepted
O controle codifica que o serviço aceita e processa em sua função de manipulador (consulte Handler e HandlerEx). Um processo de interface do usuário pode controlar um serviço especificando um comando de controle na função ControlService ou ControlServiceEx . Por padrão, todos os serviços aceitam o valor SERVICE_CONTROL_INTERROGATE .
Para aceitar o valor SERVICE_CONTROL_DEVICEEVENT , o serviço deve se registrar para receber eventos de dispositivo usando a função RegisterDeviceNotification .
Veja a seguir os códigos de controle.
Código de controle | Significado |
---|---|
|
O serviço é um componente de rede que pode aceitar alterações em sua associação sem ser interrompido e reiniciado.
Esse código de controle permite que o serviço receba notificações de SERVICE_CONTROL_NETBINDADD, SERVICE_CONTROL_NETBINDREMOVE, SERVICE_CONTROL_NETBINDENABLE e SERVICE_CONTROL_NETBINDDISABLE . |
|
O serviço pode reler seus parâmetros de inicialização sem ser interrompido e reiniciado.
Esse código de controle permite que o serviço receba SERVICE_CONTROL_PARAMCHANGE notificações. |
|
O serviço pode ser pausado e continuado.
Esse código de controle permite que o serviço receba notificações de SERVICE_CONTROL_PAUSE e SERVICE_CONTROL_CONTINUE . |
|
O serviço pode executar tarefas de pré-desligamento.
Esse código de controle permite que o serviço receba SERVICE_CONTROL_PRESHUTDOWN notificações. Observe que ControlService e ControlServiceEx não podem enviar esta notificação; somente o sistema pode enviá-lo. Windows Server 2003 e Windows XP: Não há suporte para esse valor. |
|
O serviço é notificado quando ocorre o desligamento do sistema.
Esse código de controle permite que o serviço receba SERVICE_CONTROL_SHUTDOWN notificações. Observe que ControlService e ControlServiceEx não podem enviar esta notificação; somente o sistema pode enviá-lo. |
|
O serviço pode ser interrompido.
Esse código de controle permite que o serviço receba SERVICE_CONTROL_STOP notificações. |
Esse membro também pode conter os seguintes códigos de controle estendidos, que têm suporte apenas pelo HandlerEx. (Observe que esses códigos de controle não podem ser enviados por ControlService ou ControlServiceEx.)
dwWin32ExitCode
O código de erro que o serviço usa para relatar um erro que ocorre quando ele está iniciando ou parando. Para retornar um código de erro específico ao serviço, o serviço deve definir esse valor como ERROR_SERVICE_SPECIFIC_ERROR para indicar que o membro dwServiceSpecificExitCode contém o código de erro. O serviço deve definir esse valor como NO_ERROR quando estiver em execução e no encerramento normal.
dwServiceSpecificExitCode
Um código de erro específico do serviço que o serviço retorna quando ocorre um erro enquanto o serviço está iniciando ou parando. Esse valor é ignorado, a menos que o membro dwWin32ExitCode esteja definido como ERROR_SERVICE_SPECIFIC_ERROR.
dwCheckPoint
O valor de ponto marcar o serviço incrementa periodicamente para relatar seu progresso durante uma longa operação de início, parada, pausa ou continuação. Por exemplo, o serviço deve incrementar esse valor à medida que concluir cada etapa de sua inicialização quando estiver sendo iniciado. O programa de interface do usuário que invocou a operação no serviço usa esse valor para acompanhar o progresso do serviço durante uma longa operação. Esse valor não é válido e deve ser zero quando o serviço não tiver uma operação de início, parada, pausa ou continuação pendente.
dwWaitHint
O tempo estimado necessário para uma operação pendente de início, parada, pausa ou continuação, em milissegundos. Antes que a quantidade de tempo especificada tenha decorrido, o serviço deve fazer sua próxima chamada para a função SetServiceStatus com um valor de dwCheckPoint incrementado ou uma alteração em dwCurrentState. Se o tempo especificado por dwWaitHint for aprovado e dwCheckPoint não tiver sido incrementado ou dwCurrentState não tiver sido alterado, o gerenciador de controle de serviço ou programa de controle de serviço poderá assumir que ocorreu um erro e o serviço deve ser interrompido. No entanto, se o serviço compartilhar um processo com outros serviços, o gerenciador de controle de serviço não poderá encerrar o aplicativo de serviço porque ele também teria que encerrar os outros serviços que compartilham o processo.
Requisitos
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Cabeçalho | winsvc.h (inclua Windows.h) |