Compartir a través de


SERVICE_STATUS_PROCESS estructura (winsvc.h)

Contiene información de estado de proceso para un servicio. Las funciones ControlServiceEx, EnumServicesStatusEx, NotifyServiceStatusChange y QueryServiceStatusEx usan esta estructura.

Sintaxis

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;

Miembros

dwServiceType

Tipo de servicio. Este miembro puede ser uno de los valores siguientes.

Valor Significado
SERVICE_FILE_SYSTEM_DRIVER
0x00000002
El servicio es un controlador del sistema de archivos.
SERVICE_KERNEL_DRIVER
0x00000001
El servicio es un controlador de dispositivo.
SERVICE_WIN32_OWN_PROCESS
0x00000010
El servicio se ejecuta en su propio proceso.
SERVICE_WIN32_SHARE_PROCESS
0x00000020
El servicio comparte un proceso con otros servicios.
 

Si el tipo de servicio es SERVICE_WIN32_OWN_PROCESS o SERVICE_WIN32_SHARE_PROCESS, y el servicio se ejecuta en el contexto de la cuenta LocalSystem, también se puede especificar el tipo siguiente.

Valor Significado
SERVICE_INTERACTIVE_PROCESS
El servicio puede interactuar con el escritorio.

Para obtener más información, consulte Interactive Services.

dwCurrentState

Estado actual del servicio. Este miembro puede ser uno de los valores siguientes.

Valor Significado
SERVICE_CONTINUE_PENDING
0x00000005
El servicio está a punto de continuar.
SERVICE_PAUSE_PENDING
0x00000006
El servicio se está pausando.
SERVICE_PAUSED
0x00000007
El servicio está en pausa.
SERVICE_RUNNING
0x00000004
El servicio está ejecutándose.
SERVICE_START_PENDING
0x00000002
El servicio está iniciándose.
SERVICE_STOP_PENDING
0x00000003
El servicio está deteniéndose.
SERVICE_STOPPED
0x00000001
El servicio se ha detenido.

dwControlsAccepted

Los códigos de control que el servicio acepta y procesa en su función de controlador (consulte Handler y HandlerEx). Un proceso de interfaz de usuario puede controlar un servicio especificando un comando de control en la función ControlService o ControlServiceEx . De forma predeterminada, todos los servicios aceptan el valor de SERVICE_CONTROL_INTERROGATE .

A continuación se muestran los códigos de control.

Código de control Significado
SERVICE_ACCEPT_NETBINDCHANGE
0x00000010
El servicio es un componente de red que puede aceptar cambios en su enlace sin detenerse y reiniciarse.

Este código de control permite al servicio recibir notificaciones de SERVICE_CONTROL_NETBINDADD, SERVICE_CONTROL_NETBINDREMOVE, SERVICE_CONTROL_NETBINDENABLE y SERVICE_CONTROL_NETBINDDISABLE .

SERVICE_ACCEPT_PARAMCHANGE
0x00000008
El servicio puede volver a leer sus parámetros de inicio sin ser detenido y reiniciado.

Este código de control permite al servicio recibir notificaciones SERVICE_CONTROL_PARAMCHANGE .

SERVICE_ACCEPT_PAUSE_CONTINUE
0x00000002
El servicio se puede pausar y continuar.

Este código de control permite al servicio recibir notificaciones SERVICE_CONTROL_PAUSE y SERVICE_CONTROL_CONTINUE .

SERVICE_ACCEPT_PRESHUTDOWN
0x00000100
El servicio puede realizar tareas previas.

Este código de control permite al servicio recibir notificaciones SERVICE_CONTROL_PRESHUTDOWN . Tenga en cuenta que ControlService y ControlServiceEx no pueden enviar esta notificación; solo el sistema puede enviarlo.

Windows Server 2003 y Windows XP: Este valor no se admite.

SERVICE_ACCEPT_SHUTDOWN
0x00000004
Se notifica al servicio cuando se produce el apagado del sistema.

Este código de control permite al servicio recibir notificaciones SERVICE_CONTROL_SHUTDOWN . Tenga en cuenta que ControlService y ControlServiceEx no pueden enviar esta notificación; solo el sistema puede enviarlo.

SERVICE_ACCEPT_STOP
0x00000001
El servicio se puede detener.

Este código de control permite al servicio recibir notificaciones SERVICE_CONTROL_STOP .

 

Este miembro también puede contener los siguientes códigos de control extendidos, que solo son compatibles con HandlerEx. (Tenga en cuenta que controlService o ControlServiceEx no pueden enviar estos códigos de control).

Código de control Significado
SERVICE_ACCEPT_HARDWAREPROFILECHANGE
0x00000020
Se notifica al servicio cuando el perfil de hardware del equipo ha cambiado. Esto permite al sistema enviar notificaciones SERVICE_CONTROL_HARDWAREPROFILECHANGE al servicio.
SERVICE_ACCEPT_POWEREVENT
0x00000040
El servicio recibe una notificación cuando el estado de alimentación del equipo ha cambiado. Esto permite al sistema enviar notificaciones SERVICE_CONTROL_POWEREVENT al servicio.
SERVICE_ACCEPT_SESSIONCHANGE
0x00000080
El servicio recibe una notificación cuando el estado de sesión del equipo ha cambiado. Esto permite al sistema enviar SERVICE_CONTROL_SESSIONCHANGE notificaciones al servicio.

dwWin32ExitCode

El código de error que usa el servicio para notificar un error que se produce cuando se inicia o se detiene. Para devolver un código de error específico del servicio, el servicio debe establecer este valor en ERROR_SERVICE_SPECIFIC_ERROR para indicar que el miembro dwServiceSpecificExitCode contiene el código de error. El servicio debe establecer este valor en NO_ERROR cuando se ejecuta y cuando finaliza normalmente.

dwServiceSpecificExitCode

Código de error específico del servicio que devuelve el servicio cuando se produce un error mientras el servicio se inicia o se detiene. Este valor se omite a menos que el miembro dwWin32ExitCode esté establecido en ERROR_SERVICE_SPECIFIC_ERROR.

dwCheckPoint

Valor de punto de comprobación que el servicio incrementa periódicamente para notificar su progreso durante una operación larga de inicio, detención, pausa o continuación. Por ejemplo, el servicio debe incrementar este valor, ya que completa cada paso de su inicialización cuando se inicia. El programa de interfaz de usuario que invocó la operación en el servicio usa este valor para realizar un seguimiento del progreso del servicio durante una operación prolongada. Este valor no es válido y debe ser cero cuando el servicio no tiene una operación de inicio, detención, pausa o continuación pendiente.

dwWaitHint

Tiempo estimado necesario para una operación de inicio, detención, pausa o continuación pendientes, en milisegundos. Antes de que haya transcurrido el tiempo especificado, el servicio debe realizar su siguiente llamada a la función SetServiceStatus con un valor dwCheckPoint incrementado o un cambio en dwCurrentState. Si la cantidad de tiempo especificada por dwWaitHint pasa, y dwCheckPoint no se ha incrementado o dwCurrentState no ha cambiado, el administrador de control de servicio o el programa de control de servicio pueden suponer que se ha producido un error y que el servicio debe detenerse. Sin embargo, si el servicio comparte un proceso con otros servicios, el administrador de control de servicios no puede finalizar la aplicación de servicio porque tendría que terminar también los demás servicios que comparten el proceso.

dwProcessId

Identificador de proceso del servicio.

dwServiceFlags

Este miembro puede ser uno de los siguientes valores.

Valor Significado
0
El servicio se ejecuta en un proceso que no es un proceso del sistema o no se está ejecutando.

Si el servicio se ejecuta en un proceso que no es un proceso del sistema, dwProcessId no es cero. Si el servicio no se está ejecutando, dwProcessId es cero.

SERVICE_RUNS_IN_SYSTEM_PROCESS
0x00000001
El servicio se ejecuta en un proceso del sistema que siempre debe estar en ejecución.

Requisitos

   
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado winsvc.h (incluye Windows.h)

Consulte también

ControlServiceEx

EnumServicesStatusEx

NotifyServiceStatusChange

QueryServiceStatusEx