2009-08-23 7 views
6

Existe-t-il un moyen d'héberger le runtime .NET CLR et d'enregistrer les fonctions MethodImplOptions.InternalCall? (Ce n'est pas un sujet sur P/Invoke).NET CLR InternalCall

Répondre

3

Le code SSCLI (en particulier clr \ src \ vm \ ecall.cpp) suggère qu'il n'existe aucun moyen d'enregistrer des méthodes InternalCall, car la table cruciale gECClasses est codée en dur.

+0

L'API réelle est-elle différente de la version Shared Source? – jameszhao00

+0

Ils sont sûrs, mais comment? .. Je ne peux que suggérer allumer votre IDA et - les symboles publics dans une main, le code SSCLI dans l'autre - plongée dans 'mscorwks.dll». –

+0

J'ai vu un certain nombre de personnes poser cette question sur les forums - soit ils veulent appeler quelque chose dans une DLL C++ et pensent que cela pourrait être le moyen de le faire, soit ils ne disent jamais ce qu'ils veulent faire. La réponse de toute façon est "Non". Par intérêt, pourquoi voulez-vous faire cela? –

0

IMetaDataImport est votre meilleur pari, mais ne peut pas vraiment se porter garant de cela. Cela semble être une tâche spécifique pour C++/CLI.

+0

Bien loin de la marque, -1 –

+0

Qu'est-ce qui est «loin du but» ici? S'il n'y a aucun moyen de faire fonctionner InternalCall en utilisant l'API COM, P/Invoke n'est pas une option, alors C++/CLI est le meilleur (seulement?) Moyen d'être géré-> non géré. – arul

+0

InternalCall est en dessous du niveau de CLI, donc C++/CLI. La question de jameszhao est très spécifique sur ce qu'il veut. –