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