Condividi tramite


Funzione CreateJobObjectA (winbase.h)

Crea o apre un oggetto processo.

Sintassi

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

Parametri

[in, optional] lpJobAttributes

Puntatore a una struttura SECURITY_ATTRIBUTES che specifica il descrittore di sicurezza per l'oggetto processo e determina se i processi figlio possono ereditare l'handle restituito. Se lpJobAttributes è NULL, l'oggetto processo ottiene un descrittore di sicurezza predefinito e l'handle non può essere ereditato. Gli ACL nel descrittore di sicurezza predefinito per un oggetto processo provengono dal token primario o di rappresentazione dell'autore.

[in, optional] lpName

Nome del processo. Il nome è limitato ai caratteri MAX_PATH. Il confronto tra nomi fa distinzione tra maiuscole e minuscole.

Se lpName è null, il processo viene creato senza un nome.

Se lpName corrisponde al nome di un evento esistente, semaforo, mutex, timer waitable o oggetto di mapping di file, la funzione ha esito negativo e la funzione GetLastError restituisce ERROR_INVALID_HANDLE. Ciò si verifica perché questi oggetti condividono lo stesso spazio dei nomi.

L'oggetto può essere creato in uno spazio dei nomi privato. Per altre informazioni, vedere spazi dei nomi degli oggetti .

Servizi terminal: Il nome può avere un prefisso "Global" o "Local" per creare in modo esplicito l'oggetto nello spazio dei nomi globale o sessione. Il resto del nome può contenere qualsiasi carattere, ad eccezione del carattere barra rovesciata (\). Per altre informazioni, vedere spazi dei nomi dell'oggetto kernel .

Valore restituito

Se la funzione ha esito positivo, il valore restituito è un handle per l'oggetto processo. L'handle ha il diritto di accesso JOB_OBJECT_ALL_ACCESS. Se l'oggetto esiste prima della chiamata di funzione, la funzione restituisce un handle all'oggetto processo esistente e GetLastError restituisce ERROR_ALREADY_EXISTS.

Se la funzione ha esito negativo, il valore restituito è NULL. Per ottenere informazioni estese sull'errore, chiamare GetLastError.

Osservazioni

Quando viene creato un processo, le informazioni contabili vengono inizializzate su zero, tutti i limiti sono inattivi e non sono presenti processi associati. Per assegnare un processo a un oggetto processo, usare la funzione assignProcessToJobObject . Per impostare i limiti per un processo, usare la funzione setInformationJobObject . Per eseguire query sulle informazioni contabili, usare la funzione queryInformationJobObject .

Tutti i processi associati a un processo devono essere eseguiti nella stessa sessione. Un processo è associato alla sessione del primo processo da assegnare al processo.

Windows Server 2003 e Windows XP: Un processo è associato alla sessione del processo che lo ha creato.

Per chiudere un handle di oggetto processo, usare la funzione CloseHandle . Il processo viene eliminato definitivamente quando l'ultimo handle è stato chiuso e tutti i processi associati sono stati chiusi. Tuttavia, se il processo ha il flag JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE specificato, la chiusura dell'ultimo handle dell'oggetto processo termina tutti i processi associati e quindi elimina definitivamente l'oggetto processo stesso.

Per compilare un'applicazione che usa questa funzione, definire _WIN32_WINNT come 0x0500 o versione successiva. Per altre informazioni, vedere Uso delle intestazioni di Windows.

Fabbisogno

Requisito Valore
client minimo supportato Windows XP [solo app desktop]
server minimo supportato Windows Server 2003 [solo app desktop]
piattaforma di destinazione Finestre
intestazione winbase.h (include Windows.h, Jobapi2.h)
libreria Kernel32.lib
dll Kernel32.dll

Vedere anche

AssignProcessToJobObject

CloseHandle

oggetti processo

processi e funzioni thread

QueryInformationJobObject

SECURITY_ATTRIBUTES

SetInformationJobObject