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
ERROR_INVALID_HANDLE
Handle non valido.
ERROR_ACCESS_DENIED
L'handle non dispone del diritto di accesso SERVICE_QUERY_STATUS.
ERROR_INSUFFICIENT_BUFFER
Il buffer è troppo piccolo per la struttura SERVICE_STATUS_PROCESS . Niente è stato scritto nella struttura.
ERROR_INVALID_PARAMETER
Il membro cbSize di SERVICE_STATUS_PROCESS non è valido.
ERROR_INVALID_LEVEL
Il parametro InfoLevel contiene un valore non supportato.
ERROR_SHUTDOWN_IN_PROGRESS
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

Vedi anche

SERVICE_STATUS_PROCESS

Funzioni del servizio

Avvio del servizio