Fonction ZwDuplicateObject (ntifs.h)
La routine ZwDuplicateObject crée un handle qui est un doublon du handle source spécifié.
Syntaxe
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
);
Paramètres
[in] SourceProcessHandle
Handle du processus source pour le handle en double.
[in] SourceHandle
Handle à dupliquer.
[in, optional] TargetProcessHandle
Handle du processus cible qui doit recevoir le nouveau handle. Ce paramètre est facultatif et peut être spécifié comme NULL si l’indicateur DUPLICATE_CLOSE_SOURCE est défini dans Options.
[out, optional] TargetHandle
Pointeur vers une variable HANDLE dans laquelle la routine écrit le nouveau handle dupliqué. Le handle dupliqué est valide dans le processus cible spécifié. Ce paramètre est facultatif et peut être spécifié comme NULL si aucun handle en double ne doit être créé.
[in] DesiredAccess
Valeur ACCESS_MASK qui spécifie l’accès souhaité pour le nouveau handle.
[in] HandleAttributes
ULONG qui spécifie les attributs souhaités pour le nouveau handle. Pour plus d’informations sur les attributs, consultez la description du membre Attributes dans OBJECT_ATTRIBUTES.
[in] Options
Ensemble d’indicateurs pour contrôler le comportement de l’opération de duplication. Définissez ce paramètre sur zéro ou sur la valeur OR au niveau du bit d’un ou plusieurs des indicateurs suivants.
Nom de l’indicateur | Description |
---|---|
DUPLICATE_SAME_ATTRIBUTES | Au lieu d’utiliser le paramètre HandleAttributes , copiez les attributs du handle source vers le handle cible. |
DUPLICATE_SAME_ACCESS | Au lieu d’utiliser le paramètre DesiredAccess , copiez les droits d’accès du handle source vers le handle cible. |
DUPLICATE_CLOSE_SOURCE | Fermez le handle source. |
Valeur retournée
ZwDuplicateObject retourne STATUS_SUCCESS si l’appel réussit. Sinon, il retourne une erreur appropriée status code.
Remarques
Le handle source est évalué dans le contexte du processus source spécifié. Le processus appelant doit avoir PROCESS_DUP_HANDLE accès au processus source. Le handle en double est créé dans la table handle du processus cible spécifié. Le processus appelant doit avoir PROCESS_DUP_HANDLE accès au processus cible.
Par défaut, le handle en double est créé avec les attributs spécifiés par le paramètre HandleAttributes et avec les droits d’accès spécifiés par le paramètre DesiredAccess . Si nécessaire, l’appelant peut remplacer une ou les deux valeurs par défaut en définissant les indicateurs DUPLICATE_SAME_ATTRIBUTES et DUPLICATE_SAME_ACCESS dans le paramètre Options .
Si l’appel à cette fonction se produit en mode utilisateur, vous devez utiliser le nom « NtDuplicateObject » au lieu de « ZwDuplicateObject ».
Pour les appels à partir de pilotes en mode noyau, les versions NtXxx et ZwXxx d’une routine Windows Native System Services peuvent se comporter différemment dans la façon dont elles gèrent et interprètent les paramètres d’entrée. Pour plus d’informations sur la relation entre les versions NtXxx et ZwXxx d’une routine, consultez Utilisation des versions Nt et Zw des routines des services système natifs.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000. |
Plateforme cible | Universal |
En-tête | ntifs.h (inclure Ntdef.h, Ntifs.h, Fltkernel.h) |
Bibliothèque | Ntoskrnl.lib |
IRQL | PASSIVE_LEVEL |
Voir aussi
Utilisation des versions Nt et Zw des routines natives des services système natifs
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour