SERVICE_STATUS_PROCESS-Struktur (winsvc.h)
Enthält Prozess- status Informationen für einen Dienst. Die Funktionen ControlServiceEx, EnumServicesStatusEx, NotifyServiceStatusChange und QueryServiceStatusEx verwenden diese Struktur.
Syntax
typedef struct _SERVICE_STATUS_PROCESS {
DWORD dwServiceType;
DWORD dwCurrentState;
DWORD dwControlsAccepted;
DWORD dwWin32ExitCode;
DWORD dwServiceSpecificExitCode;
DWORD dwCheckPoint;
DWORD dwWaitHint;
DWORD dwProcessId;
DWORD dwServiceFlags;
} SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS;
Member
dwServiceType
Der Diensttyp. Dieser Member kann einer der folgenden Werte sein.
Wenn der Diensttyp entweder SERVICE_WIN32_OWN_PROCESS oder SERVICE_WIN32_SHARE_PROCESS ist und der Dienst im Kontext des LocalSystem-Kontos ausgeführt wird, kann auch der folgende Typ angegeben werden.
Wert | Bedeutung |
---|---|
|
Der Dienst kann mit dem Desktop interagieren.
Weitere Informationen finden Sie unter Interactive Services. |
dwCurrentState
Der aktuelle Status des Diensts. Dieser Member kann einer der folgenden Werte sein.
dwControlsAccepted
Das Steuerelement codes, die der Dienst akzeptiert und in seiner Handlerfunktion verarbeitet (siehe Handler und HandlerEx). Ein Benutzeroberflächenprozess kann einen Dienst steuern, indem er einen Steuerelementbefehl in der ControlService- oder ControlServiceEx-Funktion angibt . Standardmäßig akzeptieren alle Dienste den SERVICE_CONTROL_INTERROGATE-Wert .
Im Folgenden finden Sie die Steuercodes.
Steuerungscode | Bedeutung |
---|---|
|
Der Dienst ist eine Netzwerkkomponente, die Änderungen in der Bindung akzeptieren kann, ohne beendet und neu gestartet zu werden.
Mit diesem Steuercode kann der Dienst SERVICE_CONTROL_NETBINDADD-, SERVICE_CONTROL_NETBINDREMOVE-, SERVICE_CONTROL_NETBINDENABLE- und SERVICE_CONTROL_NETBINDDISABLE-Benachrichtigungen empfangen. |
|
Der Dienst kann seine Startparameter erneut lesen, ohne beendet und neu gestartet zu werden.
Mit diesem Steuercode kann der Dienst SERVICE_CONTROL_PARAMCHANGE Benachrichtigungen empfangen. |
|
Der Dienst kann angehalten und fortgesetzt werden.
Dieser Steuerungscode ermöglicht es dem Dienst, SERVICE_CONTROL_PAUSE - und SERVICE_CONTROL_CONTINUE-Benachrichtigungen zu empfangen. |
|
Der Dienst kann Vorabverwaltungsaufgaben ausführen.
Dieser Steuerungscode ermöglicht es dem Dienst, SERVICE_CONTROL_PRESHUTDOWN Benachrichtigungen zu empfangen. Beachten Sie, dass ControlService und ControlServiceEx diese Benachrichtigung nicht senden können. nur das System kann sie senden. Windows Server 2003 und Windows XP: Dieser Wert wird nicht unterstützt. |
|
Der Dienst wird benachrichtigt, wenn das System heruntergefahren wird.
Mit diesem Steuercode kann der Dienst SERVICE_CONTROL_SHUTDOWN Benachrichtigungen empfangen. Beachten Sie, dass ControlService und ControlServiceEx diese Benachrichtigung nicht senden können. nur das System kann sie senden. |
|
Der Dienst kann beendet werden.
Mit diesem Steuercode kann der Dienst SERVICE_CONTROL_STOP Benachrichtigungen empfangen. |
Dieser Member kann auch die folgenden erweiterten Steuerelementcodes enthalten, die nur von HandlerEx unterstützt werden. (Beachten Sie, dass diese Steuerelementcodes nicht von ControlService oder ControlServiceEx gesendet werden können.)
dwWin32ExitCode
Der Fehlercode, mit dem der Dienst einen Fehler meldet, der beim Starten oder Beenden auftritt. Um einen dienstspezifischen Fehlercode zurückzugeben, muss der Dienst diesen Wert auf ERROR_SERVICE_SPECIFIC_ERROR festlegen, um anzugeben, dass das dwServiceSpecificExitCode-Element den Fehlercode enthält. Der Dienst sollte diesen Wert auf NO_ERROR festlegen, wenn er ausgeführt wird und normal beendet wird.
dwServiceSpecificExitCode
Der dienstspezifische Fehlercode, den der Dienst zurückgibt, wenn ein Fehler auftritt, während der Dienst gestartet oder beendet wird. Dieser Wert wird ignoriert, es sei denn, der dwWin32ExitCode-Member ist auf ERROR_SERVICE_SPECIFIC_ERROR festgelegt.
dwCheckPoint
Der Prüfpunktwert, den der Dienst in regelmäßigen Abständen erhöht, um seinen Fortschritt während eines längeren Start-, Stopp-, Pausen- oder Fortsetzungsvorgangs zu melden. Beispielsweise sollte der Dienst diesen Wert erhöhen, während er jeden Schritt seiner Initialisierung beim Starten abschließt. Das Benutzeroberflächenprogramm, das den Vorgang für den Dienst aufgerufen hat, verwendet diesen Wert, um den Fortschritt des Diensts während eines längeren Vorgangs nachzuverfolgen. Dieser Wert ist ungültig und sollte null sein, wenn der Dienst keinen Start-, Stopp-, Pausen- oder Fortsetzungsvorgang aussteht.
dwWaitHint
Die geschätzte Zeit, die für einen ausstehenden Start-, Stopp-, Pausen- oder Fortsetzungsvorgang in Millisekunden erforderlich ist. Bevor die angegebene Zeit verstrichen ist, sollte der Dienst den nächsten Aufruf der SetServiceStatus-Funktion mit einem inkrementierten dwCheckPoint-Wert oder einer Änderung in dwCurrentState durchführen. Wenn die von dwWaitHint angegebene Zeitspanne verstrichen ist und dwCheckPoint nicht erhöht oder dwCurrentState nicht geändert wurde, kann der Dienststeuerungs-Manager oder das Dienststeuerungsprogramm davon ausgehen, dass ein Fehler aufgetreten ist und der Dienst beendet werden sollte. Wenn der Dienst jedoch einen Prozess mit anderen Diensten teilt, kann der Dienststeuerungs-Manager die Dienstanwendung nicht beenden, da er auch die anderen Dienste beenden müsste, die den Prozess gemeinsam nutzen.
dwProcessId
Der Prozessbezeichner des Diensts.
dwServiceFlags
Dieser Member kann einer der folgenden Werte sein.
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Kopfzeile | winsvc.h (windows.h einschließen) |