Profil de xiong共享空间标题PhotosBlogListes Outils Aide
31 janvier

How to load assembly into shared domain in CLR1

I am not quite sure why we cannot load one assembly into a appDomain if the assembly is alreadly loaded in sharedomain, if the security resctriction in the two appDomain differs. If we do so, we will get the "security permission grant set is incompatible between appdomains" exception.

 

You may ask how to load a customer assembly into shared domain. One customer shows the way:

 

int _tmain(int argc, _TCHAR* argv[])
{

  HRESULT hr = S_OK;
  ICorRuntimeHost *pHost = NULL;
  _ObjectHandle *pObjHandle = NULL;
  IHost *pHostObjInPrimaryAppdomain = NULL;
  IHost *pPR = NULL;
  _AppDomain *pSecDomain = NULL;
  IUnknown     *pAppDomainUnkPrimary = NULL;
  _AppDomain *pPrimaryDomain = NULL;
  _ObjectHandle *pObjHandleInPrimaryAppdomain = NULL;
  _AppDomain *pSecDomainUnk = NULL;
  _Delegate *pDelegate = NULL;

  hr = CoInitialize(NULL);
  if (FAILED(hr))
  {
     return -1;
  }

  // Load the net framework
  hr = CorBindToRuntimeEx (
          NULL,//L"v1.1.4322",
          L"svr",
          STARTUP_LOADER_SAFEMODE | STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN_HOST,
          CLSID_CorRuntimeHost,
          IID_ICorRuntimeHost,
          (LPVOID *)&pHost);

  if (FAILED(hr) || !pHost)
  {
     return -1;
  }
 
  hr = pHost->Start();
  if (FAILED(hr))
  {
     return -1;
  }

  hr = pHost->GetDefaultDomain(&pAppDomainUnkPrimary );
  if ((FAILED(hr))||(!(pAppDomainUnkPrimary)))
  {
    return -1;
  }

  hr = pAppDomainUnkPrimary->QueryInterface(__uuidof(_AppDomain),
                                        (void**) &pPrimaryDomain);
  pAppDomainUnkPrimary->Release();
  if (FAILED(hr) || !pPrimaryDomain)
  {
   
    return -1;
  } 

  hr = pPrimaryDomain->CreateInstance(
    _bstr_t("ManagedHost"),// assembly name
    _bstr_t("ManagedHost.Host"),// type name
    &pObjHandleInPrimaryAppdomain);// returned handle to object

 

Here, the ManagedHost is loaded into the SharedDomain, and the CreateInstance function call also creates a new domain, where the ManagedHost is loaded again.

 

However, in CLR2.0, with the same code, the ManagedHost will not be loaded into ShareadDomain anymore, thus I assume the exception can be avoided.

 

In fact, this topic is far away from the original quesiton the customer asked. The customer wants to challange the following MSDN statements marked red based on the test:

 


"When you use a Load method with a Byte[] parameter to load a common object file format (COFF) image, evidence is combined. Zone, Url and Site are inherited from the calling assembly, and Hash and StrongName are taken from the COFF assembly."

 

http://spaces.msn.com/eparg/blog/cns!59BFC22C0E7E1A76!525.entry

Commentaires (6)

Veuillez patienter...
Le commentaire entré est trop long. Raccourcissez-le.
Vous n'avez rien entré. Réessayez.
Il est actuellement impossible d'ajouter votre commentaire. Réessayez plus tard.
Pour ajouter un commentaire, tu dois avoir l'autorisation de tes parents. Demander l'autorisation
Tes parents ont désactivé les commentaires.
Il est actuellement impossible de supprimer votre commentaire. Réessayez plus tard.
Vous avez dépassé le nombre maximal de commentaires qu'il est possible d'envoyer le même jour. Réessayez dans 24 heures.
Votre compte a pu laisser les commentaires désactivés parce que nos systèmes indiquent que vous risquez d'arroser d'autres utilisateurs de messages. Si vous pensez que votre compte a été désactivé par erreur, contactez l'assistance en ligne de Windows Live.
Effectuez la vérification de sécurité ci-dessous pour finaliser l'envoi de votre commentaire.
Les caractères entrés pour la vérification de sécurité doivent correspondre à ceux de l'image ou du fichier audio.

Pour ajouter un commentaire, connectez-vous avec votre identifiant Windows Live ID (si vous utilisez Messenger ou Xbox LIVE, vous avez un identifiant Windows Live ID). Connectez-vous


Vous n'avez pas d'identifiant Windows Live ID ? Inscrivez-vous

8 Sept.
9 Août
30 Juil.
Aucun noma écrit :
wow gold!All wow gold US Server 24.99$/1000G on sell! Cheap wow gold,wow gold,wow gold,Buy Cheapest/Safe/Fast WoW US EU wow gold Power leveling wow gold from the time you World of Warcraft gold ordered! wow power leveling wow power leveling power leveling wow power leveling wow powerleveling wow power levelingcheap wow power leveling wow power leveling buy wow power leveling wow power leveling buy power leveling wow power leveling cheap power leveling wow power leveling wow power leveling wow power leveling wow powerleveling wow power leveling power leveling wow power leveling wow powerleveling wow power leveling buy rolex cheap rolex wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling -317919954248258
21 Juin
17 Jan.
Bonnie W.a écrit :
看到程序,直接闪人
 
葡萄新年快乐
2 Fév.

Rétroliens

L'URL de rétrolien de ce billet est :
http://eparg.spaces.live.com/blog/cns!59BFC22C0E7E1A76!525.trak
Blogs Web qui font référence à ce billet
  • Aucune