IDebugProgramProvider2.GetProviderProcessData в Vista - PullRequest
0 голосов
/ 13 сентября 2008

Как часть JavaScript Profiler для IE 6/7 мне нужно было загрузить собственный отладчик, который я создал в IE. Я получил это работает нормально на XP, но не смог заставить его работать на Vista (полная история здесь: http://damianblog.com/2008/09/09/tracejs-v2-rip/).

Сбой вызова GetProviderProcessData в Vista. У кого-нибудь есть предложения?

Спасибо, Damian

// 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;
}

Ответы [ 2 ]

1 голос
/ 31 мая 2009

Было бы полезно узнать, каков был результат ошибки.

Возможные проблемы, о которых я могу думать:

Если вам отказано в получении разрешения, скорее всего, вам не хватает некоторых запрашиваемых Привилегий в вашем ACL. Новые не всегда хорошо изучены, проверьте последние заголовки Platform SDK, чтобы увидеть, есть ли новые, которые еще не вышли. Возможно, в рамках Vista привилегия больше не присваивается моему списку ACL по умолчанию.

Если вы получаете какую-то ошибку типа Not Found, то это может быть 32-битная / 64-битная проблема. Ваш API отладки может быть доступен только под 64-битным COM на Vista 64. 32-битное / 64-битное взаимодействие может быть очень запутанным.

0 голосов
/ 13 сентября 2008

Я не знаком с этими интерфейсами, но неожиданные сбои в Vista могут потребовать выхода из-под UAC. Вы пытались запустить отладчик с правами администратора?

...