Condividi tramite


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 al servizio. Questo handle viene restituito dalla funzione OpenService o CreateService e deve avere il diritto di accesso SERVICE_ENUMERATE_DEPENDENTS . Per altre informazioni, vedere Sicurezza del servizio e diritti di accesso.

[in] dwServiceState

Stato dei servizi da enumerare. Questo parametro può avere 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_PENDING e SERVICE_PAUSED.
SERVICE_INACTIVE
0x00000002
Enumera i servizi che si trovano nello stato di SERVICE_STOPPED .
SERVICE_STATE_ALL
0x00000003
Combina gli stati seguenti: SERVICE_ACTIVE e SERVICE_INACTIVE.

[out, optional] lpServices

Puntatore a una matrice di strutture ENUM_SERVICE_STATUS che riceve il nome e le informazioni sullo stato del servizio per ogni servizio dipendente nel database. Il buffer deve essere abbastanza grande per contenere le strutture, oltre alle stringhe a cui puntano i membri.

L'ordine dei servizi in questa matrice è il contrario dell'ordine iniziale dei servizi. In altre parole, il primo servizio nella matrice è quello che verrà avviato per ultimo e l'ultimo servizio nella matrice è quello che verrà 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 pcbBytesNeeded riceverà le dimensioni necessarie.

[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 archiviare la matrice di voci del servizio. La variabile riceve questo valore solo se il buffer puntato da lpServices è troppo piccolo, indicato dall'errore della funzione e dall'errore di 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 informazioni dettagliate 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 dalla gestione controllo del servizio.

Codice restituito Descrizione
ERROR_ACCESS_DENIED
L'handle non dispone del diritto di accesso SERVICE_ENUMERATE_DEPENDENTS .
ERROR_INVALID_HANDLE
L'handle specificato non è valido.
ERROR_INVALID_PARAMETER
Parametro specificato non valido.
ERROR_MORE_DATA
Il buffer a cui punta da lpServices non è abbastanza grande. La funzione imposta la variabile puntata da lpServicesReturned al numero effettivo di voci di servizio archiviate nel buffer. La funzione imposta la variabile puntata da pcbBytesNeeded al numero di byte necessari per archiviare tutte le voci del servizio.

Commenti

Le voci dei servizi restituite vengono ordinate nell'ordine inverso dell'ordine di inizio, con l'ordine di gruppo preso in considerazione. Se è necessario arrestare i servizi dipendenti, è possibile usare l'ordine delle voci scritte nel buffer lpServices per arrestare i servizi dipendenti nell'ordine appropriato.

Esempio

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 preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

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

Vedi anche

CreateService

ENUM_SERVICE_STATUS

EnumServicesStatusEx

Openservice

Funzioni del servizio

Installazione, rimozione e enumerazione del servizio