Partager via


ZwDuplicateObject, fonction (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 vers le processus source pour le handle en double.

[in] SourceHandle

Handle à dupliquer.

[in, optional] TargetProcessHandle

Handle vers le processus cible qui doit recevoir le nouveau handle. Ce paramètre est facultatif et peut être spécifié comme NULL si l’indicateur de 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 dupliqué n’est à créer.

[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 des attributs membre 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 l’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 de retour

ZwDuplicateObject retourne STATUS_SUCCESS si l’appel réussit. Sinon, elle retourne un code d’état d’erreur approprié.

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 de handles du processus cible spécifié. Le processus appelant doit avoir PROCESS_DUP_HANDLE accès au processus cible.

Par défaut, le handle dupliqué est créé avec les attributs spécifiés par le paramètre de 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 de 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 Using Nt and Zw Versions of the Native System Services Routines.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000.
plateforme cible Universel
d’en-tête ntifs.h (include Ntdef.h, Ntifs.h, Fltkernel.h)
bibliothèque Ntoskrnl.lib
IRQL PASSIVE_LEVEL

Voir aussi

ACCESS_MASK

OBJECT_ATTRIBUTES

à l’aide de versions Nt et Zw des routines natives des services système