共用方式為


SERVICE_STATUS_PROCESS結構 (winsvc.h)

包含服務的進程狀態資訊。 ControlServiceExEnumServicesStatusExNotifyServiceStatusChangeQueryServiceStatusEx函式會使用此結構。

語法

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;

成員

dwServiceType

服務的型別。 這個成員可以是下列其中一個值。

意義
SERVICE_FILE_SYSTEM_DRIVER
0x00000002
服務是檔案系統驅動程式。
SERVICE_KERNEL_DRIVER
0x00000001
服務是設備磁碟機。
SERVICE_WIN32_OWN_PROCESS
0x00000010
服務會在自己的進程中執行。
SERVICE_WIN32_SHARE_PROCESS
0x00000020
服務與其他服務共用進程。
 

如果服務類型是 SERVICE_WIN32_OWN_PROCESSSERVICE_WIN32_SHARE_PROCESS,而且服務是在 LocalSystem 帳戶的內容中執行,則也可能指定下列類型。

意義
SERVICE_INTERACTIVE_PROCESS
服務可以與桌面互動。

如需詳細資訊,請參閱 互動式服務

dwCurrentState

服務的目前狀態。 這個成員可以是下列其中一個值。

意義
SERVICE_CONTINUE_PENDING
0x00000005
服務即將繼續。
SERVICE_PAUSE_PENDING
0x00000006
服務正在暫停。
SERVICE_PAUSED
0x00000007
暫停服務。
SERVICE_RUNNING
0x00000004
服務正在執行。
SERVICE_START_PENDING
0x00000002
服務正在啟動。
SERVICE_STOP_PENDING
0x00000003
服務正在停止。
SERVICE_STOPPED
0x00000001
服務已停止。

dwControlsAccepted

服務在其處理常式函式中接受和處理的控制程式代碼 (請參閱 HandlerHandlerEx) 。 使用者介面進程可以在 ControlServiceControlServiceEx 函式中指定控制項命令來控制服務。 根據預設,所有服務都會接受 SERVICE_CONTROL_INTERROGATE 值。

以下是控制程式代碼。

控制程式代碼 意義
SERVICE_ACCEPT_NETBINDCHANGE
0x00000010
此服務是一種網路元件,可接受其系結中的變更,而不需停止並重新啟動。

此控制程式代碼可讓服務接收 SERVICE_CONTROL_NETBINDADDSERVICE_CONTROL_NETBINDREMOVESERVICE_CONTROL_NETBINDENABLESERVICE_CONTROL_NETBINDDISABLE 通知。

SERVICE_ACCEPT_PARAMCHANGE
0x00000008
服務可以重新讀取其啟動參數,而不需停止並重新啟動。

此控制程式代碼可讓服務接收 SERVICE_CONTROL_PARAMCHANGE 通知。

SERVICE_ACCEPT_PAUSE_CONTINUE
0x00000002
服務可以暫停並繼續。

此控制程式代碼可讓服務接收 SERVICE_CONTROL_PAUSESERVICE_CONTROL_CONTINUE 通知。

SERVICE_ACCEPT_PRESHUTDOWN
0x00000100
服務可以執行前置工作。

此控制程式代碼可讓服務接收 SERVICE_CONTROL_PRESHUTDOWN 通知。 請注意 ,ControlServiceControlServiceEx 無法傳送此通知;只有系統可以傳送它。

Windows Server 2003 和 Windows XP: 不支援這個值。

SERVICE_ACCEPT_SHUTDOWN
0x00000004
發生系統關機時,會通知服務。

此控制程式代碼可讓服務接收 SERVICE_CONTROL_SHUTDOWN 通知。 請注意 ,ControlServiceControlServiceEx 無法傳送此通知;只有系統可以傳送它。

SERVICE_ACCEPT_STOP
0x00000001
服務可以停止。

此控制程式代碼可讓服務接收 SERVICE_CONTROL_STOP 通知。

 

這個成員也可以包含下列擴充控制項程式碼,其僅由 HandlerEx支援。 (請注意, ControlServiceControlServiceEx.) 無法傳送這些控制程式代碼

控制程式代碼 意義
SERVICE_ACCEPT_HARDWAREPROFILECHANGE
0x00000020
當電腦的硬體設定檔變更時,服務會收到通知。 這可讓系統將 SERVICE_CONTROL_HARDWAREPROFILECHANGE 通知傳送至服務。
SERVICE_ACCEPT_POWEREVENT
0x00000040
當電腦的電源狀態變更時,服務會收到通知。 這可讓系統傳送 SERVICE_CONTROL_POWEREVENT 通知給服務。
SERVICE_ACCEPT_SESSIONCHANGE
0x00000080
當電腦的會話狀態變更時,服務會收到通知。 這可讓系統傳送 SERVICE_CONTROL_SESSIONCHANGE 通知給服務。

dwWin32ExitCode

服務用來報告啟動或停止時所發生的錯誤碼。 若要傳回服務特定的錯誤碼,服務必須將此值設定為 ERROR_SERVICE_SPECIFIC_ERROR ,以指出 dwServiceSpecificExitCode 成員包含錯誤碼。 當服務正在執行且正常終止時,服務應該將此值設定為 NO_ERROR

dwServiceSpecificExitCode

當服務啟動或停止時發生錯誤時,服務所傳回的服務特定錯誤碼。 除非 dwWin32ExitCode 成員設定為 ERROR_SERVICE_SPECIFIC_ERROR,否則會忽略此值。

dwCheckPoint

服務會定期遞增的檢查點值,以在長時間啟動、停止、暫停或繼續作業期間報告進度。 例如,當服務啟動時完成初始化的每個步驟時,服務應該遞增此值。 在服務上叫用作業的使用者介面程式會使用這個值,在長時間作業期間追蹤服務的進度。 這個值無效,而且當服務沒有啟動、停止、暫停或繼續作業擱置時,應該為零。

dwWaitHint

擱置開始、停止、暫停或繼續作業所需的估計時間,以毫秒為單位。 在經過指定的時間量之前,服務應該使用遞增的 dwCheckPoint值或dwCurrentState中的變更,對SetServiceStatus函式進行下一次呼叫。 如果 dwWaitHint 傳遞所指定的時間量,而且 dwCheckPoint 尚未遞增,或 dwCurrentState 尚未變更,服務控制管理員或服務控制程式可以假設發生錯誤,而且應該停止服務。 不過,如果服務與其他服務共用進程,服務控制管理員就無法終止服務應用程式,因為它必須終止其他服務共用進程。

dwProcessId

服務的進程識別碼。

dwServiceFlags

這個成員可以是下列其中一個值。

意義
0
服務正在不是系統進程的進程中執行,或未執行。

如果服務是在不是系統進程的進程中執行, dwProcessId 是非零的。 如果服務未執行, dwProcessId 為零。

SERVICE_RUNS_IN_SYSTEM_PROCESS
0x00000001
服務會在必須一律執行的系統進程中執行。

規格需求

   
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
標頭 winsvc.h (包括 Windows.h)

另請參閱

ControlServiceEx

EnumServicesStatusEx

NotifyServiceStatusChange

QueryServiceStatusEx