ZwDuplicateObject-Funktion (ntifs.h)
Die ZwDuplicateObject Routine erstellt ein Handle, das ein Duplikat des angegebenen Quellhandle ist.
Syntax
NTSYSAPI NTSTATUS ZwDuplicateObject(
[in] HANDLE SourceProcessHandle,
[in] HANDLE SourceHandle,
[in, optional] HANDLE TargetProcessHandle,
[out, optional] PHANDLE TargetHandle,
[in] ACCESS_MASK DesiredAccess,
[in] ULONG HandleAttributes,
[in] ULONG Options
);
Parameter
[in] SourceProcessHandle
Ein Handle für den Quellprozess für das duplizierte Handle.
[in] SourceHandle
Das Handle, das dupliziert werden soll.
[in, optional] TargetProcessHandle
Ein Handle für den Zielprozess, der das neue Handle empfängt. Dieser Parameter ist optional und kann als NULL angegeben werden, wenn das DUPLICATE_CLOSE_SOURCE Flag in Optionsfestgelegt ist.
[out, optional] TargetHandle
Ein Zeiger auf eine HANDLE-Variable, in die die Routine das neue duplizierte Handle schreibt. Das duplizierte Handle ist im angegebenen Zielprozess gültig. Dieser Parameter ist optional und kann als NULL angegeben werden, wenn kein doppelter Handle erstellt werden soll.
[in] DesiredAccess
Ein ACCESS_MASK Wert, der den gewünschten Zugriff für das neue Handle angibt.
[in] HandleAttributes
Ein ULONG, der die gewünschten Attribute für den neuen Handle angibt. Weitere Informationen zu Attributen finden Sie in der Beschreibung des Attributes Member in OBJECT_ATTRIBUTES.
[in] Options
Eine Reihe von Flags zum Steuern des Verhaltens des Duplizierungsvorgangs. Legen Sie diesen Parameter auf Null oder auf den bitweisen OR einer oder mehrerer der folgenden Flags fest.
Flagname | Beschreibung |
---|---|
DUPLICATE_SAME_ATTRIBUTES | Anstatt den HandleAttributes Parameter zu verwenden, kopieren Sie die Attribute aus dem Quellhandle in das Zielhandle. |
DUPLICATE_SAME_ACCESS | Anstatt den parameter DesiredAccess zu verwenden, kopieren Sie die Zugriffsrechte aus dem Quellhandle in das Zielhandle. |
DUPLICATE_CLOSE_SOURCE | Schließen Sie den Quellhandle. |
Rückgabewert
ZwDuplicateObject gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Andernfalls wird ein entsprechender Fehlerstatuscode zurückgegeben.
Bemerkungen
Das Quellhandle wird im Kontext des angegebenen Quellprozesses ausgewertet. Der aufrufende Prozess muss über PROCESS_DUP_HANDLE Zugriff auf den Quellprozess verfügen. Das duplizierte Handle wird in der Handle-Tabelle des angegebenen Zielprozesses erstellt. Der Aufrufvorgang muss über PROCESS_DUP_HANDLE Zugriff auf den Zielprozess verfügen.
Standardmäßig wird das duplizierte Handle mit den Attributen erstellt, die durch den parameter HandleAttributes angegeben wurden, und mit den durch den Parameter DesiredAccess angegebenen Zugriffsrechten. Bei Bedarf kann der Aufrufer eine oder beide Standardwerte außer Kraft setzen, indem die DUPLICATE_SAME_ATTRIBUTES und DUPLICATE_SAME_ACCESS Flags im parameter Options festgelegt werden.
Wenn der Aufruf dieser Funktion im Benutzermodus erfolgt, sollten Sie den Namen "NtDuplicateObject" anstelle von "ZwDuplicateObject" verwenden.
Bei Aufrufen von Kernelmodustreibern können sich die NtXxx und ZwXxx- Versionen einer Windows Native System Services-Routine anders verhalten, wie sie Eingabeparameter behandeln und interpretieren. Weitere Informationen zur Beziehung zwischen den NtXxx und ZwXxx- Versionen einer Routine finden Sie unter Using Nt and Zw Versions of the Native System Services Routines.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 2000. |
Zielplattform- | Universal |
Header- | ntifs.h (include Ntdef.h, Ntifs.h, Fltkernel.h) |
Library | Ntoskrnl.lib |
IRQL- | PASSIVE_LEVEL |
Siehe auch
Verwenden von Nt- und Zw-Versionen der systemeigenen Systemdienste-Routinen