Partager via


IHostAssemblyStore::ProvideAssembly, méthode

Obtient une référence à un assembly qui n’est pas référencé par le ICLRAssemblyReferenceList retourné par IHostAssemblyManager::GetNonHostStoreAssemblies. Le CLR (Common Language Runtime) appelle ProvideAssembly pour chaque assembly qui n’apparaît pas dans la liste.

Syntaxe

HRESULT ProvideAssembly (  
    [in]  AssemblyBindInfo *pBindInfo,  
    [out] UINT64           *pAssemblyId,  
    [out] UINT64           *pHostContext,  
    [out] IStream          **ppStmAssemblyImage,  
    [out] IStream          **ppStmPDB  
);  

Paramètres

pBindInfo
[in] Pointeur vers une instance de AssemblyBindInfo que l’hôte utilise pour déterminer certaines caractéristiques de liaison, notamment la présence ou l’absence d’une stratégie de gestion de versions ainsi que l’assembly à lier.

pAssemblyId
[out] Pointeur vers un identificateur unique de l’assembly demandé pour ce IStream.

pHostContext
[out] Pointeur vers des données spécifiques à l’hôte, qui permettent d’établir la preuve de l’assembly demandé sans avoir besoin d’un appel de code non managé. pHostContext correspond à la propriété HostContext de la classe managée Assembly.

ppStmAssemblyImage
[out] Pointeur vers l’adresse d’un IStream qui contient l’image PE (Portable Executable) à charger, ou une valeur nulle si l’assembly est introuvable.

ppStmPDB
[out] Pointeur vers l’adresse d’un IStream qui contient les informations PDB (informations de débogage du programme), ou une valeur nulle si le fichier .pdb est introuvable.

Valeur de retour

HRESULT Description
S_OK ProvideAssembly retourné.
HOST_E_CLRNOTAVAILABLE Le CLR n’a pas été chargé dans un processus ou son état ne lui permet pas d’exécuter du code managé ni de traiter l’appel correctement.
HOST_E_TIMEOUT L’appel a expiré.
HOST_E_NOT_OWNER L’appelant n’est pas propriétaire du verrou.
HOST_E_ABANDONED Un événement a été annulé alors qu’un thread ou une fibre bloqué l’attendait.
E_FAIL Une défaillance catastrophique inconnue s’est produite. Quand une méthode retourne E_FAIL, le CLR n’est plus utilisable au sein du processus. Les appels suivants aux méthodes d’hébergement retournent HOST_E_CLRNOTAVAILABLE.
COR_E_FILENOTFOUND (0x80070002) L’assembly demandé est introuvable.
E_NOT_SUFFICIENT_BUFFER La taille de la mémoire tampon spécifiée par pAssemblyId n’est pas suffisante pour contenir l’identificateur que l’hôte souhaite retourner.

Notes

La valeur d’identité retournée pour pAssemblyId est spécifiée par l’hôte. Les identificateurs doivent être uniques pendant la durée de vie d’un processus. Le CLR utilise cette valeur en tant qu’identificateur unique pour le flux. Il vérifie chaque valeur par rapport aux valeurs de pAssemblyId retournées par d’autres appels à ProvideAssembly. Si l’hôte retourne la même valeur pAssemblyId pour un autre IStream, le CLR vérifie si le contenu de ce flux a déjà été mappé. Si tel est le cas, le runtime charge la copie existante de l’image au lieu d’en mapper une nouvelle.

Configuration requise

Plateformes : Consultez Configuration requise.

En-tête : MSCorEE.h

Bibliothèque : incluse en tant que ressource dans MsCorEE.dll

Versions de .NET Framework : Disponible depuis la version 2.0

Voir aussi