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」 前置詞,以在全域或會話命名空間中明確建立物件。 名稱的其餘部分可以包含任何字元,但反斜線字元 (\) 除外。 如需詳細資訊,請參閱 核心物件命名空間

傳回值

如果函式成功,則傳回值是工作物件的控制碼。 控制碼具有 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

另請參閱

AssignProcessToJobObject

CloseHandle

工作物件

處理序和執行緒函式

QueryInformationJobObject

SECURITY_ATTRIBUTES

SetInformationJobObject