2011-12-16 20 views
0

我想從C++中使用.NET調試API。
爲此,我初始化它像這樣(我刪除了一些檢查,以使代碼更緊湊,重點突出):.NET調試API SetManagedHandler返回E_NOINTERFACE

typedef HRESULT (STDAPICALLTYPE *CreateDebuggerFunc)(int debuggerVersion, LPCWSTR szDebuggeeVersion, IUnknown ** ppCordb); 
HMODULE mscoree = LoadLibraryA("mscoree.dll"); 
CreateDebuggerFunc CreateDebugger = (CreateDebuggerFunc)GetProcAddress(mscoree, "CreateDebuggingInterfaceFromVersion"); 
const int iDebuggerVersion = CorDebugVersion_2_0; // if we’re a v2.0 debugger. 
IUnknown* unknown = NULL; 
wchar_t * szEverettVersion = L"v2.0.50727";//v4.0.30319"; 
HRESULT res = CreateDebugger(iDebuggerVersion, szEverettVersion, &unknown); 
res = unknown->QueryInterface(IID_ICorDebug, (void**) &m_core); 
res = m_core->Initialize(); 
NetCallbacks* test = new NetCallbacks(); 
res = m_core->SetManagedHandler(test); 

NetCallbacks類是目前只是它實現ICorDebugManagedCallback和ICorDebugManagedCallback2的空方法僞類。

但由於某種原因,當我調用m_core-> SetManagedHandler時,我得到E_NOINTERFACE。 這怎麼可能?如果我沒有實現所有必要的方法,我將無法創建NetCallbacks的對象。

我在做什麼錯?

回答