bool getFrame(unsigned n, StackFrame *f, std::string *errorMessage) { IInterfacePointer<CIDebugClient> client; if (!client.create()) { *errorMessage = "Cannot obtain client."; return false; } IInterfacePointer<CIDebugSymbols> symbols(client.data()); IInterfacePointer<CIDebugControl> control(client.data()); if (!symbols || !control) { *errorMessage = "Cannot obtain required objects."; return false; } return getFrame(symbols.data(), control.data(), n, f, errorMessage); }
HRESULT ExtensionContext::initialize(PULONG Version, PULONG Flags) { if (isInitialized()) return S_OK; *Version = DEBUG_EXTENSION_VERSION(1, 0); *Flags = 0; IInterfacePointer<CIDebugClient> client; if (!client.create()) return client.hr(); m_control.create(client.data()); if (!m_control) return m_control.hr(); return m_control->GetWindbgExtensionApis64(&ExtensionApis); }