【问题标题】:IDebugProgramProvider2.GetProviderProcessData on VistaVista 上的 IDebugProgramProvider2.GetProviderProcessData
【发布时间】:2010-09-08 19:02:40
【问题描述】:

作为 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;
}

【问题讨论】:

    标签: c++ debugging internet-explorer windows-vista


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      知道错误结果是什么会有所帮助。

      我能想到的可能问题:

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

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

      【讨论】:

      • 我已经停止了这方面的工作,因为 IE8 提供了集成的分析器支持 - 我会将您的回复标记为答案并支持它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多