作为IE 6/7的JavaScript Profiler的一部分,我需要加载我在IE中创建的自定义调试器。我在XP上运行良好,但无法在Vista上运行(全文:http://damianblog.com/2008/09/09/tracejs-v2-rip/)。
对GetProviderProcessData的调用在Vista上失败。有人有什么建议吗?
谢谢, 达米安
// 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;
}
答案 0 :(得分:1)
了解错误结果会有所帮助。
我能想到的可能问题:
如果您的权限被拒绝,您的ACL很可能会遗漏一些需要Privilege的内容。新的有时候没有很好的说明,检查最新的Platform SDK标头,看看是否还有新的标题。可能是在vista下,Privilege不再为您的ACL分配我的默认值。
如果你得到某种Not Found类型错误,那么它可能是32位/ 64位问题。您的debbugging API可能只能在vista 64上的64位COM下使用.32位/ 64位互操作可能非常混乱。
答案 1 :(得分:0)
我不熟悉这些界面,但Vista中的意外故障可能需要通过UAC提示。您是否尝试使用管理员权限启动调试器?