2008-09-13 6 views
0

Als Teil eines JavaScript Profiler für IE 6/7 musste ich einen benutzerdefinierten Debugger laden, den ich in IE erstellt habe. Ich habe das funktioniert gut auf XP, aber konnte es nicht funktionieren auf Vista (ganze Geschichte hier: http://damianblog.com/2008/09/09/tracejs-v2-rip/).IDebugProgramProvider2.GetProviderProcessData unter Vista

Der Aufruf von GetProviderProcessData schlägt unter Vista fehl. Hat jemand irgendwelche Vorschläge?

Danke, Damian

// Create the MsProgramProvider 
IDebugProgramProvider2* pIDebugProgramProvider2 = 0; 
HRESULT st = CoCreateInstance(CLSID_MsProgramProvider, 0, CLSCTX_ALL, IID_IDebugProgramProvider2, (void**)&pIDebugProgramProvider2); 
if(st != S_OK) { 
    return st; 
} 

// Get the IDebugProgramNode2 instances running in this process 
AD_PROCESS_ID processID; 
processID.ProcessId.dwProcessId = GetCurrentProcessId(); 
processID.ProcessIdType = AD_PROCESS_ID_SYSTEM; 

CONST_GUID_ARRAY engineFilter; 
engineFilter.dwCount = 0; 

PROVIDER_PROCESS_DATA processData; 

st = pIDebugProgramProvider2->GetProviderProcessData(PFLAG_GET_PROGRAM_NODES|PFLAG_DEBUGGEE, 0, processID, engineFilter, &processData); 
if(st != S_OK) { 
    ShowError(L"GPPD Failed", st); 
    pIDebugProgramProvider2->Release(); 
    return st; 
} 

Antwort

1

Es wäre hilfreich zu wissen, was das Fehlerergebnis war.

Mögliche Probleme, die ich denken kann:

Wenn Ihr immer die Erlaubnis verweigert, Ihre höchstwahrscheinlich einige fehlende requried Privilege in Ihrer ACL. Neue sind manchmal nicht gut dokumentiert, überprüfen Sie die neuesten Platform SDK-Header, um zu sehen, ob neue noch ausstehen. Es kann sein, dass das Privilege unter Vista nicht mehr der Standard für Ihre ACL ist.

Wenn Sie eine Art von Not Found Typ Fehler erhalten, dann kann es 32bit/64bit Problem sein. Ihre debugging-API ist möglicherweise nur unter 64-Bit-COM auf Vista 64 verfügbar. Die 32-Bit/64-Bit-Interoperation kann sehr verwirrend sein.

+0

Ich habe aufgehört zu arbeiten, da IE8 bietet integrierte Profiler-Unterstützung - Ich werde Ihre Antwort als Antwort markieren und upvote. – Damian

0

Ich bin mit diesen Schnittstellen nicht vertraut, aber unerwarteter Fehler in Vista kann sein an einer UAC-Eingabeaufforderung erfordern. Haben Sie versucht, den Debugger mit Administratorrechten zu starten?

+0

Ja, ich habe es versucht - danke für den Vorschlag. – Damian