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.
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 |
---|---|
|
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.
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 |
---|---|
|
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 . |
|
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 . |
|
Il servizio può essere sospeso e continuato.
Questo codice di controllo consente al servizio di ricevere notifiche SERVICE_CONTROL_PAUSE e SERVICE_CONTROL_CONTINUE . |
|
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. |
|
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. |
|
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.
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.
Requisiti
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Intestazione | winsvc.h (include Windows.h) |