Partager via


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

ACCESS_MASK

OBJECT_ATTRIBUTES

Utilisation des versions Nt et Zw des routines natives des services système natifs