What to do if your debug engine doesn't create real processes?

One thing we get a lot of reports about from people writing custom debug engines is if the engine is doing engine launch (using LaunchSuspended like the engine sample does) and the engine doesn't launch a true win32 process, the debugger will fail the launch and not call ResumeProcess. This is a common scenario for simulators or interpreters.

The SDM assumes that if IDebugProcess::GetPhysicalProcessId returns an AD_PROCESS_ID_SYSTEM for the pid and the process is local, it can actually access the real win32 process on the local machine. To make this work in your engine, use AD_PROCESS_ID_GUID instead (https://msdn.microsoft.com/en-us/library/bb145053.aspx)