LPSERVICE_MAIN_FUNCTIONA funzione di callback (winsvc.h)
Punto di ingresso per un servizio.
Il tipo LPSERVICE_MAIN_FUNCTION definisce un puntatore a questa funzione di callback. ServiceMain è un segnaposto per un nome di funzione definito dall'applicazione.
Sintassi
LPSERVICE_MAIN_FUNCTIONA LpserviceMainFunctiona;
void LpserviceMainFunctiona(
[in] DWORD dwNumServicesArgs,
[in] LPSTR *lpServiceArgVectors
)
{...}
Parametri
[in] dwNumServicesArgs
Numero di argomenti nella matrice
[in] lpServiceArgVectors
Stringhe di argomenti con terminazione Null passate al servizio dalla chiamata alla funzione StartService che ha avviato il servizio. Se non sono presenti argomenti, questo parametro può essere NULL. In caso contrario, il primo argomento (lpServiceArgVectors[0]) è il nome del servizio, seguito da eventuali argomenti aggiuntivi (lpServiceArgVectors[1] fino a lpServiceArgVectors[dwNumServicesArgs-1]).
Se l'utente avvia un servizio manuale usando lo snap-in Servizi dal Pannello di controllo, le stringhe per l'lpServiceArgVectors parametro provengono dalla finestra di dialogo delle proprietà per il servizio (dallo snap-in Servizi fare clic con il pulsante destro del mouse sulla voce del servizio, fare clic su Proprietàe immettere i parametri in parametri Start.)
Valore restituito
Nessuno
Osservazioni
Un programma di servizio può avviare uno o più servizi. Un processo di servizio ha una struttura SERVICE_TABLE_ENTRY per ogni servizio che può avviare. La struttura specifica il nome del servizio e un puntatore alla funzione
Quando il gestore di controllo del servizio riceve una richiesta di avvio di un servizio, avvia il processo del servizio (se non è già in esecuzione). Il thread principale del processo del servizio chiama la funzione
La funzione ServiceMain
Service Control Manager (SCM) attende fino a quando il servizio non segnala lo stato di SERVICE_RUNNING. È consigliabile che il servizio segnala questo stato il più rapidamente possibile, poiché altri componenti del sistema che richiedono l'interazione con SCM verranno bloccati durante questo periodo. Alcune funzioni possono richiedere l'interazione con SCM direttamente o indirettamente.
Gestione controllo servizi blocca il database di controllo del servizio durante l'inizializzazione, pertanto se un servizio tenta di chiamare StartService durante l'inizializzazione, la chiamata verrà bloccata. Quando il servizio segnala a Gestione controllo servizi che è stato avviato correttamente, può chiamare StartService. Se il servizio richiede l'esecuzione di un altro servizio, il servizio deve impostare le dipendenze necessarie.
Inoltre, non è consigliabile chiamare funzioni di sistema durante l'inizializzazione del servizio. Il codice del servizio deve chiamare le funzioni di sistema solo dopo che segnala lo stato di SERVICE_RUNNING.
La funzione
Esempi
Per un esempio, vedere Scrittura di una funzione ServiceMain.
Nota
L'intestazione winsvc.h definisce LPSERVICE_MAIN_FUNCTION 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) |
Vedere anche
funzione ServiceMain del servizio