Funzione StartServiceW (winsvc.h)
Avvia un servizio.
Sintassi
BOOL StartServiceW(
[in] SC_HANDLE hService,
[in] DWORD dwNumServiceArgs,
[in, optional] LPCWSTR *lpServiceArgVectors
);
Parametri
[in] hService
Handle per il servizio. Questo handle viene restituito dalla funzione OpenService o CreateService e deve avere il diritto di accesso SERVICE_START. Per altre informazioni, vedere Service Security and Access Rights.
[in] dwNumServiceArgs
Numero di stringhe nella matrice
[in, optional] lpServiceArgVectors
Stringhe con terminazione Null da passare alla funzione servicemain
I servizi driver non ricevono questi argomenti.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero.
Se la funzione ha esito negativo, il valore restituito è zero. Per ottenere informazioni estese sull'errore, chiamare GetLastError.
I codici di errore seguenti possono essere impostati dal gestore di controllo del servizio. Altri possono essere impostati dalle funzioni del Registro di sistema chiamate dal gestore del controllo del servizio.
Codice restituito | Descrizione |
---|---|
|
L'handle non dispone del diritto di accesso SERVICE_START. |
|
L'handle non è valido. |
|
Impossibile trovare il file binario del servizio. |
|
Un'istanza del servizio è già in esecuzione. |
|
Il database è bloccato. |
|
Il servizio dipende da un servizio che non esiste o è stato contrassegnato per l'eliminazione. |
|
Il servizio dipende da un altro servizio che non è stato avviato. |
|
Il servizio è stato disabilitato. |
|
Il servizio non è stato avviato a causa di un errore di accesso. Questo errore si verifica se il servizio è configurato per l'esecuzione con un account che non dispone del diritto "Accesso come servizio". |
|
Il servizio è stato contrassegnato per l'eliminazione. |
|
Impossibile creare un thread per il servizio. |
|
Il processo per il servizio è stato avviato, ma non ha chiamato StartServiceCtrlDispatchero il thread che ha chiamato StartServiceCtrlDispatcher potrebbe essere bloccato in una funzione del gestore di controllo. |
Osservazioni
Quando viene avviato un servizio driver, la funzione StartService
Quando un servizio viene avviato, Service Control Manager (SCM) genera il processo del servizio, se necessario. Se il servizio specificato condivide un processo con altri servizi, è possibile che il processo richiesto esista già. La funzione StartService
Gestione controllo servizi imposta i valori di stato predefiniti seguenti prima di restituire da StartService:
- Lo stato corrente del servizio è impostato su SERVICE_START_PENDING.
- I controlli accettati sono impostati su nessuno (zero).
- Il valore checkpoint è impostato su zero.
- Il tempo WaitHint è impostato su 2 secondi.
Un servizio non può chiamare StartService durante l'inizializzazione. Il motivo è che Gestione controllo servizi blocca il database di controllo del servizio durante l'inizializzazione, pertanto una chiamata a StartService verrà bloccata. Dopo che il servizio segnala a Gestione controllo servizi che è stato avviato correttamente, può chiamare StartService.
Come per ControlService, StartService bloccherà per 30 secondi se un servizio è occupato a gestire un codice di controllo. Se il servizio occupato non è ancora stato restituito dalla funzione del gestore quando scade il timeout, StartService ha esito negativo con ERROR_SERVICE_REQUEST_TIMEOUT. Questo perché Gestione controllo servizi elabora una sola notifica di controllo del servizio alla volta.
Esempi
Per un esempio, vedere Avvio di un servizio.
Nota
L'intestazione winsvc.h definisce StartService come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows XP [solo app desktop] |
server minimo supportato | Windows Server 2003 [solo app desktop] |
piattaforma di destinazione | Finestre |
intestazione |
winsvc.h (include Windows.h) |
libreria |
Advapi32.lib |
dll | Advapi32.dll |
Vedere anche
QueryServiceDynamicInformation
di avvio del servizio