Vista の IDebugProgramProvider2.GetProviderProcessData
-
09-06-2019 - |
質問
IE 6/7 用の JavaScript プロファイラーの一部として、作成したカスタム デバッガーを 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;
}
解決
エラーの結果が何であったかを知るのに役立ちます。
考えられる問題は次のとおりです。
許可の取得が拒否された場合は、必要な許可が不足している可能性が高くなります 特権 ACLにあります。新しいものは十分に文書化されていない場合があります。最新のプラットフォーム SDK ヘッダーをチェックして、まだ新しいものが存在するかどうかを確認してください。Vista では、デフォルトの特権が ACL に割り当てられなくなっている可能性があります。
何らかの Not Found タイプのエラーが発生した場合は、32 ビット / 64 ビットの問題である可能性があります。デバッグ API は、Vista 64 の 64 ビット COM でのみ使用できる場合があります。32 ビットと 64 ビットの相互運用は非常に混乱を招く可能性があります。
他のヒント
私はこれらのインターフェイスには詳しくありませんが、Vista で予期せぬ障害が発生した場合は、UAC プロンプトを通過する必要がある場合があります。管理者権限でデバッガーを起動してみましたか?
所属していません StackOverflow