CreateJobObjectA 函式 (winbase.h)
建立或開啟作業物件。
語法
HANDLE CreateJobObjectA(
[in, optional] LPSECURITY_ATTRIBUTES lpJobAttributes,
[in, optional] LPCSTR lpName
);
參數
[in, optional] lpJobAttributes
SECURITY_ATTRIBUTES 結構的指標,指定作業對象的安全性描述項,並判斷子進程是否可以繼承傳回的句柄。 如果 lpJobAttributesNULL,則作業物件會取得預設的安全性描述元,而且無法繼承句柄。 作業物件之預設安全性描述元中的 ACL 來自建立者的主要或模擬令牌。
[in, optional] lpName
作業的名稱。 名稱限制為 MAX_PATH 個字元。 名稱比較會區分大小寫。
如果 lpNameNULL,則會建立沒有名稱的作業。
如果 lpName 符合現有事件、旗號、mutex、可等候定時器或檔案對應物件的名稱,則函式 會失敗,而且 getLastError 函式會傳回 ERROR_INVALID_HANDLE。 這是因為這些對象共用相同的命名空間。
物件可以在私人命名空間中建立。 如需詳細資訊,請參閱 物件命名空間。
終端機服務:名稱可以有 “Global” 或 “Local” 前置詞,以明確在全域或會話命名空間中建立物件。 名稱的其餘部分可以包含反斜杠字元 (\) 以外的任何字元。 如需詳細資訊,請參閱 Kernel Object Namespaces。
傳回值
如果函式成功,傳回值就是作業物件的句柄。 句柄具有 JOB_OBJECT_ALL_ACCESS 訪問許可權。 如果物件存在於函數呼叫之前,函式會傳回現有作業物件的句柄,GetLastError 會傳回 ERROR_ALREADY_EXISTS。
如果函式失敗,傳回值為NULL。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
言論
建立作業時,其會計資訊會初始化為零,所有限制都處於非使用中狀態,而且沒有任何相關聯的進程。 若要將進程指派給作業物件,請使用 AssignProcessToJobObject 函式。 若要設定作業的限制,請使用 SetInformationJobObject 函式。 若要查詢會計資訊,請使用 QueryInformationJobObject 函式。
與作業相關聯的所有進程都必須在相同的會話中執行。 作業與要指派給作業之第一個進程的會話相關聯。
Windows Server 2003 和 Windows XP:建立作業的程式會話相關聯。
若要關閉作業物件句柄,請使用 CloseHandle 函式。 作業在最後一個句柄已關閉且所有相關聯的進程已結束時終結。 不過,如果作業已指定 JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE 旗標,則關閉最後一個作業物件句柄會終止所有相關聯的進程,然後終結作業物件本身。
若要編譯使用此函式的應用程式,請將 _WIN32_WINNT 定義為0x0500或更新版本。 如需詳細資訊,請參閱使用 Windows 標頭
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
支援的最低伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | winbase.h (包括 Windows.h、Jobapi2.h) |
連結庫 | Kernel32.lib |
DLL | Kernel32.dll |