Voltar à lista
Windows Win32Processos & threadskernel32.dll

DuplicateHandle

Duplica um handle, opcionalmente para dentro de outro processo.

Descrição

Mecanismo genérico usado para compartilhar qualquer tipo de handle (arquivo, evento, mutex, processo, etc.) entre processos — o análogo Windows mais próximo de passar descritores de arquivo via SCM_RIGHTS em um socket AF_UNIX no Linux.

Header: handleapi.hDLL: kernel32.dllNative API: NtDuplicateObject

Assinatura

BOOL DuplicateHandle(
    HANDLE hSourceProcessHandle,
    HANDLE hSourceHandle,
    HANDLE hTargetProcessHandle,
    LPHANDLE lpTargetHandle,
    DWORD dwDesiredAccess,
    BOOL bInheritHandle,
    DWORD dwOptions
);

Parâmetros

ParâmetroTipoDescrição
hSourceProcessHandleHANDLEHandle do processo dono do handle de origem.
hSourceHandleHANDLEHandle a duplicar.
hTargetProcessHandleHANDLEHandle do processo que receberá o novo handle.
lpTargetHandleLPHANDLERecebe o novo handle, válido no processo alvo.
dwDesiredAccessDWORDDireitos de acesso do novo handle (ignorado se DUPLICATE_SAME_ACCESS for usado).
bInheritHandleBOOLSe o novo handle é herdável.
dwOptionsDWORDDUPLICATE_CLOSE_SOURCE, DUPLICATE_SAME_ACCESS.

Valor de retorno

Diferente de zero em sucesso; 0 em erro (consulte GetLastError).

Códigos de erro (GetLastError)

ERROR_ACCESS_DENIED(5)
Acesso negado.
ERROR_INVALID_HANDLE(6)
O identificador (handle) informado é inválido.

Relacionadas