enumServicesStatusA 函式 (winsvc.h)
列舉指定之服務控制管理員資料庫中的服務。 系統會提供每個服務的名稱和狀態。
EnumServicesStatusEx 函式已取代此函式。 它會傳回相同的資訊 EnumServicesStatus 傳回,再加上服務的進程識別碼和其他資訊。 此外, EnumServicesStatusEx 可讓您列舉屬於指定群組的服務。
語法
BOOL EnumServicesStatusA(
[in] SC_HANDLE hSCManager,
[in] DWORD dwServiceType,
[in] DWORD dwServiceState,
[out, optional] LPENUM_SERVICE_STATUSA lpServices,
[in] DWORD cbBufSize,
[out] LPDWORD pcbBytesNeeded,
[out] LPDWORD lpServicesReturned,
[in, out, optional] LPDWORD lpResumeHandle
);
參數
[in] hSCManager
服務控制管理員資料庫的控制碼。 這個控制碼是由 OpenSCManager 函式傳回,而且必須具有SC_MANAGER_ENUMERATE_SERVICE存取權限。 如需詳細資訊,請參閱 服務安全性和存取權限。
[in] dwServiceType
要列舉的服務類型。 此參數可以是下列一或多個值。
值 | 意義 |
---|---|
|
類型為 SERVICE_KERNEL_DRIVER 和 SERVICE_FILE_SYSTEM_DRIVER 的服務。 |
|
檔案系統驅動程式服務。 |
|
驅動程式服務。 |
|
類型為 SERVICE_WIN32_OWN_PROCESS 和 SERVICE_WIN32_SHARE_PROCESS 的服務。 |
|
在自己的進程中執行的服務。 |
|
與一或多個其他服務共用進程的服務。 如需詳細資訊,請參閱 服務程式。 |
[in] dwServiceState
要列舉的服務狀態。 此參數可以是下列其中一個值。
[out, optional] lpServices
緩衝區的指標,其中包含 ENUM_SERVICE_STATUS 結構的陣列,這些結構會接收資料庫中每個服務的名稱和服務狀態資訊。 緩衝區必須夠大,才能保存結構,加上其成員指向的字串。
此陣列的大小上限為 256K 個位元組。 若要判斷所需的大小,請為此參數指定 Null,並針對 cbBufSize 參數指定 0。 函式將會失敗,而且 GetLastError 會傳回ERROR_INSUFFICIENT_BUFFER。 其會接收所需的大小。
Windows Server 2003 和 Windows XP: 此陣列的大小上限為 64K 個位元組。 此限制已從 SP1 的 Windows Server 2003 和 WINDOWS XP SP2 增加。
[in] cbBufSize
lpServices參數所指向的緩衝區大小,以位元組為單位。
[out] pcbBytesNeeded
如果緩衝區太小,則為變數的指標,接收傳回剩餘服務專案所需的位元組數目。
[out] lpServicesReturned
接收傳回之服務專案數目之變數的指標。
[in, out, optional] lpResumeHandle
在輸入上指定列舉起點的變數指標。 第一次呼叫此函式時,您必須將此值設定為零。 在輸出中,如果函式成功,這個值會是零。 不過,如果函式傳回零,而且 GetLastError 函式傳回ERROR_MORE_DATA,這個值會用來指出呼叫函式以擷取其他資料時要讀取的下一個服務專案。
傳回值
如果函式成功,則傳回非零的值。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
服務控制管理員可以設定下列錯誤碼。 服務控制管理員呼叫的登錄函式可以設定其他錯誤碼。
傳回碼 | 描述 |
---|---|
|
控制碼沒有SC_MANAGER_ENUMERATE_SERVICE存取權限。 |
|
指定的控制碼無效。 |
|
指定的參數無效。 |
|
服務專案比 lpServices 緩衝區還多。 寫入 lpServices 的實際服務專案數目會在 lpServicesReturned 參數中傳回。 取得剩餘專案所需的位元組數目會傳回于參數中。 其餘服務可以透過 對 EnumServicesStatus 的其他呼叫來列舉,並使用 lpResumeHandle 參數來指出要讀取的下一個服務。 |
備註
注意
winsvc.h 標頭會將 EnumServicesStatus 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | winsvc.h (包含 Windows.h) |
程式庫 | Advapi32.lib |
Dll | Advapi32.dll |