0

作为 IE 6/7 的 JavaScript Profiler 的一部分,我需要将我创建的自定义调试器加载到 IE 中。我在 XP 上运行良好,但无法在 Vista 上运行(全文在这里:http ://damianblog.com/2008/09/09/tracejs-v2-rip/ )。

在 Vista 上调用 GetProviderProcessData 失败。有人有什么建议吗?

谢谢,达米安

// 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;
}
4

2 回答 2

1

这将有助于了解错误结果是什么。

我能想到的可能问题:

如果您的权限被拒绝,您很可能在 ACL 中缺少一些必需的权限。新的有时没有很好地记录,请检查最新的 Platform SDK 标头以查看是否还有新的。可能是在 vista 下,权限不再分配给我的默认值给您的 ACL。

如果您收到某种 Not Found 类型错误,则可能是 32 位 / 64 位问题。您的调试 API 可能仅在 vista 64 上的 64 位 COM 下可用。32 位/64 位互操作可能非常混乱。

于 2009-05-30T22:34:12.373 回答
0

我不熟悉这些界面,但 Vista 中的意外故障可能需要通过 UAC 提示。您是否尝试过以管理员权限启动调试器?

于 2008-09-13T10:41:46.867 回答