Condividi tramite


Funzione ZwDuplicateObject (ntifs.h)

La routine ZwDuplicateObject crea un handle duplicato dell'handle di origine specificato.

Sintassi

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
);

Parametri

[in] SourceProcessHandle

Handle per il processo di origine per l'handle duplicato.

[in] SourceHandle

Handle da duplicare.

[in, optional] TargetProcessHandle

Handle per il processo di destinazione che deve ricevere il nuovo handle. Questo parametro è facoltativo e può essere specificato come NULL se il flag DUPLICATE_CLOSE_SOURCE è impostato in Opzioni.

[out, optional] TargetHandle

Puntatore a una variabile HANDLE in cui la routine scrive il nuovo handle duplicato. L'handle duplicato è valido nel processo di destinazione specificato. Questo parametro è facoltativo e può essere specificato come NULL se non deve essere creato alcun handle duplicato.

[in] DesiredAccess

Valore ACCESS_MASK che specifica l'accesso desiderato per il nuovo handle.

[in] HandleAttributes

ULONG che specifica gli attributi desiderati per il nuovo handle. Per altre informazioni sugli attributi, vedere la descrizione del membro attributi in OBJECT_ATTRIBUTES.

[in] Options

Set di flag per controllare il comportamento dell'operazione di duplicazione. Impostare questo parametro su zero o sull'OR bit per bit di uno o più dei flag seguenti.

Nome flag Descrizione
DUPLICATE_SAME_ATTRIBUTES Invece di usare il parametro HandleAttributes , copiare gli attributi dall'handle di origine all'handle di destinazione.
DUPLICATE_SAME_ACCESS Invece di usare il parametro DesiredAccess , copiare i diritti di accesso dall'handle di origine all'handle di destinazione.
DUPLICATE_CLOSE_SOURCE Chiudere l'handle di origine.

Valore restituito

ZwDuplicateObject restituisce STATUS_SUCCESS se la chiamata ha esito positivo. In caso contrario, restituisce un codice di stato di errore appropriato.

Osservazioni

L'handle di origine viene valutato nel contesto del processo di origine specificato. Il processo chiamante deve avere PROCESS_DUP_HANDLE accesso al processo di origine. L'handle duplicato viene creato nella tabella handle del processo di destinazione specificato. Il processo chiamante deve avere PROCESS_DUP_HANDLE l'accesso al processo di destinazione.

Per impostazione predefinita, l'handle duplicato viene creato con gli attributi specificati dal parametro HandleAttributes e con i diritti di accesso specificati dal parametro DesiredAccess. Se necessario, il chiamante può eseguire l'override di uno o entrambi i valori predefiniti impostando i flag DUPLICATE_SAME_ATTRIBUTES e DUPLICATE_SAME_ACCESS nel parametro Opzioni .

Se la chiamata a questa funzione viene eseguita in modalità utente, è necessario usare il nome "NtDuplicateObject" anziché "ZwDuplicateObject".

Per le chiamate da driver in modalità kernel, le NtXxx e ZwXxx versioni di una routine di Windows Native System Services possono comportarsi in modo diverso nel modo in cui gestiscono e interpretano i parametri di input. Per altre informazioni sulla relazione tra le versioni NtXxx e ZwXxx di una routine, vedere Using Nt and Zw Versions of the Native System Services Routines.

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000.
piattaforma di destinazione Universale
intestazione ntifs.h (include Ntdef.h, Ntifs.h, Fltkernel.h)
libreria Ntoskrnl.lib
IRQL PASSIVE_LEVEL

Vedere anche

ACCESS_MASK

OBJECT_ATTRIBUTES

uso di versioni Nt e Zw delle routine di Servizi di sistema nativi