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: NtDuplicateObjectAssinatura
BOOL DuplicateHandle(
HANDLE hSourceProcessHandle,
HANDLE hSourceHandle,
HANDLE hTargetProcessHandle,
LPHANDLE lpTargetHandle,
DWORD dwDesiredAccess,
BOOL bInheritHandle,
DWORD dwOptions
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| hSourceProcessHandle | HANDLE | Handle do processo dono do handle de origem. |
| hSourceHandle | HANDLE | Handle a duplicar. |
| hTargetProcessHandle | HANDLE | Handle do processo que receberá o novo handle. |
| lpTargetHandle | LPHANDLE | Recebe o novo handle, válido no processo alvo. |
| dwDesiredAccess | DWORD | Direitos de acesso do novo handle (ignorado se DUPLICATE_SAME_ACCESS for usado). |
| bInheritHandle | BOOL | Se o novo handle é herdável. |
| dwOptions | DWORD | DUPLICATE_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.