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 a MAX_PATH caratteri. Il confronto tra nomi è 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 in attesa o oggetto mapping 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 degli oggetti 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 alla 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 informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Quando viene creato un processo, le informazioni di contabilità 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 di contabilità, 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 l'ha creata.

Per chiudere un handle dell'oggetto processo, usare la funzione CloseHandle . Il processo viene distrutto 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, chiudere l'ultimo handle dell'oggetto processo termina tutti i processi associati e quindi elimina l'oggetto processo stesso.

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

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winbase.h (includono Windows.h, Jobapi2.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

AssignProcessToJobObject

Closehandle

Oggetti processo

Funzioni di processi e thread

QueryInformationJobObject

SECURITY_ATTRIBUTES

SetInformationJobObject