extern "C" HRESULT ArchQuery(void) { ULONG targetArchitecture; IMachine* targetMachine = NULL; g_ExtControl->GetExecutingProcessorType(&targetArchitecture); #ifdef SOS_TARGET_AMD64 if(targetArchitecture == IMAGE_FILE_MACHINE_AMD64) { targetMachine = AMD64Machine::GetInstance(); } #endif // SOS_TARGET_AMD64 #ifdef SOS_TARGET_X86 if (targetArchitecture == IMAGE_FILE_MACHINE_I386) { targetMachine = X86Machine::GetInstance(); } #endif // SOS_TARGET_X86 #ifdef SOS_TARGET_ARM if (targetArchitecture == IMAGE_FILE_MACHINE_ARMNT) { targetMachine = ARMMachine::GetInstance(); } #endif // SOS_TARGET_ARM #ifdef SOS_TARGET_ARM64 if (targetArchitecture == IMAGE_FILE_MACHINE_ARM64) { targetMachine = ARM64Machine::GetInstance(); } #endif // SOS_TARGET_ARM64 if (targetMachine == NULL) { g_targetMachine = NULL; ExtErr("SOS does not support the current target architecture.\n"); return E_FAIL; } g_targetMachine = targetMachine; return S_OK; }