CreateJobObjectA 函式 (winbase.h)
建立或開啟工作物件。
語法
HANDLE CreateJobObjectA(
[in, optional] LPSECURITY_ATTRIBUTES lpJobAttributes,
[in, optional] LPCSTR lpName
);
參數
[in, optional] lpJobAttributes
SECURITY_ATTRIBUTES結構的指標,指定工作物件的安全性描述元,並判斷子進程是否可以繼承傳回的控制碼。 如果 lpJobAttributes 為 Null,工作物件會取得預設的安全性描述元,而且無法繼承控制碼。 工作物件之預設安全性描述元中的 ACL 來自建立者的主要或模擬權杖。
[in, optional] lpName
作業的名稱。 名稱限制為 MAX_PATH 個字元。 名稱比較會區分大小寫。
如果 lpName 為 Null,則會在沒有名稱的情況下建立作業。
如果 lpName 符合現有事件、旗號、mutex、可等候的計時器或檔案對應物件的名稱,則函式會失敗, 而且 GetLastError 函式會傳回 ERROR_INVALID_HANDLE。 這是因為這些物件共用相同的命名空間。
物件可以在私人命名空間中建立。 如需詳細資訊,請參閱 物件命名空間。
終端機服務: 名稱可以有 「Global」 或 「Local」 前置詞,以在全域或會話命名空間中明確建立物件。 名稱的其餘部分可以包含任何字元,但反斜線字元 (\) 除外。 如需詳細資訊,請參閱 核心物件命名空間。
傳回值
如果函式成功,則傳回值是工作物件的控制碼。 控制碼具有 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 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | winbase.h (包括 Windows.h、Jobapi2.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |