#ifndef _WINDOWS_
#include <windows.h>
#endif

// DWORD WINAPI Routine_example(LPVOID param)
/*
    The easiest way to use variables and/or pass arguments to threads is to use
    global variables instead of parameters ;)
*/


HANDLE create_a_fiber(LPFIBER_START_ROUTINE Routine)
{
    return CreateFiber(0, Routine, NULL);
}

HANDLE create_a_thread(LPTHREAD_START_ROUTINE Routine)
{
    return CreateThread(0, 0, Routine, NULL, 0, NULL);
}

BOOL create_a_process_with_name(LPCSTR Command, LPCSTR CurrentDir, LPPROCESS_INFORMATION *Process_Info)
{
    STARTUPINFOA si = {0};
    return CreateProcessA(Command, NULL, NULL, NULL, FALSE, 0, NULL, CurrentDir, &si, Process_Info);
}
BOOL create_a_process_with_command(LPCSTR Command, LPCSTR CurrentDir, LPPROCESS_INFORMATION *Process_Info)
{
    STARTUPINFOA si = {0};
    return CreateProcessA(NULL, Command, NULL, NULL, FALSE, 0, NULL, CurrentDir, &si, Process_Info);
}