EnumDependentServicesA-Funktion (winsvc.h)
Ruft den Namen und die status jedes Diensts ab, der vom angegebenen Dienst abhängt. Das heißt, der angegebene Dienst muss ausgeführt werden, bevor die abhängigen Dienste ausgeführt werden können.
Syntax
BOOL EnumDependentServicesA(
[in] SC_HANDLE hService,
[in] DWORD dwServiceState,
[out, optional] LPENUM_SERVICE_STATUSA lpServices,
[in] DWORD cbBufSize,
[out] LPDWORD pcbBytesNeeded,
[out] LPDWORD lpServicesReturned
);
Parameter
[in] hService
Ein Handle für den Dienst. Dieses Handle wird von der OpenService- oder CreateService-Funktion zurückgegeben und muss über das zugriffsrecht SERVICE_ENUMERATE_DEPENDENTS verfügen. Weitere Informationen finden Sie unter Dienstsicherheit und Zugriffsrechte.
[in] dwServiceState
Der Status der dienste, die aufgelistet werden sollen. Dieser Parameter kann einen der folgenden Werte annehmen.
[out, optional] lpServices
Ein Zeiger auf ein Array von ENUM_SERVICE_STATUS Strukturen, das den Namen und den Dienst status Informationen für jeden abhängigen Dienst in der Datenbank empfängt. Der Puffer muss groß genug sein, um die Strukturen sowie die Zeichenfolgen zu enthalten, auf die ihre Member verweisen.
Die Reihenfolge der Dienste in diesem Array entspricht der umgekehrten Startreihenfolge der Dienste. Anders ausgedrückt: Der erste Dienst im Array ist der, der zuletzt gestartet wird, und der letzte Dienst im Array ist der, der zuerst gestartet wird.
Die maximale Größe dieses Arrays beträgt 64.000 Bytes. Geben Sie null für diesen Parameter und 0 für den cbBufSize-Parameter an, um die erforderliche Größe zu bestimmen. Die Funktion schlägt fehl, und GetLastError gibt ERROR_MORE_DATA zurück. Der parameter pcbBytesNeeded empfängt die erforderliche Größe.
[in] cbBufSize
Die Größe des Puffers, auf den der lpServices-Parameter in Bytes verweist.
[out] pcbBytesNeeded
Ein Zeiger auf eine Variable, die die Anzahl der Bytes empfängt, die zum Speichern des Arrays von Diensteinträgen erforderlich sind. Die Variable empfängt diesen Wert nur, wenn der Puffer, auf den lpServices verweist, zu klein ist, was durch Funktionsfehler und den ERROR_MORE_DATA Fehler angegeben wird. Andernfalls ist der Inhalt von pcbBytesNeeded nicht definiert.
[out] lpServicesReturned
Ein Zeiger auf eine Variable, die die Anzahl der zurückgegebenen Diensteinträge empfängt.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Die folgenden Fehlercodes können vom Dienststeuerungs-Manager festgelegt werden. Andere Fehlercodes können von den Registrierungsfunktionen festgelegt werden, die vom Dienststeuerungs-Manager aufgerufen werden.
Rückgabecode | Beschreibung |
---|---|
|
Das Handle verfügt nicht über das zugriffsrecht SERVICE_ENUMERATE_DEPENDENTS . |
|
Das angegebene Handle ist ungültig. |
|
Ein parameter, der angegeben wurde, ist ungültig. |
|
Der Puffer, auf den lpServices verweist, ist nicht groß genug. Die Funktion legt die Variable, auf die von lpServicesReturned verwiesen wird , auf die tatsächliche Anzahl von Diensteinträgen fest, die im Puffer gespeichert sind. Die Funktion legt die Variable, auf die von pcbBytesNeeded verwiesen wird , auf die Anzahl der Bytes fest, die zum Speichern aller Diensteinträge erforderlich sind. |
Hinweise
Die zurückgegebenen Leistungseinträge werden in umgekehrter Reihenfolge der Startreihenfolge sortiert, wobei die Gruppenreihenfolge berücksichtigt wird. Wenn Sie die abhängigen Dienste beenden müssen, können Sie die Reihenfolge der Einträge verwenden, die in den lpServices-Puffer geschrieben werden, um die abhängigen Dienste in der richtigen Reihenfolge zu beenden.
Beispiele
Ein Beispiel finden Sie unter Beenden eines Diensts.
Hinweis
Der winsvc.h-Header definiert EnumDependentServices als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winsvc.h (windows.h einschließen) |
Bibliothek | Advapi32.lib |
DLL | Advapi32.dll |