EnumServicesStatusExA-Funktion (winsvc.h)
Listet Dienste in der angegebenen Dienststeuerungs-Manager-Datenbank auf. Der Name und der Status der einzelnen Dienste werden zusammen mit zusätzlichen Daten basierend auf der angegebenen Informationsebene bereitgestellt.
Syntax
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
);
Parameter
[in] hSCManager
Ein Handle für die Dienststeuerungs-Manager-Datenbank. Dieses Handle wird von der OpenSCManager--Funktion zurückgegeben und muss über das SC_MANAGER_ENUMERATE_SERVICE Zugriffsrecht verfügen. Weitere Informationen finden Sie unter Service Security and Access Rights.
[in] InfoLevel
Die Dienstattribute, die zurückgegeben werden sollen. Verwenden Sie SC_ENUM_PROCESS_INFO, um die Namen- und Dienststatusinformationen für jeden Dienst in der Datenbank abzurufen. Der lpServices--Parameter ist ein Zeiger auf einen Puffer, der ein Array von ENUM_SERVICE_STATUS_PROCESS Strukturen empfängt. Der Puffer muss groß genug sein, um die Strukturen sowie die Zeichenfolgen, auf die ihre Member verweisen, aufzunehmen.
Derzeit werden keine anderen Informationsstufen definiert.
[in] dwServiceType
Der Typ der dienste, die aufgezählt werden sollen. Dieser Parameter kann einen oder mehrere der folgenden Werte sein.
Wert | Bedeutung |
---|---|
|
Dienste vom Typ SERVICE_KERNEL_DRIVER und SERVICE_FILE_SYSTEM_DRIVER. |
|
Dateisystemtreiberdienste. |
|
Treiberdienste. |
|
Dienste vom Typ SERVICE_WIN32_OWN_PROCESS und SERVICE_WIN32_SHARE_PROCESS. |
|
Dienste, die in ihren eigenen Prozessen ausgeführt werden. |
|
Dienste, die einen Prozess mit einem oder mehreren anderen Diensten teilen. Weitere Informationen finden Sie unter Service Programs. |
[in] dwServiceState
Der Status der dienste, die aufgezählt werden sollen. Dieser Parameter kann einer der folgenden Werte sein:
[out, optional] lpServices
Ein Zeiger auf den Puffer, der die Statusinformationen empfängt. Das Format dieser Daten hängt vom Wert des InfoLevel--Parameters ab.
Die maximale Größe dieses Arrays beträgt 256K Bytes. Um die erforderliche Größe zu ermitteln, geben Sie NULL- für diesen Parameter und 0 für den cbBufSize Parameter an. Die Funktion schlägt fehl, und GetLastError- wird ERROR_MORE_DATAzurückgegeben. Der pcbBytesNeededed Parameter erhält die erforderliche Größe.
Windows Server 2003 und Windows XP: Die maximale Größe dieses Arrays beträgt 64 KB. Dieser Grenzwert wurde ab Windows Server 2003 mit SP1 und Windows XP mit SP2 erhöht.
[in] cbBufSize
Die Größe des Puffers, auf den der lpServices Parameter in Byte verweist.
[out] pcbBytesNeeded
Ein Zeiger auf eine Variable, die die Anzahl der Bytes empfängt, die zum Zurückgeben der verbleibenden Diensteinträge erforderlich sind, wenn der Puffer zu klein ist.
[out] lpServicesReturned
Ein Zeiger auf eine Variable, die die Anzahl der zurückgegebenen Diensteinträge empfängt.
[in, out, optional] lpResumeHandle
Ein Zeiger auf eine Variable, die bei Eingabe den Ausgangspunkt der Aufzählung angibt. Sie müssen diesen Wert auf Null festlegen, wenn die EnumServicesStatusEx--Funktion zum ersten Mal aufgerufen wird. Bei der Ausgabe ist dieser Wert null, wenn die Funktion erfolgreich ausgeführt wird. Wenn die Funktion jedoch null zurückgibt und die GetLastError-Funktion ERROR_MORE_DATAzurückgibt, gibt dieser Wert den nächsten Diensteintrag an, der gelesen werden soll, wenn die EnumServicesStatusEx--Funktion aufgerufen wird, um die zusätzlichen Daten abzurufen.
[in, optional] pszGroupName
Der Gruppenname der Ladereihenfolge. Wenn dieser Parameter eine Zeichenfolge ist, sind die einzigen aufgezählten Dienste diejenigen, die zu der Gruppe gehören, die den durch die Zeichenfolge angegebenen Namen enthält. Wenn dieser Parameter eine leere Zeichenfolge ist, werden nur Dienste aufgelistet, die keiner Gruppe angehören. Wenn dieser Parameter NULL-ist, wird die Gruppenmitgliedschaft ignoriert, und alle Dienste werden aufgezählt.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.
Wenn die Funktion fehlschlägt, ist der Rückgabewert null. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten. Die folgenden Fehler können zurückgegeben werden.
Rückgabecode | Beschreibung |
---|---|
|
Das Handle verfügt nicht über das SC_MANAGER_ENUMERATE_SERVICE Zugriffsrecht. |
|
Der Puffer ist zu klein. Nicht alle Daten in der aktiven Datenbank konnten zurückgegeben werden. Der pcbBytesNeededed Parameter enthält die Anzahl der Bytes, die zum Empfangen der verbleibenden Einträge erforderlich sind. |
|
Ein ungültiger Parameterwert wurde verwendet. |
|
Das Handle ist ungültig. |
|
Der InfoLevel Parameter enthält einen nicht unterstützten Wert. |
|
Das System wird heruntergefahren; diese Funktion kann nicht aufgerufen werden. |
Bemerkungen
Wenn der Aufrufer nicht über das SERVICE_QUERY_STATUS Zugriffsrecht auf einen Dienst verfügt, wird der Dienst aus der Liste der Dienste, die an den Client zurückgegeben werden, im Hintergrund weggelassen.
Anmerkung
Der winsvc.h-Header definiert EnumServicesStatusEx 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
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows XP [nur Desktop-Apps] |
mindestens unterstützte Server- | Windows Server 2003 [Nur Desktop-Apps] |
Zielplattform- | Fenster |
Header- | winsvc.h (enthalten Windows.h) |
Library | Advapi32.lib |
DLL- | Advapi32.dll |