PHP Conference Japan 2024

win32_query_service_status

(PECL win32service >=0.1.0)

win32_query_service_status查詢服務的狀態

說明

win32_query_service_status(字串 $servicename, 字串 $machine = null): 陣列

查詢服務的目前狀態,並回傳一個包含資訊的陣列。

參數

servicename

服務的簡短名稱。

machine

選用的機器名稱。如果省略,則使用本機。

回傳值

成功時回傳一個包含以下資訊的陣列

在 1.0.0 之前的版本,如果參數有問題,則回傳 false;若失敗,則回傳 Win32 錯誤碼

ServiceType

dwServiceType。請參閱 Win32Service 服務類型位元遮罩

CurrentState

dwCurrentState。請參閱 Win32Service 服務狀態常數

ControlsAccepted

服務接受的服務控制。請參閱 Win32Service 服務控制訊息接受位元遮罩

Win32ExitCode

如果服務已退出,則為程序的回傳碼。如果退出模式非正常,則此值等於 WIN32_ERROR_SERVICE_SPECIFIC_ERROR。請參閱 Win32Service 錯誤碼win32_set_service_exit_mode()

ServiceSpecificExitCode

如果服務因錯誤狀況而退出,則記錄在事件日誌中的服務特定程式碼會顯示在此處。此值等於 win32_set_service_exit_code() 所定義的值。

CheckPoint

如果服務正在關閉,則保留目前的檢查點編號。SCM 使用此值作為一種心跳偵測,以偵測卡住的服務程序。檢查點的值最好與 WaitHint 值一起解讀。

WaitHint

如果服務正在關閉,它會將 WaitHint 設定為一個檢查點值,表示 100% 完成。這可以用來實作進度指示器。

ProcessId

Windows 程序識別碼。如果為 0,則程序未執行。

ServiceFlags

dwServiceFlags。請參閱 Win32Service 服務旗標常數

錯誤/例外

如果 servicename 參數的值為空,則會擲出 ValueError

更新日誌

版本 說明
PECL win32service 1.0.0 如果參數中的資料無效,則會擲出 ValueError,之前會回傳 false
PECL win32service 1.0.0 發生錯誤時會擲出 Win32ServiceException,之前會回傳 Win32 錯誤碼
PECL win32service 1.0.0 回傳型態現在是 陣列,之前是 混合型態

新增註釋

使用者提供的註釋 1 則註釋

demers dot alex at gmail dot com
15 年前
此函式將返回一個陣列,其中包含上述資訊作為返回值,但如果失敗,它將返回一個整數,即系統錯誤碼。所有系統錯誤碼都可以在這裡找到

http://msdn.microsoft.com/en-us/library/ms681381%28VS.85%29.aspx

在我的情況下,它返回 5,我立即知道原因並立即修復了問題。

在文件中註釋中提到的 mnemotronic at netscape dot net 的情況下,它返回了 1060,也就是

ERROR_SERVICE_DOES_NOT_EXIST
1060 (0x424)
指定的服務不存在已安裝的服務。

同樣,它不應該返回 FALSE,而是返回 Windows 的系統錯誤碼。
To Top