Partager via


CreateJobObjectA, fonction (winbase.h)

Crée ou ouvre un objet de travail.

Syntaxe

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

Paramètres

[in, optional] lpJobAttributes

Pointeur vers une structure SECURITY_ATTRIBUTES qui spécifie le descripteur de sécurité pour l’objet de travail et détermine si les processus enfants peuvent hériter du handle retourné. Si lpJobAttributes est NULL, l’objet de travail obtient un descripteur de sécurité par défaut et le handle ne peut pas être hérité. Les listes de contrôle d’accès dans le descripteur de sécurité par défaut pour un objet de travail proviennent du jeton principal ou d’emprunt d’identité du créateur.

[in, optional] lpName

Nom du travail. Le nom est limité à MAX_PATH caractères. La comparaison de noms respecte la casse.

Si lpName est NULL, le travail est créé sans nom.

Si lpName correspond au nom d’un événement, d’un sémaphore, d’un mutex, d’un minuteur d’attente ou d’un objet de mappage de fichiers, la fonction échoue et la fonction GetLastError retourne ERROR_INVALID_HANDLE. Cela se produit parce que ces objets partagent le même espace de noms.

L’objet peut être créé dans un espace de noms privé. Pour plus d’informations, consultez espaces de noms d’objets.

Services Terminal : Le nom peut avoir un préfixe « Global » ou « Local » pour créer explicitement l’objet dans l’espace de noms global ou de session. Le reste du nom peut contenir n’importe quel caractère, à l’exception du caractère de barre oblique inverse (\). Pour plus d’informations, consultez espaces de noms d’objets noyau.

Valeur de retour

Si la fonction réussit, la valeur de retour est un handle pour l’objet de travail. Le handle a le droit d’accès JOB_OBJECT_ALL_ACCESS. Si l’objet existait avant l’appel de fonction, la fonction retourne un handle à l’objet de travail existant et GetLastError retourne ERROR_ALREADY_EXISTS.

Si la fonction échoue, la valeur de retour est NULL. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Remarques

Lorsqu’un travail est créé, ses informations comptables sont initialisées à zéro, toutes les limites sont inactives et il n’existe aucun processus associé. Pour affecter un processus à un objet de travail, utilisez la fonction AssignProcessToJobObject. Pour définir des limites pour un travail, utilisez la fonction SetInformationJobObject. Pour interroger des informations de comptabilité, utilisez la fonction QueryInformationJobObject .

Tous les processus associés à un travail doivent s’exécuter dans la même session. Un travail est associé à la session du premier processus à affecter au travail.

Windows Server 2003 et Windows XP : un travail est associé à la session du processus qui l’a créée.

Pour fermer un handle d’objet de travail, utilisez la fonction CloseHandle. Le travail est détruit lorsque son dernier handle a été fermé et que tous les processus associés ont quitté. Toutefois, si le travail a l’indicateur de JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE spécifié, la fermeture du dernier handle d’objet de travail met fin à tous les processus associés, puis détruit l’objet de travail lui-même.

Pour compiler une application qui utilise cette fonction, définissez _WIN32_WINNT en tant que 0x0500 ou version ultérieure. Pour plus d’informations, consultez Utilisation des en-têtes Windows.

Exigences

Exigence Valeur
client minimum pris en charge Windows XP [applications de bureau uniquement]
serveur minimum pris en charge Windows Server 2003 [applications de bureau uniquement]
plateforme cible Windows
d’en-tête winbase.h (include Windows.h, Jobapi2.h)
bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

AssignProcessToJobObject

closeHandle

objets de travail

processus et fonctions de thread

QueryInformationJobObject

SECURITY_ATTRIBUTES

SetInformationJobObject