共用方式為


QUERY_SERVICE_CONFIGA 結構 (winsvc.h)

包含已安裝服務的組態資訊。 QueryServiceConfig 函式會使用它。

語法

typedef struct _QUERY_SERVICE_CONFIGA {
  DWORD dwServiceType;
  DWORD dwStartType;
  DWORD dwErrorControl;
  LPSTR lpBinaryPathName;
  LPSTR lpLoadOrderGroup;
  DWORD dwTagId;
  LPSTR lpDependencies;
  LPSTR lpServiceStartName;
  LPSTR lpDisplayName;
} QUERY_SERVICE_CONFIGA, *LPQUERY_SERVICE_CONFIGA;

成員

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
0x00000100
服務可以與桌面互動。

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

dwStartType

啟動服務的時機。 這個成員可以是下列其中一個值。

意義
SERVICE_AUTO_START
0x00000002
服務控制管理員在系統啟動期間自動啟動。
SERVICE_BOOT_START
0x00000000
系統載入器啟動的裝置驅動程式。 這個值只適用於驅動程式服務。
SERVICE_DEMAND_START
0x00000003
當行程呼叫 StartService 函式時,由服務控制管理員啟動的服務。
SERVICE_DISABLED
0x00000004
無法啟動的服務。 嘗試啟動服務會導致錯誤碼 ERROR_SERVICE_DISABLED
SERVICE_SYSTEM_START
0x00000001
IoInitSystem 函式啟動的裝置驅動程式。 這個值只適用於驅動程式服務。

dwErrorControl

如果此服務無法啟動,則為錯誤的嚴重性和所採取的動作。 這個成員可以是下列其中一個值。

意義
SERVICE_ERROR_CRITICAL
0x00000003
如果可能,啟動程式會在事件記錄檔中記錄錯誤。 如果啟動最後一個已知良好的組態,啟動作業就會失敗。 否則,系統會以最後一個已知的良好組態重新啟動。
SERVICE_ERROR_IGNORE
0x00000000
啟動程式會忽略錯誤並繼續啟動作業。
SERVICE_ERROR_NORMAL
0x00000001
啟動程式會在事件記錄檔中記錄錯誤,並繼續啟動作業。
SERVICE_ERROR_SEVERE
0x00000002
啟動程式會在事件記錄檔中記錄錯誤。 如果啟動最後一個已知良好的組態,啟動作業會繼續。 否則,系統會使用最後一個已知良好的組態重新啟動。

lpBinaryPathName

服務二進位檔的完整路徑。

路徑也可以包含自動啟動服務的自變數。 這些自變數會傳遞至服務進入點, (通常是 主要 函式) 。

lpLoadOrderGroup

此服務所屬的負載排序群組名稱。 如果成員為 NULL 或空字串,則服務不屬於載入排序群組。

啟動程式會使用負載排序群組,根據其他群組的指定順序載入服務群組。 載入排序群組的清單包含在下列登入值中:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ServiceGroupOrder

dwTagId

lpLoadOrderGroup 參數所指定群組中此服務的唯一標記值。 值為零表示服務尚未指派標記。 您可以在登入指定位於下列位置的標籤順序向量,以載入訂單群組內使用標記來排序服務啟動:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GroupOrderList

標記只會針對具有SERVICE_BOOT_START或SERVICE_SYSTEM_START啟動類型的SERVICE_KERNEL_DRIVERSERVICE_FILE_SYSTEM_DRIVER類型服務進行評估。

lpDependencies

服務之 Null 分隔名稱陣列的指標,或載入必須在此服務之前啟動的排序群組。 陣列會以 Null 結尾加倍。 如果指標為 NULL ,或指向空字串,則服務沒有相依性。 如果指定組名,則必須以 WinSvc.h) 字元中定義的 SC_GROUP_IDENTIFIER (開頭,才能區分它與服務名稱,因為服務和服務群組會共用相同的名稱空間。 相依於服務表示,只有在相依的服務正在執行時,才能執行此服務。 群組的相依性表示,如果嘗試啟動群組的所有成員之後,至少有一個群組成員正在執行,則此服務可以執行。

lpServiceStartName

如果服務類型 SERVICE_WIN32_OWN_PROCESSSERVICE_WIN32_SHARE_PROCESS,此成員就是服務進程在執行時將登入的帳戶名稱。 此名稱的格式可以是 Domain\UserName。 如果帳戶屬於內建網域,則名稱的格式可以是 .\UserName。 如果行程是在 LocalSystem 帳戶下執行,則名稱也可以是 “LocalSystem”。

如果服務類型 是SERVICE_KERNEL_DRIVERSERVICE_FILE_SYSTEM_DRIVER,這個成員就是驅動程式物件名稱 (,也就是 \FileSystem\Rdr 或 \Driver\Xns) 輸入與輸出 (I/O) 系統用來載入設備驅動器。 如果此成員為 NULL,則會根據服務名稱,以 I/O 系統所建立的預設物件名稱執行驅動程式。

lpDisplayName

服務控制程式用來識別服務的顯示名稱。 這個字串的最大長度為 256 個字元。 名稱會在服務控制管理員中保留大小寫。 顯示名稱比較一律不區分大小寫。

這個參數可以使用下列格式來指定本地化字串:

@[Path]DLLName,-StrID

標識元 為 StrID 的字串會從 DLLName 載入; Path 是選擇性的。 如需詳細資訊,請參閱 RegLoadMUIString

Windows Server 2003 和 Windows XP: 在 Windows Vista 之前,不支援當地語系化字串。

備註

當呼叫 CreateService 函式建立服務時,一開始會指定服務的組態資訊。 您可以藉由呼叫 ChangeServiceConfig 函式來修改資訊。

範例

如需範例,請參閱 查詢服務的組態

注意

winsvc.h 標頭會將QUERY_SERVICE_CONFIG定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

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

另請參閱

ChangeServiceConfig

CreateService

QueryServiceConfig

StartService