Condividi tramite


Funzione EnumServicesStatusExW (winsvc.h)

Enumera i servizi nel database di Gestione controllo dei servizi specificato. Vengono forniti il nome e lo stato di ogni servizio, insieme a dati aggiuntivi in base al livello di informazioni specificato.

Sintassi

BOOL EnumServicesStatusExW(
  [in]                SC_HANDLE    hSCManager,
  [in]                SC_ENUM_TYPE InfoLevel,
  [in]                DWORD        dwServiceType,
  [in]                DWORD        dwServiceState,
  [out, optional]     LPBYTE       lpServices,
  [in]                DWORD        cbBufSize,
  [out]               LPDWORD      pcbBytesNeeded,
  [out]               LPDWORD      lpServicesReturned,
  [in, out, optional] LPDWORD      lpResumeHandle,
  [in, optional]      LPCWSTR      pszGroupName
);

Parametri

[in] hSCManager

Handle per il database di Gestione controllo dei servizi. Questo handle viene restituito dalla funzione OpenSCManager e deve avere il diritto di accesso SC_MANAGER_ENUMERATE_SERVICE. Per altre informazioni, vedere Service Security and Access Rights.

[in] InfoLevel

Attributi del servizio da restituire. Usare SC_ENUM_PROCESS_INFO per recuperare il nome e le informazioni sullo stato del servizio per ogni servizio nel database. Il parametro lpServices è un puntatore a un buffer che riceve una matrice di strutture ENUM_SERVICE_STATUS_PROCESS. Il buffer deve essere sufficientemente grande da contenere le strutture e le stringhe a cui puntano i relativi membri.

Attualmente non sono definiti altri livelli di informazioni.

[in] dwServiceType

Tipo di servizi da enumerare. Questo parametro può essere uno o più dei valori seguenti.

Valore Significato
SERVICE_DRIVER
0x0000000B
Servizi di tipo SERVICE_KERNEL_DRIVER e SERVICE_FILE_SYSTEM_DRIVER.
SERVICE_FILE_SYSTEM_DRIVER
0x00000002
Servizi driver del file system.
SERVICE_KERNEL_DRIVER
0x00000001
Servizi driver.
SERVICE_WIN32
0x00000030
Servizi di tipo SERVICE_WIN32_OWN_PROCESS e SERVICE_WIN32_SHARE_PROCESS.
SERVICE_WIN32_OWN_PROCESS
0x00000010
Servizi eseguiti nei propri processi.
SERVICE_WIN32_SHARE_PROCESS
0x00000020
Servizi che condividono un processo con uno o più servizi. Per altre informazioni, vedere Service Programs.

[in] dwServiceState

Stato dei servizi da enumerare. Questo parametro può essere uno dei valori seguenti.

Valore Significato
SERVICE_ACTIVE
0x00000001
Enumera i servizi inclusi negli stati seguenti: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDINGe SERVICE_PAUSED.
SERVICE_INACTIVE
0x00000002
Enumera i servizi nello stato SERVICE_STOPPED.
SERVICE_STATE_ALL
0x00000003
Combina gli stati SERVICE_ACTIVE e SERVICE_INACTIVE.

[out, optional] lpServices

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 256.000 byte. 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_MORE_DATA. Il parametro pcbBytesNeeded riceverà le dimensioni necessarie.

Windows Server 2003 e Windows XP: La dimensione massima di questa matrice è di 64.000 byte. Questo limite è stato aumentato a partire da Windows Server 2003 con SP1 e Windows XP con SP2.

[in] cbBufSize

Dimensioni del buffer a cui punta il parametro lpServices in byte.

[out] pcbBytesNeeded

Puntatore a una variabile che riceve il numero di byte necessari per restituire le voci del servizio rimanenti, se il buffer è troppo piccolo.

[out] lpServicesReturned

Puntatore a una variabile che riceve il numero di voci del servizio restituite.

[in, out, optional] lpResumeHandle

Puntatore a una variabile che, in input, specifica il punto iniziale dell'enumerazione. È necessario impostare questo valore su zero alla prima chiamata della funzione EnumServicesStatusEx. Nell'output questo valore è zero se la funzione ha esito positivo. Tuttavia, se la funzione restituisce zero e la funzione GetLastError restituisce ERROR_MORE_DATA, questo valore indica la voce di servizio successiva da leggere quando viene chiamata la funzione di EnumServicesStatusEx per recuperare i dati aggiuntivi.

[in, optional] pszGroupName

Nome del gruppo dell'ordine di caricamento. Se questo parametro è una stringa, gli unici servizi enumerati sono quelli che appartengono al gruppo con il nome specificato dalla stringa. Se questo parametro è una stringa vuota, vengono enumerati solo i servizi che non appartengono ad alcun gruppo. Se questo parametro è NULL, l'appartenenza al gruppo viene ignorata e tutti i servizi vengono enumerati.

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. È possibile che vengano restituiti gli errori seguenti.

Codice restituito Descrizione
ERROR_ACCESS_DENIED
L'handle non dispone del diritto di accesso SC_MANAGER_ENUMERATE_SERVICE.
ERROR_MORE_DATA
Il buffer è troppo piccolo. Non è possibile restituire tutti i dati nel database attivo. Il parametro pcbBytesNeeded contiene il numero di byte necessari per ricevere le voci rimanenti.
ERROR_INVALID_PARAMETER
È stato usato un valore di parametro non valido.
ERROR_INVALID_HANDLE
L'handle 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.

Osservazioni

Se il chiamante non dispone del diritto di accesso SERVICE_QUERY_STATUS a un servizio, il servizio viene omesso automaticamente dall'elenco dei servizi restituiti al client.

Nota

L'intestazione winsvc.h definisce EnumServicesStatusEx 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

ENUM_SERVICE_STATUS_PROCESS

Funzioni del servizio

'installazione, rimozione ed enumerazione del servizio