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 di 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 viene 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 Attributes 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 | Anziché usare il parametro HandleAttributes , copiare gli attributi dall'handle di origine all'handle di destinazione. |
DUPLICATE_SAME_ACCESS | Anziché 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.
Commenti
L'handle di origine viene valutato nel contesto del processo di origine specificato. Il processo di chiamata 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 di chiamata deve avere PROCESS_DUP_HANDLE 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 di DUPLICATE_SAME_ATTRIBUTES e DUPLICATE_SAME_ACCESS nel parametro Opzioni .
Se la chiamata a questa funzione si verifica in modalità utente, è necessario usare il nome "NtDuplicateObject" anziché "ZwDuplicateObject".
Per le chiamate dai driver in modalità kernel, le versioni NtXxx e ZwXxx 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 Uso di nt e zw versioni delle routine di Servizi di sistema nativo.
Requisiti
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 |
Vedi anche
Uso di nt e zw versioni delle routine di Servizi di sistema nativo