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.

Wert Bedeutung
SERVICE_FILE_SYSTEM_DRIVER
0x00000002
Der Dienst ist ein Dateisystemtreiber.
SERVICE_KERNEL_DRIVER
0x00000001
Der Dienst ist ein Gerätetreiber.
SERVICE_WIN32_OWN_PROCESS
0x00000010
Der Dienst wird in einem eigenen Prozess ausgeführt.
SERVICE_WIN32_SHARE_PROCESS
0x00000020
Der Dienst teilt einen Prozess mit anderen Diensten.
 

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
SERVICE_INTERACTIVE_PROCESS
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.

Wert Bedeutung
SERVICE_CONTINUE_PENDING
0x00000005
Der Dienst wird nun fortgesetzt.
SERVICE_PAUSE_PENDING
0x00000006
Der Dienst wird angehalten.
SERVICE_PAUSED
0x00000007
Der Dienst wurde angehalten.
SERVICE_RUNNING
0x00000004
Der Dienst wird ausgeführt.
SERVICE_START_PENDING
0x00000002
Der Dienst wird gestartet.
SERVICE_STOP_PENDING
0x00000003
Der Dienst wird beendet.
SERVICE_STOPPED
0x00000001
Der Dienst wurde beendet.

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
SERVICE_ACCEPT_NETBINDCHANGE
0x00000010
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.

SERVICE_ACCEPT_PARAMCHANGE
0x00000008
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.

SERVICE_ACCEPT_PAUSE_CONTINUE
0x00000002
Der Dienst kann angehalten und fortgesetzt werden.

Dieser Steuerungscode ermöglicht es dem Dienst, SERVICE_CONTROL_PAUSE - und SERVICE_CONTROL_CONTINUE-Benachrichtigungen zu empfangen.

SERVICE_ACCEPT_PRESHUTDOWN
0x00000100
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.

SERVICE_ACCEPT_SHUTDOWN
0x00000004
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.

SERVICE_ACCEPT_STOP
0x00000001
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.)

Steuerungscode Bedeutung
SERVICE_ACCEPT_HARDWAREPROFILECHANGE
0x00000020
Der Dienst wird benachrichtigt, wenn sich das Hardwareprofil des Computers geändert hat. Dadurch kann das System SERVICE_CONTROL_HARDWAREPROFILECHANGE Benachrichtigungen an den Dienst senden.
SERVICE_ACCEPT_POWEREVENT
0x00000040
Der Dienst wird benachrichtigt, wenn sich die Stromversorgung des Computers status geändert hat. Dadurch kann das System SERVICE_CONTROL_POWEREVENT Benachrichtigungen an den Dienst senden.
SERVICE_ACCEPT_SESSIONCHANGE
0x00000080
Der Dienst wird benachrichtigt, wenn sich die Sitzung des Computers status geändert hat. Dadurch kann das System SERVICE_CONTROL_SESSIONCHANGE Benachrichtigungen an den Dienst senden.

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.

Wert Bedeutung
0
Der Dienst wird in einem Prozess ausgeführt, der kein Systemprozess ist oder nicht ausgeführt wird.

Wenn der Dienst in einem Prozess ausgeführt wird, der kein Systemprozess ist, ist dwProcessId ungleich null. Wenn der Dienst nicht ausgeführt wird, ist dwProcessId null.

SERVICE_RUNS_IN_SYSTEM_PROCESS
0x00000001
Der Dienst wird in einem Systemprozess ausgeführt, der immer ausgeführt werden muss.

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)

Weitere Informationen

ControlServiceEx

EnumServicesStatusEx

NotifyServiceStatusChange

QueryServiceStatusEx