Função ZwDuplicateObject (ntifs.h)
A rotina de ZwDuplicateObject
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 de DUPLICATE_CLOSE_SOURCE estiver definido no 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 atributos
[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. |
Valor de retorno
ZwDuplicateObject retornará STATUS_SUCCESS se a chamada for bem-sucedida. Caso contrário, ele retornará um código de status de erro apropriado.
Observações
O identificador de origem é avaliado no contexto do processo de origem especificado. O processo de chamada deve ter acesso PROCESS_DUP_HANDLE ao processo de origem. O identificador duplicado é criado na tabela de identificadores do processo de destino especificado. O processo de chamada deve ter acesso PROCESS_DUP_HANDLE 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
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 versões de uma rotina dos Serviços de 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 de serviços do sistema nativo.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 2000. |
da Plataforma de Destino |
Universal |
cabeçalho | ntifs.h (incluem Ntdef.h, Ntifs.h, Fltkernel.h) |
biblioteca | Ntoskrnl.lib |
IRQL | PASSIVE_LEVEL |
Consulte também
usando versões Nt e Zw das rotinas de serviços do sistema nativo