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 が既存のイベント、セマフォ、ミューテックス、待機可能タイマー、またはファイル マッピング オブジェクトの名前と一致する場合、関数は失敗し、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 を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |