Compartir a través de


Función ZwDuplicateObject (ntifs.h)

El ZwDuplicateObject rutina crea un identificador que es un duplicado del identificador de origen especificado.

Sintaxis

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
);

Parámetros

[in] SourceProcessHandle

Identificador del proceso de origen para el identificador que se va a duplicar.

[in] SourceHandle

Identificador que se va a duplicar.

[in, optional] TargetProcessHandle

Identificador del proceso de destino que va a recibir el nuevo identificador. Este parámetro es opcional y se puede especificar como NULL si la marca de DUPLICATE_CLOSE_SOURCE está establecida en Opciones.

[out, optional] TargetHandle

Puntero a una variable HANDLE en la que la rutina escribe el nuevo identificador duplicado. El identificador duplicado es válido en el proceso de destino especificado. Este parámetro es opcional y se puede especificar como NULL si no se va a crear ningún identificador duplicado.

[in] DesiredAccess

Valor ACCESS_MASK que especifica el acceso deseado para el nuevo identificador.

[in] HandleAttributes

ULONG que especifica los atributos deseados para el nuevo identificador. Para obtener más información sobre los atributos, vea la descripción del miembro Attributes en OBJECT_ATTRIBUTES.

[in] Options

Conjunto de marcas para controlar el comportamiento de la operación de duplicación. Establezca este parámetro en cero o en el OR bit a bit de uno o varios de los siguientes marcadores.

Nombre de marca Descripción
DUPLICATE_SAME_ATTRIBUTES En lugar de usar el parámetro HandleAttributes, copie los atributos del identificador de origen en el identificador de destino.
DUPLICATE_SAME_ACCESS En lugar de usar el parámetro DesiredAccess, copie los derechos de acceso del identificador de origen en el identificador de destino.
DUPLICATE_CLOSE_SOURCE Cierre el identificador de origen.

Valor devuelto

zwDuplicateObject devuelve STATUS_SUCCESS si la llamada se realiza correctamente. De lo contrario, devuelve un código de estado de error adecuado.

Observaciones

El identificador de origen se evalúa en el contexto del proceso de origen especificado. El proceso de llamada debe tener PROCESS_DUP_HANDLE acceso al proceso de origen. El identificador duplicado se crea en la tabla de identificadores del proceso de destino especificado. El proceso de llamada debe tener PROCESS_DUP_HANDLE acceso al proceso de destino.

De forma predeterminada, el identificador duplicado se crea con los atributos especificados por el parámetro HandleAttributes y con los derechos de acceso especificados por el parámetro DesiredAccess. Si es necesario, el autor de la llamada puede invalidar uno o ambos valores predeterminados estableciendo las marcas DUPLICATE_SAME_ATTRIBUTES y DUPLICATE_SAME_ACCESS en el parámetro opciones de .

Si la llamada a esta función se produce en modo de usuario, debe usar el nombre "NtDuplicateObject" en lugar de "ZwDuplicateObject".

En el caso de las llamadas desde controladores en modo kernel, las NtXxx y Zwversiones de Xxx de una rutina de Servicios del sistema nativo de Windows pueden comportarse de forma diferente en la forma en que controlan e interpretan los parámetros de entrada. Para obtener más información sobre la relación entre las versiones de NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000.
de la plataforma de destino de Universal
encabezado de ntifs.h (include Ntdef.h, Ntifs.h, Fltkernel.h)
biblioteca de Ntoskrnl.lib
irQL PASSIVE_LEVEL

Consulte también

ACCESS_MASK

OBJECT_ATTRIBUTES

usar versiones Nt y Zw de las rutinas de servicios del sistema nativo