Funzione QueryServiceStatusEx (winsvc.h)
Recupera lo stato corrente del servizio specificato in base al livello di informazioni specificato.
Sintassi
BOOL QueryServiceStatusEx(
[in] SC_HANDLE hService,
[in] SC_STATUS_TYPE InfoLevel,
[out, optional] LPBYTE lpBuffer,
[in] DWORD cbBufSize,
[out] LPDWORD pcbBytesNeeded
);
Parametri
[in] hService
Handle per il servizio. Questo handle viene restituito dalla funzione CreateService o OpenService e deve avere il diritto di accesso SERVICE_QUERY_STATUS. Per altre informazioni, vedere Sicurezza del servizio e diritti di accesso.
[in] InfoLevel
Attributi del servizio da restituire. Usare SC_STATUS_PROCESS_INFO per recuperare le informazioni sullo stato del servizio. Il parametro lpBuffer è un puntatore a una struttura SERVICE_STATUS_PROCESS .
Attualmente non sono definiti altri livelli di informazioni.
[out, optional] lpBuffer
Puntatore al buffer che riceve le informazioni sullo stato. Il formato di questi dati dipende dal valore del parametro InfoLevel .
La dimensione massima di questa matrice è di 8 KB. Per determinare le dimensioni necessarie, specificare NULL per questo parametro e 0 per il parametro cbBufSize . La funzione avrà esito negativo e GetLastError restituirà ERROR_INSUFFICIENT_BUFFER. Il parametro pcbBytesNeeded riceverà le dimensioni necessarie.
[in] cbBufSize
Dimensioni del buffer a cui punta il parametro lpBuffer , in byte.
[out] pcbBytesNeeded
Puntatore a una variabile che riceve il numero di byte necessari per archiviare tutte le informazioni sullo stato, se la funzione ha esito negativo con ERROR_INSUFFICIENT_BUFFER.
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 informazioni dettagliate sull'errore, chiamare GetLastError. È possibile restituire gli errori seguenti.
Codice restituito | Descrizione |
---|---|
|
Handle non valido. |
|
L'handle non dispone del diritto di accesso SERVICE_QUERY_STATUS. |
|
Il buffer è troppo piccolo per la struttura SERVICE_STATUS_PROCESS . Niente è stato scritto nella struttura. |
|
Il membro cbSize di SERVICE_STATUS_PROCESS non è valido. |
|
Il parametro InfoLevel contiene un valore non supportato. |
|
Il sistema sta arrestando; questa funzione non può essere chiamata. |
Commenti
La funzione QueryServiceStatusEx restituisce le informazioni più recenti sullo stato del servizio segnalate alla gestione controllo del servizio. Se il servizio ha appena modificato lo stato, potrebbe non essere stato ancora aggiornato il gestore di controllo del servizio.
L'identificatore del processo restituito nella struttura di SERVICE_STATUS_PROCESS è valido a condizione che lo stato del servizio sia uno dei SERVICE_RUNNING, SERVICE_PAUSE_PENDING, SERVICE_PAUSED o SERVICE_CONTINUE_PENDING. Se il servizio si trova in uno stato SERVICE_START_PENDING o SERVICE_STOP_PENDING, tuttavia, l'identificatore del processo potrebbe non essere valido e, se il servizio si trova nello stato SERVICE_STOPPED, non è mai valido.
Esempio
Per un esempio, vedere Avvio di un servizio o Arresto di un servizio.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winsvc.h (include Windows.h) |
Libreria | Advapi32.lib |
DLL | Advapi32.dll |