Função ZwDuplicateObject (ntifs.h)
A rotina ZwDuplicateObject cria um identificador que é uma duplicata do identificador de origem especificado.
Sintaxe
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
Um identificador para o processo de origem para o identificador que está sendo duplicado.
[in] SourceHandle
O identificador a ser duplicado.
[in, optional] TargetProcessHandle
Um identificador para o processo de destino que deve receber o novo identificador. Esse parâmetro é opcional e pode ser especificado como NULL se o sinalizador DUPLICATE_CLOSE_SOURCE estiver definido em Opções.
[out, optional] TargetHandle
Um ponteiro para uma variável HANDLE na qual a rotina grava o novo identificador duplicado. O identificador duplicado é válido no processo de destino especificado. Esse parâmetro é opcional e pode ser especificado como NULL se nenhum identificador duplicado for criado.
[in] DesiredAccess
Um valor ACCESS_MASK que especifica o acesso desejado para o novo identificador.
[in] HandleAttributes
Um ULONG que especifica os atributos desejados para o novo identificador. Para obter mais informações sobre atributos, consulte a descrição do membro Attributes no OBJECT_ATTRIBUTES.
[in] Options
Um conjunto de sinalizadores para controlar o comportamento da operação de duplicação. Defina esse parâmetro como zero ou como OR bit a bit de um ou mais dos sinalizadores a seguir.
Nome do sinalizador | Descrição |
---|---|
DUPLICATE_SAME_ATTRIBUTES | Em vez de usar o parâmetro HandleAttributes , copie os atributos do identificador de origem para o identificador de destino. |
DUPLICATE_SAME_ACCESS | Em vez de usar o parâmetro DesiredAccess , copie os direitos de acesso do identificador de origem para o identificador de destino. |
DUPLICATE_CLOSE_SOURCE | Feche o identificador de origem. |
Retornar valor
ZwDuplicateObject retornará STATUS_SUCCESS se a chamada for bem-sucedida. Caso contrário, ele retornará um erro apropriado status código.
Comentários
O identificador de origem é avaliado no contexto do processo de origem especificado. O processo de chamada deve ter PROCESS_DUP_HANDLE acesso ao processo de origem. O identificador duplicado é criado na tabela de identificador do processo de destino especificado. O processo de chamada deve ter PROCESS_DUP_HANDLE acesso ao processo de destino.
Por padrão, o identificador duplicado é criado com os atributos especificados pelo parâmetro HandleAttributes e com os direitos de acesso especificados pelo parâmetro DesiredAccess . Se necessário, o chamador pode substituir um ou ambos os padrões definindo os sinalizadores DUPLICATE_SAME_ATTRIBUTES e DUPLICATE_SAME_ACCESS no parâmetro Options .
Se a chamada para essa função ocorrer no modo de usuário, você deverá usar o nome "NtDuplicateObject" em vez de "ZwDuplicateObject".
Para chamadas de drivers no modo kernel, as versões NtXxx e ZwXxx de uma rotina dos Serviços do Sistema Nativo do Windows podem se comportar de forma diferente na maneira como lidam e interpretam parâmetros de entrada. Para obter mais informações sobre a relação entre as versões NtXxx e ZwXxx de uma rotina, consulte Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000. |
Plataforma de Destino | Universal |
Cabeçalho | ntifs.h (inclua Ntdef.h, Ntifs.h, Fltkernel.h) |
Biblioteca | Ntoskrnl.lib |
IRQL | PASSIVE_LEVEL |
Confira também
Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo