IHostAssemblyStore::ProvideAssembly-Methode
Ruft einen Verweis auf eine Assembly ab, auf die nicht in der ICLRAssemblyReferenceList verwiesen wird, die von IHostAssemblyManager::GetNonHostStoreAssemblies zurückgegeben wird. Die Common Language Runtime (CLR) ruft ProvideAssembly für jede Assembly auf, die nicht in der Liste enthalten ist.
HRESULT ProvideAssembly (
[in] AssemblyBindInfo *pBindInfo,
[out] UINT64 *pAssemblyId,
[out] UINT64 *pHostContext,
[out] IStream **ppStmAssemblyImage,
[out] IStream **ppStmPDB
);
Parameter
pBindInfo
[in] Ein Zeiger auf eine AssemblyBindInfo-Instanz, mit deren Hilfe der Host bestimmte Bindungsmerkmale ermittelt, wie Vorhandensein oder Nichtvorhandensein einer Versionsrichtlinie und die zu bindende Assembly.pAssemblyId
[out] Ein Zeiger auf einen eindeutigen Bezeichner für die angeforderte Assembly für diesen IStream.pHostContext
[out] Ein Zeiger auf hostspezifische Daten, anhand derer der Beweis für die angeforderte Assembly ohne die Notwendigkeit eines Plattformaufrufs erbracht wird. pHostContext entspricht der HostContext-Eigenschaft der verwalteten Assembly-Klasse.ppStmAssemblyImage
[out] Ein Zeiger auf die Adresse von einem IStream, der das zu ladende PE-Abbild (Portable Executable) enthält, bzw. NULL, wenn die Assembly nicht gefunden werden konnte.ppStmPDB
[out] Ein Zeiger auf die Adresse von einem IStream, der die Programmdebuginformationen (PDB) enthält, bzw. NULL, wenn die PDB-Datei nicht gefunden werden konnte.
Rückgabewert
HRESULT |
Beschreibungen |
---|---|
S_OK |
ProvideAssembly erfolgreich zurückgegeben. |
HOST_E_CLRNOTAVAILABLE |
Die CLR wurde nicht in einen Prozess geladen oder befindet sich in einem Zustand, in dem sie weder verwalteten Code ausführen noch den Aufruf erfolgreich verarbeiten kann. |
HOST_E_TIMEOUT |
Der Aufruf hat das Zeitlimit überschritten. |
HOST_E_NOT_OWNER |
Der Aufrufer ist nicht Besitzer der Sperre. |
HOST_E_ABANDONED |
Ein Ereignis wurde abgebrochen, während ein blockierter Thread oder eine blockierte Fiber auf das Ereignis gewartet hat. |
E_FAIL |
Ein unbekannter, schwerwiegender Fehler ist aufgetreten. Wenn eine Methode E_FAIL zurückgibt, kann die CLR innerhalb des Prozesses nicht mehr verwendet werden. Nachfolgende Aufrufe von Hostmethoden geben HOST_E_CLRNOTAVAILABLE zurück. |
COR_E_FILENOTFOUND (0x80070002) |
Die angeforderte Assembly konnte nicht gefunden werden. |
ERROR_INSUFFICIENT_BUFFER |
Die durch pAssemblyId angegebene Puffergröße reicht nicht aus, um den Bezeichner aufzunehmen, den der Host zurückgeben möchte. |
Hinweise
Der für pAssemblyId zurückgegebene Identitätswert wird vom Host angegeben. Bezeichner müssen für die Lebensdauer eines Prozesses eindeutig sein. Die CLR verwendet diesen Wert als eindeutigen Bezeichner für den Stream. Sie vergleicht die einzelnen Werte mit den Werten für pAssemblyId, die von anderen Aufrufen von ProvideAssembly zurückgegeben wurden. Wenn der Host denselben pAssemblyId-Wert für einen anderen IStream zurückgibt, überprüft die CLR, ob der Inhalt dieses Stream bereits zugeordnet wurde. In diesem Fall lädt die Common Language Runtime die vorhanden Kopie des Bildes, statt den Stream neu zuzuordnen.
Anforderungen
Plattformen: siehe Systemanforderungen für .NET Framework.
Header: MSCorEE.h
Bibliothek: als Ressource in MSCorEE.dll enthalten
.NET Framework-Versionen: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0
Siehe auch
Referenz
ICLRAssemblyReferenceList-Schnittstelle
IHostAssemblyManager-Schnittstelle
IHostAssemblyStore-Schnittstelle
Änderungsprotokoll
Datum |
Versionsgeschichte |
Grund |
---|---|---|
Juni 2010 |
Das HRESULT, wenn die Assembly nicht gefunden werden kann, wurde korrigiert. |
Kundenfeedback. |