Share via


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이 기존 이벤트, 세마포, 뮤텍스, 대기 가능한 타이머 또는 파일 매핑 개체의 이름과 일치하면 함수가 실패하고 GetLastError 함수가 ERROR_INVALID_HANDLE 반환합니다. 이 문제는 이러한 개체가 동일한 네임스페이스를 공유하기 때문에 발생합니다.

개체는 프라이빗 네임스페이스에서 만들 수 있습니다. 자세한 내용은 개체 네임스페이스를 참조하세요.

터미널 서비스: 이름에는 전역 또는 세션 네임스페이스에 개체를 명시적으로 만드는 "전역" 또는 "로컬" 접두사를 가질 수 있습니다. 이름의 나머지 부분에는 백슬래시 문자(\)를 제외한 모든 문자가 포함될 수 있습니다. 자세한 내용은 커널 개체 네임스페이스를 참조하세요.

반환 값

함수가 성공하면 반환 값은 작업 개체에 대한 핸들입니다. 핸들에 JOB_OBJECT_ALL_ACCESS 액세스 권한이 있습니다. 함수 호출 전에 개체가 있는 경우 함수는 기존 작업 개체에 대한 핸들을 반환하고 GetLastErrorERROR_ALREADY_EXISTS 반환합니다.

함수가 실패하면 반환 값은 NULL입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

작업이 만들어지면 회계 정보가 0으로 초기화되고 모든 제한이 비활성 상태이며 연결된 프로세스가 없습니다. 작업 개체에 프로세스를 할당하려면 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