Voltar à lista
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: NtCreateUserProcess

Nota

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âmetroTipoDescrição
lpApplicationNameLPCWSTRCaminho do executável, ou NULL para usar o primeiro token de lpCommandLine.
lpCommandLineLPWSTRLinha de comando completa (mutável — a função pode modificá-la).
lpProcessAttributesLPSECURITY_ATTRIBUTESAtributos de segurança do processo, ou NULL.
lpThreadAttributesLPSECURITY_ATTRIBUTESAtributos de segurança da thread primária, ou NULL.
bInheritHandlesBOOLSe TRUE, handles herdáveis do processo pai são herdados pelo filho.
dwCreationFlagsDWORDCREATE_NEW_CONSOLE, CREATE_SUSPENDED, DETACHED_PROCESS, etc.
lpEnvironmentLPVOIDBloco de ambiente para o novo processo, ou NULL para herdar o do pai.
lpCurrentDirectoryLPCWSTRDiretório de trabalho inicial, ou NULL para herdar o do pai.
lpStartupInfoLPSTARTUPINFOWConfiguração de janela/handles padrão do novo processo.
lpProcessInformationLPPROCESS_INFORMATIONRecebe 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