Freigeben über


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

ACCESS_MASK

OBJECT_ATTRIBUTES

Verwenden von Nt- und Zw-Versionen der systemeigenen Systemdienste-Routinen