Función ZwDuplicateObject (ntifs.h)
La rutina ZwDuplicateObject 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 una o varias de las marcas siguientes.
Nombre del marcador | 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 es correcta. De lo contrario, devuelve un código de estado de error adecuado.
Comentarios
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 Options .
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 versiones NtXxx y ZwXxx de una rutina de Servicios del sistema nativo de Windows se pueden comportar 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 NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000. |
Plataforma de destino | Universal |
Encabezado | ntifs.h (incluya Ntdef.h, Ntifs.h, Fltkernel.h) |
Library | Ntoskrnl.lib |
IRQL | PASSIVE_LEVEL |
Consulte también
Uso de las versiones Nt y Zw de las rutinas nativas de Servicios del sistema