2008-09-13 1 views
0

IE 6/7 용 JavaScript 프로필러의 일부로 Internet Explorer에 만든 사용자 지정 디버거를로드해야했습니다. 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에 내 기본값을 더 이상 할당하지 않을 수도 있습니다.

일종의 발견되지 않은 유형 오류가 발생하면 32 비트/64 비트 문제 일 수 있습니다. debbugging API는 64 비트 COM 64 비트에서만 사용할 수 있습니다. 32 비트/64 비트 상호 운용은 매우 혼란 스러울 수 있습니다.

+0

IE8에서 통합 프로파일 러 지원을 제공하기 때문에이 작업을 중단했습니다. 응답을 응답으로 표시하고 upvote로 지정하겠습니다. – Damian

0

나는 이러한 인터페이스에 익숙하지 않은 해요,하지만 Vista에서 예상치 못한 실패는 UAC 프롬프트 과거의 것을 요구할 수있다. 관리자 권한으로 디버거를 시작하려 했습니까?

+0

예. 시도해 보았습니다. 제안에 감사드립니다. – Damian