IDebugProgramProvider2.GetProviderProcessData sur Vista
-
09-06-2019 - |
Question
Dans le cadre d'un profileur JavaScript pour IE 6/7, je devais charger un débogueur personnalisé que j'avais créé dans IE.Cela fonctionne bien sous XP, mais je n'arrive pas à le faire fonctionner sous Vista (histoire complète ici : http://damianblog.com/2008/09/09/tracejs-v2-rip/).
L'appel à GetProviderProcessData échoue sur Vista.Quelqu'un a des suggestions ?
Merci, 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;
}
La solution
Il serait utile de savoir quel était le résultat de l'erreur.
Problèmes possibles auxquels je peux penser :
Si votre autorisation est refusée, il est probable que vous manquiez certains éléments requis. Privilège dans votre ACL.Les nouveaux ne sont parfois pas bien documentés, vérifiez les derniers en-têtes du SDK Platform pour voir s'il y en a de nouveaux qui sont encore disponibles.Il se peut que sous Vista, le privilège ne soit plus attribué par défaut à votre ACL.
Si vous obtenez une sorte d’erreur de type Not Found, il peut s’agir d’un problème 32 bits/64 bits.Votre API de débogage ne peut être disponible que sous COM 64 bits sur Vista 64.L'interopérabilité 32 bits/64 bits peut être très déroutante.
Autres conseils
Je ne suis pas familier avec ces interfaces, mais des échecs inattendus dans Vista peuvent nécessiter le dépassement d'une invite UAC.Avez-vous essayé de démarrer le débogueur avec les privilèges d'administrateur ?