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 |
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
à l’aide de versions Nt et Zw des routines natives des services système