estrutura SERVICE_STATUS_PROCESS (winsvc.h)

Contém informações de status de processo para um serviço. As funções ControlServiceEx, EnumServicesStatusEx, NotifyServiceStatusChange e QueryServiceStatusEx usam essa estrutura.

Sintaxe

typedef struct _SERVICE_STATUS_PROCESS {
  DWORD dwServiceType;
  DWORD dwCurrentState;
  DWORD dwControlsAccepted;
  DWORD dwWin32ExitCode;
  DWORD dwServiceSpecificExitCode;
  DWORD dwCheckPoint;
  DWORD dwWaitHint;
  DWORD dwProcessId;
  DWORD dwServiceFlags;
} SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS;

Membros

dwServiceType

O tipo do serviço. Esse membro pode ser um dos valores a seguir.

Valor Significado
SERVICE_FILE_SYSTEM_DRIVER
0x00000002
O serviço é um driver do sistema de arquivos.
SERVICE_KERNEL_DRIVER
0x00000001
O serviço é um driver de dispositivo.
SERVICE_WIN32_OWN_PROCESS
0x00000010
O serviço é executado em seu próprio processo.
SERVICE_WIN32_SHARE_PROCESS
0x00000020
O serviço compartilha um processo com outros serviços.
 

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
SERVICE_INTERACTIVE_PROCESS
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.

Valor Significado
SERVICE_CONTINUE_PENDING
0x00000005
O serviço está prestes a continuar.
SERVICE_PAUSE_PENDING
0x00000006
O serviço está em pausa.
SERVICE_PAUSED
0x00000007
O serviço está em pausa.
SERVICE_RUNNING
0x00000004
O serviço está em execução.
SERVICE_START_PENDING
0x00000002
O serviço está iniciando.
SERVICE_STOP_PENDING
0x00000003
Serviço está parando.
SERVICE_STOPPED
0x00000001
O serviço foi interrompido.

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 .

Veja a seguir os códigos de controle.

Código de controle Significado
SERVICE_ACCEPT_NETBINDCHANGE
0x00000010
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 .

SERVICE_ACCEPT_PARAMCHANGE
0x00000008
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.

SERVICE_ACCEPT_PAUSE_CONTINUE
0x00000002
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 .

SERVICE_ACCEPT_PRESHUTDOWN
0x00000100
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.

SERVICE_ACCEPT_SHUTDOWN
0x00000004
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.

SERVICE_ACCEPT_STOP
0x00000001
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.)

Código de controle Significado
SERVICE_ACCEPT_HARDWAREPROFILECHANGE
0x00000020
O serviço é notificado quando o perfil de hardware do computador é alterado. Isso permite que o sistema envie SERVICE_CONTROL_HARDWAREPROFILECHANGE notificações para o serviço.
SERVICE_ACCEPT_POWEREVENT
0x00000040
O serviço é notificado quando a status de energia do computador é alterada. Isso permite que o sistema envie SERVICE_CONTROL_POWEREVENT notificações para o serviço.
SERVICE_ACCEPT_SESSIONCHANGE
0x00000080
O serviço é notificado quando a sessão do computador status foi alterada. Isso permite que o sistema envie SERVICE_CONTROL_SESSIONCHANGE notificações para o serviço.

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 quando for encerrado normalmente.

dwServiceSpecificExitCode

O 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 que 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.

dwProcessId

O identificador de processo do serviço.

dwServiceFlags

Esse membro pode ser um dos valores a seguir.

Valor Significado
0
O serviço está em execução em um processo que não é um processo do sistema ou não está em execução.

Se o serviço estiver em execução em um processo que não seja um processo do sistema, dwProcessId não será zero. Se o serviço não estiver em execução, dwProcessId será zero.

SERVICE_RUNS_IN_SYSTEM_PROCESS
0x00000001
O serviço é executado em um processo do sistema que deve estar sempre em execução.

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)

Confira também

ControlServiceEx

EnumServicesStatusEx

NotifyServiceStatusChange

QueryServiceStatusEx