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] 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 |
DUPLICATE_SAME_ACCESS | Invece di usare il parametro DesiredAccess |
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
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
uso di versioni Nt e Zw delle routine di Servizi di sistema nativi