문제

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 프롬프트를 지나야 할 수도 있습니다.관리자 권한으로 디버거를 시작해 보셨나요?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top