Обычный способ:
Остановка процесса через SuspendThread();
Восстановление ResumeThread();
Т.е перебираешь все потоки процесса и останавливаешь их.
С помощь недокументированных функций, тут просто создаешь прототип функции, а после вызываешь его, восстанавливаешь примерно так же.
typedef LONG (NTAPI *NtSuspendProcess)(IN HANDLE ProcessHandle);
NtSuspendProcess pfnNtSuspendProcess = (NtSuspendProcess)GetProcAddress(GetModuleHandle("ntdll"), "NtSuspendProcess");
HANDLE processHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId));
pfnNtSuspendProcess(processHandle);