proceso de creación suspendido por defecto [cerrado]

Tengo esta función dentro de una dll:

int createChildProcess()
{
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    int res;

    si.cb=sizeof(STARTUPINFO);

    STARTUPINFO* ptr=&si;
    if(!CreateProcess(L"c:\\windows\\notepad.exe", NULL, 0, 0, false, CREATE_NEW_CONSOLE, 0, 0, &si, &pi))
    {
        mylog << "CreateProcess error: " << GetLastError() << std::endl;
        res = 0;
    }
    else
        res = pi.dwProcessId;

    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );

    return res;
}

Y encontré 2 problemas:

1) La primera vez que se llama a la función, devuelva siempre el código de error 87 (el parámetro es incorrecto).

2) La segunda vez, la función funciona, pero crea un proceso secundario en estado suspendido y el uso de la CPU en el proceso padre va al 100%.

Estoy probando con winXP sp3, y mi dll fue compilado en vs 2010.

¿alguna ayuda?

Respuestas a la pregunta(1)

Su respuesta a la pregunta