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 |