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에 있습니다.새로운 것들은 때때로 잘 문서화되지 않습니다. 최신 Platform SDK 헤더를 확인하여 아직 남아 있는 새로운 것이 있는지 확인하세요.Vista에서는 더 이상 ACL에 기본 권한이 할당되지 않을 수 있습니다.
찾을 수 없음 유형 오류가 발생하는 경우 32비트/64비트 문제일 수 있습니다.디버깅 API는 Vista 64의 64비트 COM에서만 사용할 수 있습니다.32비트/64비트 상호 운용은 매우 혼란스러울 수 있습니다.
다른 팁
저는 이러한 인터페이스에 익숙하지 않지만 Vista에서 예상치 못한 오류가 발생하면 UAC 프롬프트를 지나야 할 수도 있습니다.관리자 권한으로 디버거를 시작해 보셨나요?
제휴하지 않습니다 StackOverflow