Condividi tramite


struttura SERVICE_STATUS_PROCESS (winsvc.h)

Contiene informazioni sullo stato del processo per un servizio. Le funzioni ControlServiceEx, EnumServicesStatusEx, NotifyServiceStatusChange e QueryServiceStatusEx usano questa struttura.

Sintassi

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;

Members

dwServiceType

Tipo di servizio. Questo membro può essere uno dei valori seguenti.

Valore Significato
SERVICE_FILE_SYSTEM_DRIVER
0x00000002
Il servizio è un driver del file system.
SERVICE_KERNEL_DRIVER
0x00000001
Il servizio è un driver di dispositivo.
SERVICE_WIN32_OWN_PROCESS
0x00000010
Il servizio viene eseguito nel proprio processo.
SERVICE_WIN32_SHARE_PROCESS
0x00000020
Il servizio condivide un processo con altri servizi.
 

Se il tipo di servizio è SERVICE_WIN32_OWN_PROCESS o SERVICE_WIN32_SHARE_PROCESS e il servizio è in esecuzione nel contesto dell'account LocalSystem, è possibile specificare anche il tipo seguente.

Valore Significato
SERVICE_INTERACTIVE_PROCESS
Il servizio può interagire con il desktop.

Per altre informazioni, vedere Interactive Services.

dwCurrentState

Stato corrente del servizio. Questo membro può essere uno dei valori seguenti.

Valore Significato
SERVICE_CONTINUE_PENDING
0x00000005
Il servizio sta per continuare.
SERVICE_PAUSE_PENDING
0x00000006
Il servizio è in pausa.
SERVICE_PAUSED
0x00000007
Il servizio è in pausa.
SERVICE_RUNNING
0x00000004
Il servizio è in esecuzione.
SERVICE_START_PENDING
0x00000002
Il servizio è in fase di avvio.
SERVICE_STOP_PENDING
0x00000003
Il servizio è in fase di interruzione.
SERVICE_STOPPED
0x00000001
Il servizio è stato arrestato.

dwControlsAccepted

I codici di controllo accettano e elaborano il servizio nella relativa funzione del gestore (vedere Handler e HandlerEx). Un processo dell'interfaccia utente può controllare un servizio specificando un comando di controllo nella funzione ControlService o ControlServiceEx . Per impostazione predefinita, tutti i servizi accettano il valore SERVICE_CONTROL_INTERROGATE .

Di seguito sono riportati i codici di controllo.

Codice di controllo Significato
SERVICE_ACCEPT_NETBINDCHANGE
0x00000010
Il servizio è un componente di rete che può accettare modifiche nell'associazione senza essere arrestato e riavviato.

Questo codice di controllo consente al servizio di ricevere notifiche SERVICE_CONTROL_NETBINDADD, SERVICE_CONTROL_NETBINDREMOVE, SERVICE_CONTROL_NETBINDENABLE e SERVICE_CONTROL_NETBINDDISABLE .

SERVICE_ACCEPT_PARAMCHANGE
0x00000008
Il servizio può rileggere i parametri di avvio senza essere arrestato e riavviato.

Questo codice di controllo consente al servizio di ricevere notifiche SERVICE_CONTROL_PARAMCHANGE .

SERVICE_ACCEPT_PAUSE_CONTINUE
0x00000002
Il servizio può essere sospeso e continuato.

Questo codice di controllo consente al servizio di ricevere notifiche SERVICE_CONTROL_PAUSE e SERVICE_CONTROL_CONTINUE .

SERVICE_ACCEPT_PRESHUTDOWN
0x00000100
Il servizio può eseguire attività di preshutdown.

Questo codice di controllo consente al servizio di ricevere notifiche SERVICE_CONTROL_PRESHUTDOWN . Si noti che ControlService e ControlServiceEx non possono inviare questa notifica; solo il sistema può inviarlo.

Windows Server 2003 e Windows XP: Questo valore non è supportato.

SERVICE_ACCEPT_SHUTDOWN
0x00000004
Il servizio riceve una notifica quando si verifica l'arresto del sistema.

Questo codice di controllo consente al servizio di ricevere notifiche SERVICE_CONTROL_SHUTDOWN . Si noti che ControlService e ControlServiceEx non possono inviare questa notifica; solo il sistema può inviarlo.

SERVICE_ACCEPT_STOP
0x00000001
Il servizio può essere arrestato.

Questo codice di controllo consente al servizio di ricevere notifiche SERVICE_CONTROL_STOP .

 

Questo membro può anche contenere i codici di controllo estesi seguenti, supportati solo da HandlerEx. Si noti che questi codici di controllo non possono essere inviati da ControlService o ControlServiceEx.

Codice di controllo Significato
SERVICE_ACCEPT_HARDWAREPROFILECHANGE
0x00000020
Il servizio riceve una notifica quando il profilo hardware del computer è cambiato. In questo modo il sistema può inviare notifiche SERVICE_CONTROL_HARDWAREPROFILECHANGE al servizio.
SERVICE_ACCEPT_POWEREVENT
0x00000040
Il servizio riceve una notifica quando lo stato di alimentazione del computer è cambiato. In questo modo il sistema può inviare notifiche SERVICE_CONTROL_POWEREVENT al servizio.
SERVICE_ACCEPT_SESSIONCHANGE
0x00000080
Il servizio riceve una notifica quando lo stato della sessione del computer è cambiato. In questo modo il sistema può inviare notifiche SERVICE_CONTROL_SESSIONCHANGE al servizio.

dwWin32ExitCode

Codice di errore usato dal servizio per segnalare un errore che si verifica all'avvio o all'arresto. Per restituire un codice di errore specifico per il servizio, il servizio deve impostare questo valore su ERROR_SERVICE_SPECIFIC_ERROR per indicare che il membro dwServiceSpecificExitCode contiene il codice di errore. Il servizio deve impostare questo valore su NO_ERROR quando è in esecuzione e quando termina normalmente.

dwServiceSpecificExitCode

Codice di errore specifico del servizio restituito dal servizio quando si verifica un errore durante l'avvio o l'arresto del servizio. Questo valore viene ignorato a meno che il membro dwWin32ExitCode non sia impostato su ERROR_SERVICE_SPECIFIC_ERROR.

dwCheckPoint

Valore del punto di controllo incrementato periodicamente dal servizio per segnalare lo stato di avanzamento durante un'operazione di avvio, arresto, sospensione o continuazione. Ad esempio, il servizio deve incrementare questo valore man mano che completa ogni passaggio dell'inizializzazione all'avvio. Il programma dell'interfaccia utente che ha richiamato l'operazione nel servizio usa questo valore per tenere traccia dello stato di avanzamento del servizio durante un'operazione lunga. Questo valore non è valido e deve essere zero quando il servizio non ha un'operazione di avvio, arresto, sospensione o continuazione in sospeso.

dwWaitHint

Tempo stimato necessario per un'operazione di avvio, arresto, sospensione o continuazione in sospeso, in millisecondi. Prima che sia trascorso il periodo di tempo specificato, il servizio deve effettuare la chiamata successiva alla funzione SetServiceStatus con un valore dwCheckPoint incrementato o una modifica in dwCurrentState. Se la quantità di tempo specificata da dwWaitHint passa e dwCheckPoint non è stato incrementato o dwCurrentState non è stato modificato, gestione controllo del servizio o programma di controllo del servizio può presupporre che si sia verificato un errore e che il servizio debba essere arrestato. Tuttavia, se il servizio condivide un processo con altri servizi, gestione controllo del servizio non può terminare l'applicazione di servizio perché deve terminare anche gli altri servizi che condividono il processo.

dwProcessId

Identificatore del processo del servizio.

dwServiceFlags

Questo membro può essere uno dei valori seguenti.

Valore Significato
0
Il servizio è in esecuzione in un processo che non è un processo di sistema o non è in esecuzione.

Se il servizio è in esecuzione in un processo che non è un processo di sistema, dwProcessId è diverso da zero. Se il servizio non è in esecuzione, dwProcessId è zero.

SERVICE_RUNS_IN_SYSTEM_PROCESS
0x00000001
Il servizio viene eseguito in un processo di sistema che deve essere sempre in esecuzione.

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Intestazione winsvc.h (include Windows.h)

Vedi anche

ControlServiceEx

EnumServicesStatusEx

NotifyServiceStatusChange

QueryServiceStatusEx