Funzione EnumServicesStatusExA (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 EnumServicesStatusExA(
[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] LPCSTR 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 Sicurezza del servizio e diritti di accesso.
[in] InfoLevel
Attributi del servizio da restituire. Usare SC_ENUM_PROCESS_INFO per recuperare le informazioni sul nome e 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 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 |
---|---|
|
Servizi di tipo SERVICE_KERNEL_DRIVER e SERVICE_FILE_SYSTEM_DRIVER. |
|
Servizi driver del file system. |
|
Servizi driver. |
|
Servizi di tipo SERVICE_WIN32_OWN_PROCESS e SERVICE_WIN32_SHARE_PROCESS. |
|
Servizi eseguiti nei propri processi. |
|
Servizi che condividono un processo con uno o più servizi. Per altre informazioni, vedere Programmi di servizio. |
[in] dwServiceState
Stato dei servizi da enumerare. Questo parametro può avere uno dei valori seguenti.
[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, all'input, specifica il punto iniziale dell'enumerazione. È necessario impostare questo valore su zero la prima volta che viene chiamata la 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 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 informazioni dettagliate sull'errore, chiamare GetLastError. È possibile che vengano restituiti gli errori seguenti.
Codice restituito | Descrizione |
---|---|
|
L'handle non dispone del diritto di accesso SC_MANAGER_ENUMERATE_SERVICE . |
|
Il buffer è troppo piccolo. Non tutti i dati nel database attivo potrebbero essere restituiti. Il parametro pcbBytesNeeded contiene il numero di byte necessari per ricevere le voci rimanenti. |
|
È stato usato un valore di parametro non valido. |
|
Handle non valido. |
|
Il parametro InfoLevel contiene un valore non supportato. |
|
Il sistema sta arrestando; questa funzione non può essere chiamata. |
Commenti
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 che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.
Requisiti
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 |