2008-09-13 2 views
0

IE 6/7のJavaScriptプロファイラの一環として、IEに作成したカスタムデバッガを読み込む必要がありました。私はこれをXP上でうまく動作させることができましたが、Vista上で動作させることはできませんでした(全文はhttp://damianblog.com/2008/09/09/tracejs-v2-rip/)。IDebugProgramProvider2.GetProviderProcessData on Vista

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

答えて

1

エラーの結果を知るのに役立ちます。私は考えることができる

可能性のある問題:あなたが最も可能性が高いいくつか欠けているあなたの取得の許可が拒否された場合は

は、あなたのACLにPrivilegeをrequried。新しいものはうまく処理されないことがあります。最新のPlatform SDKヘッダーをチェックして、新しいものが残っていないか確認してください。眺望の下では、PrivilegeはあなたのACLに私のデフォルトを割り当てられていないかもしれません。

何らかの種類のNot Foundタイプのエラーが発生した場合、32ビット/ 64ビットの問題が発生する可能性があります。 Debbugging APIは、64ビット版のCOM 64ビット環境でのみ使用できます。32ビット/ 64ビットの相互運用は非常に混乱する可能性があります。

+0

IE8は統合されたプロファイラサポートを提供しているので、私はこの作業を中止しました。私はあなたの回答を回答としてマークし、それをアップアップします。 – Damian

0

私は、これらのインターフェースに慣れていないんだけど、Vistaの予期しない障害は、UACプロンプトを過ぎている必要があります。あなたは管理者権限でデバッガを起動しようとしましたか?

+0

はい、私はそれを試しました - しかし、提案のおかげで。 – Damian