0

IE 6/7用のJavaScriptプロファイラーの一部として、作成したカスタムデバッガーを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;
}
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 に答える