質問

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 プロンプトを通過する必要がある場合があります。管理者権限でデバッガーを起動してみましたか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top