CreateJobObjectA-Funktion (winbase.h)
Erstellt oder öffnet ein Auftragsobjekt.
Syntax
HANDLE CreateJobObjectA(
[in, optional] LPSECURITY_ATTRIBUTES lpJobAttributes,
[in, optional] LPCSTR lpName
);
Parameter
[in, optional] lpJobAttributes
Ein Zeiger auf eine SECURITY_ATTRIBUTES Struktur, die den Sicherheitsdeskriptor für das Auftragsobjekt angibt und bestimmt, ob untergeordnete Prozesse den zurückgegebenen Handle erben können. Wenn lpJobAttributes-NULL-ist, ruft das Auftragsobjekt einen Standardsicherheitsdeskriptor ab, und der Handle kann nicht geerbt werden. Die ACLs im Standardsicherheitsdeskriptor für ein Auftragsobjekt stammen aus dem primären Oder Identitätswechseltoken des Erstellers.
[in, optional] lpName
Der Name des Auftrags. Der Name ist auf MAX_PATH Zeichen beschränkt. Bei dem Namensvergleich wird die Groß-/Kleinschreibung beachtet.
Wenn lpName-NULL-ist, wird der Auftrag ohne Namen erstellt.
Wenn lpName- mit dem Namen eines vorhandenen Ereignisses, Semaphor, Mutex, Wartezeitgeber oder Dateizuordnungsobjekts übereinstimmt, schlägt die Funktion fehl, und die GetLastError Funktion gibt ERROR_INVALID_HANDLEzurück. Dies geschieht, da diese Objekte denselben Namespace gemeinsam nutzen.
Das Objekt kann in einem privaten Namespace erstellt werden. Weitere Informationen finden Sie unter Object Namespaces.
Terminaldienste: Der Name kann ein Präfix "Global" oder "Local" aufweisen, um das Objekt explizit im globalen oder Sitzungsnamespace zu erstellen. Der Rest des Namens kann ein beliebiges Zeichen mit Ausnahme des umgekehrten Schrägstrichs (\) enthalten. Weitere Informationen finden Sie unter Kernel Object Namespaces.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Handle für das Auftragsobjekt. Das Handle verfügt über das JOB_OBJECT_ALL_ACCESS Zugriffsrecht. Wenn das Objekt vor dem Funktionsaufruf vorhanden ist, gibt die Funktion ein Handle an das vorhandene Auftragsobjekt zurück und GetLastError gibt ERROR_ALREADY_EXISTSzurück.
Wenn die Funktion fehlschlägt, ist der Rückgabewert NULL. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.
Bemerkungen
Wenn ein Auftrag erstellt wird, werden seine Buchhaltungsinformationen auf Null initialisiert, alle Grenzwerte sind inaktiv, und es gibt keine zugeordneten Prozesse. Um einem Auftragsobjekt einen Prozess zuzuweisen, verwenden Sie die AssignProcessToJobObject--Funktion. Verwenden Sie zum Festlegen von Grenzwerten für einen Auftrag die SetInformationJobObject--Funktion. Verwenden Sie zum Abfragen von Buchhaltungsinformationen die QueryInformationJobObject--Funktion.
Alle Prozesse, die einem Auftrag zugeordnet sind, müssen in derselben Sitzung ausgeführt werden. Ein Auftrag ist der Sitzung des ersten Prozesses zugeordnet, der dem Auftrag zugewiesen werden soll.
Windows Server 2003 und Windows XP: Ein Auftrag ist der Sitzung des Prozesses zugeordnet, der ihn erstellt hat.
Verwenden Sie zum Schließen eines Auftragsobjekthandles die CloseHandle--Funktion. Der Auftrag wird zerstört, wenn der letzte Handle geschlossen wurde und alle zugehörigen Prozesse beendet wurden. Wenn der Auftrag jedoch das JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE Flag angegeben hat, beendet das Schließen des letzten Auftragsobjekthandle alle zugeordneten Prozesse und zerstört dann das Auftragsobjekt selbst.
Um eine Anwendung zu kompilieren, die diese Funktion verwendet, definieren Sie _WIN32_WINNT als 0x0500 oder höher. Weitere Informationen finden Sie unter Verwenden der Windows-Header.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows XP [nur Desktop-Apps] |
mindestens unterstützte Server- | Windows Server 2003 [Nur Desktop-Apps] |
Zielplattform- | Fenster |
Header- | winbase.h (include Windows.h, Jobapi2.h) |
Library | Kernel32.lib |
DLL- | Kernel32.dll |