[StructLayout( LayoutKind.Explicit )]
public struct Union
{
[FieldOffset( 0 )] public EXCEPTION_DEBUG_INFO Exception;
[FieldOffset( 0 )] public CREATE_THREAD_DEBUG_INFO CreateThread;
[FieldOffset( 0 )] public CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
[FieldOffset( 0 )] public EXIT_THREAD_DEBUG_INFO ExitThread;
[FieldOffset( 0 )] public EXIT_PROCESS_DEBUG_INFO ExitProcess;
[FieldOffset( 0 )] public LOAD_DLL_DEBUG_INFO LoadDll;
[FieldOffset( 0 )] public UNLOAD_DLL_DEBUG_INFO UnloadDll;
[FieldOffset( 0 )] public OUTPUT_DEBUG_STRING_INFO DebugString;
[FieldOffset( 0 )] public RIP_INFO RipInfo;
}
[StructLayout( LayoutKind.Sequential )]
public struct DEBUG_EVENT
{
public uint dwDebugEventCode;
public uint dwProcessId;
public uint dwThreadId;
public Union u;
}
EXCEPTION_DEBUG_INFO CREATE_THREAD_DEBUG_INFO CREATE_PROCESS_DEBUG_INFO EXIT_THREAD_DEBUG_INFO EXIT_PROCESS_DEBUG_INFO LOAD_DLL_DEBUG_INFO UNLOAD_DLL_DEBUG_INFO OUTPUT_DEBUG_STRING_INFO RIP_INFO