Funzione EnumDependentServicesA (winsvc.h)
Recupera il nome e lo stato di ogni servizio che dipende dal servizio specificato; ovvero, il servizio specificato deve essere in esecuzione prima che i servizi dipendenti possano essere eseguiti.
Sintassi
BOOL EnumDependentServicesA(
[in] SC_HANDLE hService,
[in] DWORD dwServiceState,
[out, optional] LPENUM_SERVICE_STATUSA lpServices,
[in] DWORD cbBufSize,
[out] LPDWORD pcbBytesNeeded,
[out] LPDWORD lpServicesReturned
);
Parametri
[in] hService
Handle per il servizio. Questo handle viene restituito dalla funzione OpenService
[in] dwServiceState
Stato dei servizi da enumerare. Questo parametro può essere uno dei valori seguenti.
[out, optional] lpServices
Puntatore a una matrice di strutture ENUM_SERVICE_STATUS che riceve le informazioni sullo stato del nome e del servizio per ogni servizio dipendente nel database. Il buffer deve essere sufficientemente grande da contenere le strutture, oltre alle stringhe a cui puntano i membri.
L'ordine dei servizi in questa matrice è il contrario dell'ordine di inizio dei servizi. In altre parole, il primo servizio nella matrice è quello che verrebbe avviato per ultimo e l'ultimo servizio nella matrice è quello che verrebbe avviato per primo.
La dimensione massima di questa matrice è di 64.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
[in] cbBufSize
Dimensioni del buffer a cui punta il parametro lpServices
[out] pcbBytesNeeded
Puntatore a una variabile che riceve il numero di byte necessari per archiviare la matrice di voci del servizio. La variabile riceve questo valore solo se il buffer a cui punta lpServices è troppo piccolo, indicato dall'errore della funzione e dall'errore ERROR_MORE_DATA; in caso contrario, il contenuto di pcbBytesNeeded non è definito.
[out] lpServicesReturned
Puntatore a una variabile che riceve il numero di voci del servizio restituite.
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.
I codici di errore seguenti possono essere impostati dal gestore di controllo del servizio. Altri codici di errore possono essere impostati dalle funzioni del Registro di sistema chiamate dal gestore di controllo del servizio.
Codice restituito | Descrizione |
---|---|
|
L'handle non dispone del diritto di accesso SERVICE_ENUMERATE_DEPENDENTS. |
|
L'handle specificato non è valido. |
|
Parametro specificato non valido. |
|
Il buffer a cui punta lpServices non è sufficiente. La funzione imposta la variabile a cui punta lpServicesReturned sul numero effettivo di voci del servizio archiviate nel buffer. La funzione imposta la variabile a cui punta pcbBytesNeeded al numero di byte necessari per archiviare tutte le voci del servizio. |
Osservazioni
Le voci dei servizi restituiti vengono ordinate nell'ordine inverso dell'ordine di inizio, tenendo conto dell'ordine di gruppo. Se è necessario arrestare i servizi dipendenti, è possibile usare l'ordine delle voci scritte nel buffer lpServices per arrestare i servizi dipendenti nell'ordine appropriato.
Esempi
Per un esempio, vedere Arresto di un servizio.
Nota
L'intestazione winsvc.h definisce EnumDependentServices 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 |