Windows Win32Processos & threadskernel32.dll
CreateProcessW
Cria um novo processo e sua thread primária, a partir de um executável.
Descrição
Combina em uma única chamada o que no Linux é tipicamente feito com `fork` + `execve`: não há um passo de 'duplicar o processo atual' — CreateProcessW sempre inicia um processo totalmente novo executando o programa indicado, com controle detalhado de herança de handles, ambiente e diretório de trabalho.
Header:
processthreadsapi.hDLL: kernel32.dllNative API: NtCreateUserProcessNota
Equivalente funcional aproximado ao par `fork`+`execve` do Linux, ou mais precisamente a `posix_spawn(3)`.
Assinatura
BOOL CreateProcessW(
LPCWSTR lpApplicationName,
LPWSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCWSTR lpCurrentDirectory,
LPSTARTUPINFOW lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| lpApplicationName | LPCWSTR | Caminho do executável, ou NULL para usar o primeiro token de lpCommandLine. |
| lpCommandLine | LPWSTR | Linha de comando completa (mutável — a função pode modificá-la). |
| lpProcessAttributes | LPSECURITY_ATTRIBUTES | Atributos de segurança do processo, ou NULL. |
| lpThreadAttributes | LPSECURITY_ATTRIBUTES | Atributos de segurança da thread primária, ou NULL. |
| bInheritHandles | BOOL | Se TRUE, handles herdáveis do processo pai são herdados pelo filho. |
| dwCreationFlags | DWORD | CREATE_NEW_CONSOLE, CREATE_SUSPENDED, DETACHED_PROCESS, etc. |
| lpEnvironment | LPVOID | Bloco de ambiente para o novo processo, ou NULL para herdar o do pai. |
| lpCurrentDirectory | LPCWSTR | Diretório de trabalho inicial, ou NULL para herdar o do pai. |
| lpStartupInfo | LPSTARTUPINFOW | Configuração de janela/handles padrão do novo processo. |
| lpProcessInformation | LPPROCESS_INFORMATION | Recebe handles e IDs do novo processo e sua thread primária. |
Valor de retorno
Diferente de zero em sucesso; 0 em erro (consulte GetLastError).
Códigos de erro (GetLastError)
- ERROR_FILE_NOT_FOUND(2)
- O sistema não conseguiu encontrar o arquivo especificado.
- ERROR_ACCESS_DENIED(5)
- Acesso negado.
- ERROR_INVALID_PARAMETER(87)
- Parâmetro incorreto.
Relacionadas
Equivalente em Linux x86_64