Función CreateJobObjectW (jobapi2.h)
Crea o abre un objeto de trabajo.
Sintaxis
HANDLE CreateJobObjectW(
[in, optional] LPSECURITY_ATTRIBUTES lpJobAttributes,
[in, optional] LPCWSTR lpName
);
Parámetros
[in, optional] lpJobAttributes
Puntero a una estructura de SECURITY_ATTRIBUTES que especifica el descriptor de seguridad para el objeto de trabajo y determina si los procesos secundarios pueden heredar el identificador devuelto. Si lpJobAttributes es NULL, el objeto de trabajo obtiene un descriptor de seguridad predeterminado y el identificador no se puede heredar. Las ACL del descriptor de seguridad predeterminado para un objeto de trabajo proceden del token principal o de suplantación del creador.
[in, optional] lpName
Nombre del trabajo. El nombre está limitado a MAX_PATH caracteres. La comparación de nombres distingue mayúsculas de minúsculas.
Si lpName es NULL, el trabajo se crea sin un nombre.
Si lpName coincide con el nombre de un evento existente, semáforo, exclusión mutua, temporizador de espera o objeto de asignación de archivos, se produce un error en la función y la función GetLastError devuelve ERROR_INVALID_HANDLE. Esto ocurre porque estos objetos comparten el mismo espacio de nombres.
El objeto se puede crear en un espacio de nombres privado. Para obtener más información, vea Espacios de nombres de objeto.
Terminal Services: El nombre puede tener un prefijo "Global\" o "Local\" para crear explícitamente el objeto en el espacio de nombres global o de sesión. El resto del nombre puede contener cualquier carácter excepto el carácter de barra diagonal inversa (\). Para obtener más información, vea Espacios de nombres de objeto kernel.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es un identificador para el objeto de trabajo. El identificador tiene el derecho de acceso JOB_OBJECT_ALL_ACCESS . Si el objeto existía antes de la llamada de función, la función devuelve un identificador al objeto de trabajo existente y GetLastError devuelve ERROR_ALREADY_EXISTS.
Si la función no se realiza correctamente, el valor devuelto es NULL. Para obtener información de error extendida, llame a GetLastError.
Comentarios
Cuando se crea un trabajo, su información contable se inicializa en cero, todos los límites están inactivos y no hay procesos asociados. Para asignar un proceso a un objeto de trabajo, use la función AssignProcessToJobObject . Para establecer límites para un trabajo, use la función SetInformationJobObject . Para consultar información de contabilidad, use la función QueryInformationJobObject .
Todos los procesos asociados a un trabajo deben ejecutarse en la misma sesión. Un trabajo está asociado a la sesión del primer proceso que se asignará al trabajo.
Windows Server 2003 y Windows XP: Un trabajo está asociado a la sesión del proceso que lo creó.
Para cerrar un identificador de objeto de trabajo, use la función CloseHandle . El trabajo se destruye cuando se ha cerrado su último identificador y se han salido todos los procesos asociados. Sin embargo, si el trabajo tiene la marca de JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE especificada, cerrar el último identificador de objeto de trabajo finaliza todos los procesos asociados y, a continuación, destruye el propio objeto de trabajo.
Para compilar una aplicación que use esta función, defina _WIN32_WINNT como 0x0500 o posterior. Para obtener más información, vea Uso de los encabezados de Windows.
Requisitos
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | jobapi2.h (incluya Windows.h, Jobapi2.h) |
Library | Kernel32.lib |
Archivo DLL | Kernel32.dll |