Compartilhar via


Função CreateJobObjectA (winbase.h)

Cria ou abre um objeto de trabalho.

Sintaxe

HANDLE CreateJobObjectA(
  [in, optional] LPSECURITY_ATTRIBUTES lpJobAttributes,
  [in, optional] LPCSTR                lpName
);

Parâmetros

[in, optional] lpJobAttributes

Um ponteiro para uma estrutura de SECURITY_ATTRIBUTES que especifica o descritor de segurança do objeto de trabalho e determina se os processos filho podem herdar o identificador retornado. Se lpJobAttributes for NULL, o objeto de trabalho obterá um descritor de segurança padrão e o identificador não poderá ser herdado. As ACLs no descritor de segurança padrão para um objeto de trabalho vêm do token primário ou de representação do criador.

[in, optional] lpName

O nome do trabalho. O nome é limitado a MAX_PATH caracteres. A comparação de nomes diferencia maiúsculas de minúsculas.

Se lpName for NULL, o trabalho será criado sem um nome.

Se lpName corresponder ao nome de um evento existente, semáforo, mutex, temporizador de espera ou objeto de mapeamento de arquivo, a função falhará e a função GetLastError retornará ERROR_INVALID_HANDLE. Isso ocorre porque esses objetos compartilham o mesmo namespace.

O objeto pode ser criado em um namespace privado. Para obter mais informações, consulte namespaces de objeto.

Serviços de Terminal: O nome pode ter um prefixo "Global" ou "Local" para criar explicitamente o objeto no namespace global ou de sessão. O restante do nome pode conter qualquer caractere, exceto o caractere de barra invertida (\). Para obter mais informações, consulte namespaces de objeto kernel.

Valor de retorno

Se a função for bem-sucedida, o valor retornado será um identificador para o objeto de trabalho. O identificador tem o acesso JOB_OBJECT_ALL_ACCESS direito. Se o objeto existir antes da chamada de função, a função retornará um identificador para o objeto de trabalho existente e GetLastError retornará ERROR_ALREADY_EXISTS.

Se a função falhar, o valor retornado será NULL. Para obter informações de erro estendidas, chame GetLastError.

Observações

Quando um trabalho é criado, suas informações de contabilidade são inicializadas como zero, todos os limites são inativos e não há processos associados. Para atribuir um processo a um objeto de trabalho, use a função AssignProcessToJobObject. Para definir limites para um trabalho, use a função SetInformationJobObject. Para consultar informações de contabilidade, use a função QueryInformationJobObject.

Todos os processos associados a um trabalho devem ser executados na mesma sessão. Um trabalho é associado à sessão do primeiro processo a ser atribuído ao trabalho.

Windows Server 2003 e Windows XP: Um trabalho está associado à sessão do processo que o criou.

Para fechar um identificador de objeto de trabalho, use a função CloseHandle. O trabalho é destruído quando seu último identificador foi fechado e todos os processos associados foram encerrados. No entanto, se o trabalho tiver o sinalizador JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE especificado, fechar o último identificador de objeto de trabalho encerrará todos os processos associados e destruirá o próprio objeto de trabalho.

Para compilar um aplicativo que usa essa função, defina _WIN32_WINNT como 0x0500 ou posterior. Para obter mais informações, consulte Usando os cabeçalhos do Windows.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows Server 2003 [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho winbase.h (inclua Windows.h, Jobapi2.h)
biblioteca Kernel32.lib
de DLL Kernel32.dll

Consulte também

AssignProcessToJobObject

CloseHandle

objetos de trabalho

Funções de processo e thread

QueryInformationJobObject

SECURITY_ATTRIBUTES

SetInformationJobObject