SetInformationJobObject ジョブオブジェクトの制限の設定

Cの宣言:

BOOL SetInformationJobObject(
	HANDLE hJob,
	JOBOBJECTINFOCLASS JobInfoClass,
	LPVOID JobInfo,
	DWORD JobInfoSize);

説明:

hJobで指定されたジョブオブジェクトに対して、JobInfoで指定した制限を設定する。

この関数はNT5.0で使用可能。

引数の意味は以下の通り。
hJob 設定先のジョブオブジェクトのハンドル
JobInfoClass 設定する制限の種別。後述の表を参照。
JobInfo 設定する制限。
JobInfoSize JobInfoのサイズ。

JobInfoClassに指定可能なフラグは以下の値のいずれかである。
JobObjectBasicLimitInformation JobInfoはJOBOBJECT_BASIC_LIMIT_INFORMATION構造体のポインタ。
JobObjectBasicUIRestrictions JobInfoはJOBOBJECT_BASIC_UI_RESTRICTIONS構造体のポインタ。

戻り値は、関数の実行に成功したか否かを表す真偽値である。

Cのサンプル:

メモ帳を三つ起動し、それぞれをジョブオブジェクトに関連付ける。関連付けたら、メモ帳のクリップボードに対する読み込みおよび書き込みをSetInformationJobObjectによって禁止する。
/* メモ帳のコピー・貼り付けを無効化する */
void DisableClipboard()
{
	HANDLE hJob;
	HANDLE hProcess[3];
	int i;
	STARTUPINFO si;
	PROCESS_INFORMATION pi;
	JOBOBJECT_BASIC_UI_RESTRICTIONS Rest;

	si.cb = sizeof(si);
	si.lpReserved = NULL;
	si.lpDesktop = NULL;
	si.lpTitle = NULL;
	si.dwFlags = 0;
	si.cbReserved2 = 0;
	si.lpReserved2 = NULL;

	/* ジョブオブジェクトの作成 */
	hJob = CreateJobObject(NULL, "Test Job Object");

	/* メモ帳を三つ起動 */
	for(i=0; i<3; i++) {
		CreateProcess(NOTEPAD_PATH, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
		hProcess[i] = pi.hProcess;
	}

	/* 起動したメモ帳をジョブオブジェクトに関連付ける */
	for(i=0; i<3; i++) AssignProcessToJobObject(hJob, hProcess[i]);

	/* 三つのメモ帳のクリップボードに対する読み込み・書き込みを制限する */
	Rest.UIRestrictionsClass = JOB_OBJECT_UILIMIT_READCLIPBOARD | JOB_OBJECT_UILIMIT_WRITECLIPBOARD;
	SetInformationJobObject(hJob, JobObjectBasicUIRestrictions, &Rest, sizeof(Rest));

	/* ジョブオブジェクトのクローズ */
	CloseHandle(hJob);
}
(original text:1999/01/11 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。