Partager via


IHostAssemblyStore::ProvideAssembly, méthode

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

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 AssemblyBindInfo que l'hôte utilise pour déterminer certaines caractéristiques de liaison, notamment la présence ou l'absence de stratégie de suivi du versioning et quel assembly lier.

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

  • pHostContext
    [out] Pointeur vers des données spécifiques à l'hôte utilisées pour déterminer la preuve de l'assembly demandé sans nécessiter un appel de code non managé. pHostContext correspond à la propriété HostContext de la classe Assembly managée.

  • ppStmAssemblyImage
    [out] Pointeur vers l'adresse d'un IStream qui contient l'image exécutable portable à charger ou null si l'assembly est introuvable.

  • ppStmPDB
    [out] Pointeur vers l'adresse d'un IStream qui contient les informations de débogage de programme ou null si le fichier .pdb est introuvable.

Valeur de retour

HRESULT

Description

S_OK

ProvideAssembly a été retourné avec succès.

HOST_E_CLRNOTAVAILABLE

Le CLR n'a pas été chargé dans un processus ou le CLR présente un état dans lequel il ne peut pas exécuter de code managé ou traiter l'appel avec succès.

HOST_E_TIMEOUT

L'appel a expiré.

HOST_E_NOT_OWNER

L'appelant ne possède pas le verrou.

HOST_E_ABANDONED

Un événement a été annulé alors qu'un thread bloqué ou une fibre l'attendait.

E_FAIL

Une défaillance grave et inconnue s'est produite. Lorsqu'une méthode retourne E_FAIL, le CLR n'est plus utilisable dans le processus. Les appels suivants aux méthodes d'hébergement retournent HOST_E_CLRNOTAVAILABLE.

COR_E_FILENOTFOUND (0x80070002)

L'assembly demandé n'a pas pu être localisé.

ERROR_INSUFFICIENT_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 veut 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 pour 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, il charge la copie existante de l'image au lieu d'en mapper une nouvelle.

Configuration requise

Plateformes : consultez Configuration requise du .NET Framework.

En-tête : MSCorEE.h

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

Versions du .NET Framework : 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Voir aussi

Référence

ICLRAssemblyReferenceList, interface

IHostAssemblyManager, interface

IHostAssemblyStore, interface

Historique des modifications

Date

Historique

Motif

Juin 2010

A corrigé le HRESULT retourné lorsque l'assembly ne peut pas être localisé.

Commentaires client.