Freigeben über


ZwDuplicateObject-Funktion (ntifs.h)

Die ZwDuplicateObject-Routine erstellt ein Handle, das ein Duplikat des angegebenen Quellhandles 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 Handle, das dupliziert wird.

[in] SourceHandle

Das zu duplizierende Handle.

[in, optional] TargetProcessHandle

Ein Handle für den Zielprozess, der das neue Handle empfangen soll. Dieser Parameter ist optional und kann als NULL angegeben werden, wenn das DUPLICATE_CLOSE_SOURCE-Flag in Optionen festgelegt 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 dupliziertes 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-Element, das die gewünschten Attribute für das neue Handle angibt. Weitere Informationen zu Attributen finden Sie in der Beschreibung des Elements Attribute in OBJECT_ATTRIBUTES.

[in] Options

Eine Gruppe von Flags, um das Verhalten des Duplizierungsvorgangs zu steuern. Legen Sie diesen Parameter auf null oder auf den bitweisen OR eines 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 DesiredAccess-Parameter zu verwenden, kopieren Sie die Zugriffsrechte aus dem Quellhandle in das Zielhandle.
DUPLICATE_CLOSE_SOURCE Schließen Sie das Quellhandle.

Rückgabewert

ZwDuplicateObject gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Andernfalls wird ein entsprechender Fehler status Code zurückgegeben.

Hinweise

Das Quellhandle wird im Kontext des angegebenen Quellprozesses ausgewertet. Der aufrufende Prozess muss PROCESS_DUP_HANDLE Zugriff auf den Quellprozess haben. Das doppelte Handle wird in der Handle-Tabelle des angegebenen Zielprozesses erstellt. Der aufrufende Prozess muss PROCESS_DUP_HANDLE Zugriff auf den Zielprozess haben.

Standardmäßig wird das duplizierte Handle mit den Attributen erstellt, die durch den HandleAttributes-Parameter angegeben sind, und mit den durch den DesiredAccess-Parameter angegebenen Zugriffsrechten. Bei Bedarf kann der Aufrufer einen oder beide Standardwerte außer Kraft setzen, indem er die DUPLICATE_SAME_ATTRIBUTES - und DUPLICATE_SAME_ACCESS-Flags im Options-Parameter festlegt.

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, da sie Eingabeparameter verarbeiten und interpretieren. Weitere Informationen zur Beziehung zwischen den Nt Xxx- und ZwXxx-Versionen einer Routine finden Sie unter Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000.
Zielplattform Universell
Header ntifs.h (einschließlich Ntdef.h, Ntifs.h, Fltkernel.h)
Bibliothek Ntoskrnl.lib
IRQL PASSIVE_LEVEL

Weitere Informationen

ACCESS_MASK

OBJECT_ATTRIBUTES

Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen