DOC: Global Assembly Cache (GAC) API's zijn niet gedocumenteerd in de..NET Framework Software Development Kit (SDK) documentatie

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 317540
Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

De oorspronkelijke code application programming interfaces (API's) waardoor u interactief werken met de GAC (Global Assembly Cache) niet beschreven in het.NET Framework Software Development Kit (SDK) documentatie.

Meer informatie

WAARSCHUWING: Gebruik geen deze API's in uw toepassing voor het uitvoeren van assembly bindt of voor de aanwezigheid van assembly's of andere runtime, ontwikkeling, testen of design-time bewerkingen. Alleen Systeembeheer en installatie programma's moet Deze API's gebruiken. Als u de GAC, beschrijft dit rechtstreeks uw toepassing assembly minder storingsgevoelig omdat binding of werkt niet goed op uw toepassing mogelijk toekomstige versies van het..NET Framework.

De GAC worden de assembly's opgeslagen die door alle toepassingen op een computer worden gedeeld. De feitelijke opslag locatie en structuur van de GAC is niet gedocumenteerd en kan worden gewijzigd in toekomstige versies van de..NET Framework en de Microsoft Windows-besturingssystemen systeem.

De enige ondersteunde methode voor access assemblages in de GAC is via de API's die worden beschreven in dit artikel.

De meeste toepassingen hebben geen gebruikmaken van deze API's omdat de assembly-binding automatisch uitgevoerd door de common language runtime. Alleen aangepaste setup programma's of hulp programma's voor beheer moeten gebruikmaken van deze API's. Microsoft Windows Installer heeft ingebouwde ondersteuning voor het installeren van assemblages in de GAC.

Voor meer informatie Zie informatie over het samens tellen en de GAC het..NET Framework SDK.

De GAC API gebruiken in de volgende scenario's:
  • Als u een assembly installeert aan de GAC.
  • Wanneer u een assembly verwijderen uit de GAC.
  • Wanneer u een verzameling exporteren vanuit de GAC.
  • Bij het inventariseren van assembly's die beschikbaar zijn in de GAC.
OPMERKING:CoInitialize(Ex)moet worden aangeroepen voordat u een van de functies en interfaces gebruiken die worden beschreven in deze specificatie.

Interface IAssemblyCache

HetIAssemblyCacheinterface is de interface op het hoogste niveau dat toegang tot biedt de GAC.

Om een instantie van deCreateAssemblyCacheAPI-aanroep van deCreateAssemblyCacheAPI als volgt:
STDAPI CreateAssemblyCache(IAssemblyCache **ppAsmCache, DWORD dwReserved); 
De parameters worden als volgt gedefinieerd:
  • ppAsmCache - aanwijzer om terug te kerenIAssemblyCache
  • dwReserved

FUSION_INSTALL_REFERENCE structuur

HetFUSION_INSTALL_REFERENCEstructuur vertegenwoordigt een verwijzing die wordt gemaakt wanneer een toepassing is een assembly geïnstalleerd in de GAC.
    typedef struct _FUSION_INSTALL_REFERENCE_
    {
        DWORD  cbSize;
        DWORD  dwFlags;
        GUID   guidScheme;     // Contains one of the pre-defined GUIDs.
        LPCWSTR szIdentifier;  // Unique identifier for the application that installs this  assembly.
        LPCWSTR szNonCannonicalData;  // Data is description; relevant to the GUID above. 
    } FUSION_INSTALL_REFERENCE, *LPFUSION_INSTALL_REFERENCE;
				
De velden van de structuur worden als volgt gedefinieerd:
  • cbSize-De grootte van de structuur in bytes.
  • dwFlags-Gereserveerd, moet nul zijn.
  • guidScheme-De entiteit die de verwijzing wordt toegevoegd.
  • szIdentifier-Een unieke teken reeks die de toepassing geïnstalleerd identificeert de assembly.
  • szNonCannonicalData-Een teken reeks die alleen is begrepen door de entiteit die de verwijzing. De GAC worden alleen deze teken reeks wordt opgeslagen.
Mogelijke waarden voor deguidSchemeveld kan een van de volgende:
  • FUSION_REFCOUNT_MSI_GUID-De assembly wordt verwezen door een toepassing die is geïnstalleerd met Windows Installer. HetszIdentifierveld is ingesteld opMSI, enszNonCannonicalDatais ingesteld opWindows Installer. Dit schema moet alleen worden gebruikt door Windows Installer zelf.
  • FUSION_REFCOUNT_UNINSTALL_SUBKEY_GUID-De assembly wordt verwezen door een toepassing die wordt weer gegeven inProgramma's toevoegen of verwijderen. HetszIdentifierhet veld is het token dat wordt gebruikt voor het registreren van de toepassingProgramma's toevoegen of verwijderen.
  • FUSION_REFCOUNT_FILEPATH_GUID-De assembly wordt verwezen door een toepassing die is vertegenwoordigd door een bestand in het bestandssysteem. HetszIdentifierhet veld is het pad naar dit bestand.
  • FUSION_REFCOUNT_OPAQUE_STRING_GUID-De assembly wordt verwezen door een toepassing die alleen vertegenwoordigd door een ondoorzichtig teken reeks. HetszIdentifieris dit ondoorzichtige reeks. De GAC voert geen bestaan ondoorzichtige verwijzingen controleren wanneer u deze verwijdert.

ASSEMBLY_INFO structuur

HetASSEMBLY_INFOstructuur geeft informatie over een assembly in de assembly-cache.

De velden van de structuur worden als volgt gedefinieerd:
  • cbAssemblyInfo-De grootte van de structuur in bytes. Toevoegingen aan toestaat de structuur in een toekomstige versie van het..NET Framework.
  • dwAssemblyFlags-Geeft een of meer van deASSEMBLYINFO_FLAG_ *bits.
  • uliAssemblySizeInKB-De grootte van de bestanden waaruit de assembly in kilo bytes (KB).
  • pszCurrentAssemblyPathBuf-Een aanwijzer naar een teken reeks buffer waarin het huidige pad van de de map met de bestanden waaruit de assembly. Het pad moet eindigen. met een nul.
  • cchBuf-De grootte van de buffer die depszCurrentAssemblyPathBugveld verwijst.
dwAssemblyFlagskan een van de volgende waarden hebben:
  • ASSEMBLYINFO_FLAG__INSTALLED-Geeft aan dat de assembly is geïnstalleerd. Altijd instellen in de huidige versie van het..NET Framework.
  • ASSEMBLYINFO_FLAG__PAYLOADRESIDENT-Nooit ingesteld in de huidige versie van het.NETTO Kader.

IAssemblyCache::UninstallAssembly, methode

HetIAssemblyCache::UninstallAssemblymethode verwijdert u een verwijzing naar een assembly van de GAC. Als andere houdt geen andere verwijzingen naar de assembly, de bestanden waaruit u toepassingen de algemene vergadering worden verwijderd uit de GAC.
    HRESULT UninstallAssembly(
        [in] DWORD dwFlags,
        [in] LPCWSTR pszAssemblyName, 
        [in] LPCFUSION_INSTALL_REFERENCE pRefData, 
        [out, optional] ULONG *pulDisposition
        );

				
De parameters worden als volgt gedefinieerd:
  • dwFlags-Geen vlaggen gedefinieerd. Moet nul zijn.
  • pszAssemblyName-De naam van de assembly. Een nul beëindigd Unicode teken reeks.
  • pRefData-Een verwijzing naar eenFUSION_INSTALL_REFERENCEstructuur. Hoewel dit niet wordt aanbevolen, kan deze parameter niet null zijn. De assembly is geïnstalleerd zonder de verwijzing van een toepassing of alle verwijzingen naar bestaande toepassingen zijn verdwenen.
  • pulDisposition-Pointer naar een geheel getal waarmee wordt aangegeven welke actie is door de functie wordt uitgevoerd.
OPMERKING: IndienpulDispositionis niet null is,pulDispositionbevat een van de volgende waarden:
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_UNINSTALLED-De assembly-bestanden hebt verwijderd uit de GAC.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_STILL_IN_USE-Een toepassing gebruikt de assembly. Deze waarde wordt geretourneerd op Microsoft Windows 95 en Microsoft Windows 98.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_ALREADY_UNINSTALLED-De assembly bestaat niet in de GAC.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_DELETE_PENDING-Niet gebruikt.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_HAS_INSTALL_REFERENCES-De assembly is niet verwijderd uit de GAC omdat een andere Er bestaat een toepassing verwijst.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_REFERENCE_NOT_FOUND-De verwijzing die is opgegeven inpRefDatais niet gevonden in de GAC.
De retour waarden zijn als volgt gedefinieerd:
  • S_OK-De assembly is verwijderd.
  • S_FALSE-De bewerking is voltooid, maar de assembly is niet verwijderd uit de GAC. De reden is dat wordt beschreven inpulDisposition.

IAssemblyCache::QueryAssemblyInfo, methode

HetIAssemblyCache::QueryAssemblyInfomethode worden gegevens over een assembly opgehaald uit de GAC.
    HRESULT QueryAssemblyInfo(
        [in] DWORD dwFlags,
        [in] LPCWSTR pszAssemblyName,
        [in, out] ASSEMBLY_INFO *pAsmInfo
        );
				
De parameters worden als volgt gedefinieerd:
  • dwFlags-Een van deQUERYASMINFO_FLAG_VALIDATEofQUERYASMINFO_FLAG_GETSIZE:
    • * _VALIDATE-Validatie van de bestanden in de GAC tegen uitvoert de assemblymanifest, met inbegrip van de hash-verificatie en sterke naam handtekening controle.
    • * _GETSIZE-De grootte van alle bestanden in de assembly (schijffootprint) geretourneerd. Als dit niet is opgegeven, deASSEMBLY_INFO::uliAssemblySizeInKBveld wordt niet gewijzigd.
  • pszAssemblyName-Naam van de assembly die wordt opgevraagd.
  • pAsmInfo-Pointer naar het resultaatASSEMBLY_INFOstructuur.

IAssemblyCache::InstallAssembly, methode

HetIAssemblyCache::InstallAssemblymethode voegt een nieuwe assembly toe aan de GAC. De montage moet bewaard in het bestandssysteem en aan de GAC is gekopieerd.
    HRESULT InstallAssembly( // If you use this, fusion will do the streaming & commit.
        [in] DWORD dwFlags,
        [in] LPCWSTR pszManifestFilePath, 
        [in] LPCFUSION_INSTALL_REFERENCE pRefData
        );
				
De parameters worden als volgt gedefinieerd:
  • dwFlags-Maximaal, één van de bits van deIASSEMBLYCACHE_INSTALL_FLAG_ *waarden kunnen worden opgegeven:
    • * _REFRESH-Als de assemblage in de GAC en het bestand is geïnstalleerd versie nummers van de assembly wordt geïnstalleerd zijn hetzelfde of hoger, het bestanden worden vervangen.
    • * _FORCE_REFRESH-De bestaande assembly-bestanden worden overschreven, onafhankelijk van het versienummer.
  • pszManifestFilePath-Een teken reeks verwijst naar het dynamic-linked library (DLL) die het assembly-manifest bevat. Andere assembly bestanden moeten zich bevinden in dezelfde map als de DLL die de assembly-manifest bevat.
  • pRefData-Een verwijzing naar eenFUSION_INSTALL_REFERENCEdat geeft aan dat de toepassing namens wie de assembly is wordt geïnstalleerd. Hoewel dit niet wordt aanbevolen, kan deze parameter leeg is, maar dit blijft de assembly zonder een toepassing verwijst.

Interface IAssemblyName

HetIAssemblyNameinterface vertegenwoordigt een assembly-naam. Assembly-naam bevat een vooraf vastgesteld samens tel van naam-waardeparen. De assembly-naam wordt beschreven in Details de..NET Framework SDK.
[
        local,
        object,
        uuid(CD193BC0-B4BC-11d2-9833-00C04FC31D2E),
        pointer_default(unique)
]
interface IAssemblyName: IUnknown
				
Een exemplaar vanIAssemblyNamewordt verkregen door het aanroepen van deCreateAssemblyNameObject API:
STDAPI CreateAssemblyNameObject(LPASSEMBLYNAME *ppAssemblyNameObj, LPCWSTR szAssemblyName, DWORD dwFlags, LPVOID pvReserved);
De parameters worden als volgt gedefinieerd:
  • ppAssemblyNameObj-Pointer naar een geheugen locatie die ontvangt deIAssemblyNamede verwijzing die wordt gemaakt.
  • szAssemblyName-Een teken reeks representatie van de assembly-naam of van een volledige assembly-verwijzing die wordt bepaald doordwFlags. De teken reeks representatie kan niet null zijn.
  • dwFlags-Nul of meer van de bits die zijn gedefinieerd in deCREATE_ASM_NAME_OBJ_FLAGSopsomming.
  • pvReserved-Moet niet null zijn.

CREATE_ASM_NAME_OBJ_FLAGS (opsomming)

HetCREATE_ASM_NAME_OBJ_FLAGSopsomming bevat de volgende waarden:
  • CANOF_PARSE_DISPLAY_NAME-Als deze vlag is opgegeven, deszAssemblyNameparameter is een volledige naam en op het individu is geparseerd eigenschappen. Als de vlag niet is opgegeven,szAssemblyNameis het "Naam" gedeelte van de assembly-naam.
  • CANOF_SET_DEFAULT_VALUES-Als deze vlag opgegeven, worden bepaalde eigenschappen, zoals is processor architectuur zijn ingesteld op hun standaardwaarden.
    typedef enum {
         CANOF_PARSE_DISPLAY_NAME = 0x1,
         CANOF_SET_DEFAULT_VALUES = 0x2
    } CREATE_ASM_NAME_OBJ_FLAGS;
				

ASM_NAME (opsomming)

HetASM_NAMEopsomming eigenschaps-ID beschrijving van de geldige namen van de naam / waarde-paren in de assembly-naam. Zie de..NET Framework SDK voor een Beschrijving van deze eigenschappen.
    typedef enum
    {
        ASM_NAME_PUBLIC_KEY = 0,
        ASM_NAME_PUBLIC_KEY_TOKEN,
        ASM_NAME_HASH_VALUE,
        ASM_NAME_NAME,
        ASM_NAME_MAJOR_VERSION,
        ASM_NAME_MINOR_VERSION,
        ASM_NAME_BUILD_NUMBER,
        ASM_NAME_REVISION_NUMBER,
        ASM_NAME_CULTURE,
        ASM_NAME_PROCESSOR_ID_ARRAY,
        ASM_NAME_OSINFO_ARRAY,
        ASM_NAME_HASH_ALGID,
        ASM_NAME_ALIAS,
        ASM_NAME_CODEBASE_URL,
        ASM_NAME_CODEBASE_LASTMOD,
        ASM_NAME_NULL_PUBLIC_KEY,
        ASM_NAME_NULL_PUBLIC_KEY_TOKEN,
        ASM_NAME_CUSTOM,
        ASM_NAME_NULL_CUSTOM,                
        ASM_NAME_MVID,
        ASM_NAME_MAX_PARAMS
    } ASM_NAME;
				

IAssemblyName::SetProperty, methode

HetIAssemblyName::SetPropertymethode wordt een naam / waarde-paar toegevoegd aan de assembly-naam of, indien een naam / waarde-paar met dezelfde naam al bestaat, wijzigt of verwijdert u de de waarde van een naam / waarde-paar.
    HRESULT SetProperty(
        [in]    DWORD  PropertyId, 
        [in]    LPVOID pvProperty,
        [in]    DWORD  cbProperty);
				
De parameters worden als volgt gedefinieerd:
  • Eigenschaps-id-De-ID het naam gedeelte van het naam / waarde-paar vertegenwoordigt dat moet worden toegevoegd of worden gewijzigd is. Geldige eigenschap-id's worden gedefinieerd in deASM_NAMEopsomming.
  • pvProperty-Een verwijzing naar een buffer met de waarde van de eigenschap.
  • cbProperty-De lengte van depvPropertybuffer in bytes. AlscbPropertynul, wordt het paar naam-waarde wordt verwijderd uit de assemblage naam.

IAssemblyName::GetProperty, methode

HetIAssemblyName::GetPropertymethode haalt de waarde van een naam / waarde-paar in de assembly de naam die de naam aangeeft.
    HRESULT GetProperty(
        [in]         DWORD    PropertyId, 
        [out]        LPVOID   pvProperty,
        [in, out]    LPDWORD  pcbProperty);
				
De parameters worden als volgt gedefinieerd:
  • Eigenschaps-id-De ID die de naam vertegenwoordigt van de naam / waarde-paar waarvan de waarde moet worden opgehaald. Opgegeven eigenschaps-id's worden gedefinieerd in deASM_NAMEopsomming.
  • pvProperty-Een verwijzing naar een buffer die is de waarde van de eigenschap.
  • cbProperty-De lengte van depvPropertybuffer in bytes.

IAssemblyName::Finalize, methode

HetIAssemblyName::Finalizemethode worden geblokkeerd assembly-naam. Extra aanroepenIAssemblyName::SetPropertyzijn mislukt nadat deze methode is aangeroepen.
HRESULT Finalize();

IAssemblyName::GetDisplayName, methode

HetIAssemblyName::GetDisplayNamemethode retourneert een teken reeks representatie van de assembly-naam.
    HRESULT  GetDisplayName(
        [out]       LPOLESTR  szDisplayName,
        [in, out]   LPDWORD   pccDisplayName,
        [in]        DWORD     dwDisplayFlags);
				
De parameters worden als volgt gedefinieerd:
  • szDisplayName-Een verwijzing naar een buffer die de weergavenaam bevat. Het weergavenaam wordt geretourneerd in Unicode.
  • pccDisplayName-De grootte van de buffer in tekens (bij invoer). De lengte van de naam weer gegeven (op return).
  • dwDisplayFlags-Een of meer van de bits die zijn gedefinieerd in deASM_DISPLAY_FLAGSopsomming:
    • * _VERSION-Bevat het versienummer als onderdeel van het beeld scherm naam.
    • * _CULTURE-Omvat de cultuur.
    • * _PUBLIC_KEY_TOKEN-Bevat het openbare-sleuteltoken.
    • * _PUBLIC_KEY-De openbare sleutel bevat.
    • * _CUSTOM-Het aangepaste onderdeel van de assembly-naam bevat.
    • * _PROCESSORARCHITECTURE-Bevat de processor architectuur.
    • * _LANGUAGEID-Bevat de taal-id.
    typedef enum
    {
        ASM_DISPLAYF_VERSION    = 0x1,
        ASM_DISPLAYF_CULTURE    = 0x2,
        ASM_DISPLAYF_PUBLIC_KEY_TOKEN = 0x4,
        ASM_DISPLAYF_PUBLIC_KEY = 0x8,
        ASM_DISPLAYF_CUSTOM     = 0x10,
        ASM_DISPLAYF_PROCESSORARCHITECTURE = 0x20,
        ASM_DISPLAYF_LANGUAGEID     = 0x40

    } ASM_DISPLAY_FLAGS;
				

IAssemblyName::GetName, methode

HetIAssemblyName::GetNamemethode resulteert in het gedeelte naam van de assembly-naam.
    HRESULT GetName(
        [in, out] LPDWORD lpcwBuffer,
        [out] WCHAR *pwzName);
				
De parameters worden als volgt gedefinieerd:
  • lpcwBuffer-De grootte van depwszNamebuffer (bij invoer). De lengte van de naam (retour).
  • pwszName-Pointer naar de buffer die de naam bevatten van de assembly-naam.

IAssemblyName::GetVersion, methode

HetIAssemblyName::GetVersionmethode resulteert in het gedeelte versie van de assembly-naam.
HRESULT GetVersion(
        [out] LPDWORD pdwVersionHi,
        [out] LPDWORD pdwVersionLow);
				
De parameters worden als volgt gedefinieerd:
  • pdwVersionHi-Pointer naar een DWORD met de bovenste 32 bits van het het versienummer.
  • pdwVersionLow-Pointer naar een DWORD met de lagere 32 bits van het het versienummer.

IAssemblyName::IsEqual, methode

HetIAssemblyName::IsEqualmethode vergelijkt de assembly-naam naar een andere assembly-namen.
    HRESULT IsEqual(
        [in] IAssemblyName *pName,
        [in] DWORD dwCmpFlags);
				
De parameters worden als volgt gedefinieerd:
  • Pnaam-De assembly-naam om te vergelijken.
  • dwCmpFlags-Geeft aan welk deel van de assembly-naam te gebruiken de vergelijking.
Waarden zijn een of meer van de bits gedefinieerd in deASM_CMP_FLAGSopsomming:
    typedef enum
    {
        ASM_CMPF_NAME            = 0x1,
        ASM_CMPF_MAJOR_VERSION   = 0x2,
        ASM_CMPF_MINOR_VERSION   = 0x4,
        ASM_CMPF_BUILD_NUMBER    = 0x8,
        ASM_CMPF_REVISION_NUMBER = 0x10,
        ASM_CMPF_PUBLIC_KEY_TOKEN = 0x20,
        ASM_CMPF_CULTURE         = 0x40,
        ASM_CMPF_CUSTOM          = 0x80,
        ASM_CMPF_ALL = ASM_CMPF_NAME | ASM_CMPF_MAJOR_VERSION | ASM_CMPF_MINOR_VERSION |
                       ASM_CMPF_REVISION_NUMBER | ASM_CMPF_BUILD_NUMBER |
                       ASM_CMPF_PUBLIC_KEY_TOKEN | ASM_CMPF_CULTURE | ASM_CMPF_CUSTOM,
        // For strongly named assemblies, ASM_CMPF_DEFAULT==ASM_CMPF_ALL.
        // For simply named assemblies, this is also true. However, when
        // performing IAssemblyName::IsEqual, the build number/revision 
        // number will be removed from the comparison.
        ASM_CMPF_DEFAULT = 0x100
    } ASM_CMP_FLAGS;                       
				
Dit zijn de retour waarden:
  • S_OK:-De namen overeenkomen met volgens de vergelijking criteria.
  • S_FALSE:-De namen overeenkomen niet.

IAssemblyName::Clone, methode

HetIAssemblyName::Clonemethode maakt u een kopie van de assembly-naam.
    HRESULT Clone(
        [out] IAssemblyName **pName);
				

Interface IAssemblyEnum

HetIAssemblyEnuminterface inventariseert de assemblages in de GAC.
 [
        local,
        object,
        uuid(21b8916c-f28e-11d2-a473-00c04f8ef448),
        pointer_default(unique)
]
interface IAssemblyEnum : IUnknown
				
Om een instantie van deCreateAssemblyEnumAPI-aanroep van deCreateAssemblyNameObjectAPI als volgt:
STDAPI CreateAssemblyEnum(IAssemblyEnum **pEnum, IUnknown *pUnkReserved, IAssemblyName *pName, DWORD dwFlags, LPVOID pvReserved);
De parameters worden als volgt gedefinieerd:
  • pEnum-Pointer naar een geheugen locatie met deIAssemblyEnumaanwijzer.
  • pUnkReserved-Moet niet null zijn.
  • Pnaam-Een assemblynaam die wordt gebruikt voor het filteren van de opsomming. Dit kan Null inventariseren alle assembly's in de GAC.
  • dwFlags-Exact één bit van deASM_CACHE_FLAGSopsomming.
  • pvReserved-Moet nul zijn.

ASM_CACHE_FLAGS (opsomming)

HetASM_CACHE_FLAGSopsomming bevat de volgende waarden:
  • ASM_CACHE_ZAP-Het inventariseren van de cache van vooraf gecompileerde assembly's via Ngen. exe.
  • ASM_CACHE_GAC-De GAC worden opgesomd.
  • ASM_CACHE_DOWNLOAD-De assembly's die zijn gedownload op afroep inventariseren of die zijn schaduw gekopieerd.
IAssemblyName::GetDisplayName
typedef enum
{
    ASM_CACHE_ZAP            = 0x1,
    ASM_CACHE_GAC            = 0x2,
    ASM_CACHE_DOWNLOAD       = 0x4
} ASM_CACHE_FLAGS;
				

IAssemblyEnum::GetNextAssembly, methode

HetIAssemblyEnum::GetNextAssemblymethode inventariseert de assemblages in de GAC.
    HRESULT GetNextAssembly
    (
        [in]                  LPVOID                pvReserved,
        [out]                 IAssemblyName       **ppName,
        [in]                  DWORD                 dwFlags
    );
				
De parameters worden als volgt gedefinieerd:
  • pvReserved-Moet niet null zijn.
  • ppName-Pointer naar een geheugen locatie die wordt ontvangen van de interface verwijzing naar de assembly-naam van de volgende algemene vergadering die geïnventariseerd.
  • dwFlags-Nul moet zijn.

Interface IInstallReferenceItem

HetIInstallReferenceIteminterface vertegenwoordigt een verwijzing die is ingesteld op een assembly in de GAC. Instanties vanIInstallReferenceIteamworden geretourneerd door deIInstallReferenceEnuminterface.
[
        local,
        object,
        uuid(582dac66-e678-449f-aba6-6faaec8a9394),
        pointer_default(unique)
]
interface IInstallReferenceItem : IUnknown
				

IInstallReferenceItem::GetReference, methode

HetIInstallReferenceItem::GetReferencemethode geeft als resultaat eenFUSION_INSTALL_REFERENCEstructuur.
    HRESULT GetReference
    (
    [out] LPFUSION_INSTALL_REFERENCE *ppRefData,
    [in]  DWORD dwFlags,
    [in]  LPVOID pvReserved
    );
				
De parameters worden als volgt gedefinieerd:
  • ppRefData-Een verwijzing naar eenFUSION_INSTALL_REFERENCEstructuur. Het geheugen wordt toegewezen door deGetReferencemethode en wordt vrij gegeven wanneerIInstallReferenceItemvrij gegeven. Bellers moeten niet bevatten een verwijzing naar deze buffer Nadat deIInstallReferenceItemobject wordt vrij gegeven.
  • dwFlags-Nul moet zijn.
  • pvReserved-Moet niet null zijn.

Interface IInstallReferenceEnum

HetIInstallReferenceEnuminterface somt alle verwijzingen die zijn ingesteld op een assembly in de GAC.

OPMERKING: Verwijzingen die deel uitmaken van de algemene vergadering worden vergrendeld voor wijzigingen terwijl deze verwijzingen worden worden geïnventariseerd.
[
        local,
        object,
        uuid(56b1a988-7c0c-4aa2-8639-c3eb5a90226f),
        pointer_default(unique)
]
interface IInstallReferenceEnum : IUnknown
				
Om een instantie van deCreateInstallReferenceEnumAPI-aanroep van deCreateInstallReferenceEnumAPI als volgt:
STDAPI CreateInstallReferenceEnum(IInstallReferenceEnum **ppRefEnum, IAssemblyName *pName, DWORD dwFlags, LPVOID pvReserved);
De parameters worden als volgt gedefinieerd:
  • ppRefEnum-Een verwijzing naar een geheugen locatie die ontvangt deIInstallReferenceEnumaanwijzer.
  • Pnaam-De assembly-naam waarvoor de verwijzingen zijn geïnventariseerd.
  • dwFlags-Nul moet zijn.
  • pvReserved-Moet niet null zijn.

IInstallReferenceEnum::GetNextInstallReferenceItem, methode

IInstallReferenceEnum::GetNextInstallReferenceItemDeze eigenschap retourneert de volgende naslag informatie voor een assembly.
    HRESULT GetNextInstallReferenceItem
            (
            [out] IInstallReferenceItem **ppRefItem,
            [in]  DWORD dwFlags,
            [in]  LPVOID pvReserved
            );
				
De parameters worden als volgt gedefinieerd:
  • ppRefItem-Pointer naar een geheugen locatie die ontvangt deIInstallReferenceItemaanwijzer.
  • dwFlags-Nul moet zijn.
  • pvReserved-Moet niet null zijn.
Retour waarden zijn als volgt:
  • S_OK:-Het volgende item is geretourneerd.
  • S_FALSE:-Geen items meer.

GetCachePath API

HetGetCachePathAPI retourneert de opslag locatie van de GAC.
STDAPI GetCachePath(ASM_CACHE_FLAGS dwCacheFlags, LPWSTR pwzCachePath, PDWORD pcchPath);
De parameters worden als volgt gedefinieerd:
  • dwCacheFlags-Exact één van de bits die zijn gedefinieerd in deASM_CACHE_FLAGSopsomming.
  • pwzCachePath-Pointer naar een buffer die het pad van de GAC als ontvangen is een Unicode-tekenreeks.
  • pcchPath-Lengte van depwszCachePathbuffer in Unicode-tekens.
// ==++==
// 
//   Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// ==--==
//+---------------------------------------------------------------------------
// 
//  Microsoft Windows
//  File:       fusion.idl
// 
//  Contents:   Fusion Interfaces
// 
//  Classes:
// 
//  Functions:
// 
// 
//----------------------------------------------------------------------------
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// fusion.h")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// Copyright (c) Microsoft Corporation.  All rights reserved.")
cpp_quote("//")
cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF")
cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO")
cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A")
cpp_quote("// PARTICULAR PURPOSE.")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("")
cpp_quote("#ifdef _MSC_VER")
cpp_quote("#pragma comment(lib,\"uuid.lib\")")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("//---------------------------------------------------------------------------=")
cpp_quote("// Fusion Interfaces.")
cpp_quote("")

import "objidl.idl";

cpp_quote("#ifdef _MSC_VER")
cpp_quote("#pragma once")
cpp_quote("#endif")

interface IAssemblyCache;
interface IAssemblyCacheItem;
interface IAssemblyName;
interface IAssemblyEnum;


typedef enum
{
    ASM_CACHE_ZAP            = 0x1,
    ASM_CACHE_GAC            = 0x2,
    ASM_CACHE_DOWNLOAD       = 0x4
} ASM_CACHE_FLAGS;

/////////////////////////////////////////////////////////////////////////////// 
// 
// IAssemblyCache
// 
/////////////////////////////////////////////////////////////////////////////// 

[
        local,
        object,
        uuid(e707dcde-d1cd-11d2-bab9-00c04f8eceae),
        pointer_default(unique)
]
interface IAssemblyCache : IUnknown
{
    cpp_quote("// {8cedc215-ac4b-488b-93c0-a50a49cb2fb8}")
    cpp_quote("DEFINE_GUID(FUSION_REFCOUNT_UNINSTALL_SUBKEY_GUID, 0x8cedc215, 0xac4b, 0x488b, 0x93, 0xc0, _
0xa5, 0x0a, 0x49, 0xcb, 0x2f, 0xb8);")
    cpp_quote("")
    cpp_quote("// {b02f9d65-fb77-4f7a-afa5-b391309f11c9}")
    cpp_quote("DEFINE_GUID(FUSION_REFCOUNT_FILEPATH_GUID, 0xb02f9d65, 0xfb77, 0x4f7a, 0xaf, 0xa5, 0xb3, 0x91, _
0x30, 0x9f, 0x11, 0xc9);")
    cpp_quote("")
    cpp_quote("// {2ec93463-b0c3-45e1-8364-327e96aea856}")
    cpp_quote("DEFINE_GUID(FUSION_REFCOUNT_OPAQUE_STRING_GUID, 0x2ec93463, 0xb0c3, 0x45e1, 0x83, 0x64, 0x32, _
0x7e, 0x96, 0xae, 0xa8, 0x56);")

    cpp_quote(" // {25df0fc1-7f97-4070-add7-4b13bbfd7cb8} // this GUID cannot be used for installing into GAC.")
    cpp_quote("DEFINE_GUID(FUSION_REFCOUNT_MSI_GUID,  0x25df0fc1, 0x7f97, 0x4070, 0xad, 0xd7, 0x4b, 0x13, 0xbb, 0xfd, _
0x7c, 0xb8); ")


    typedef struct _FUSION_INSTALL_REFERENCE_
    {
        DWORD  cbSize;
        DWORD  dwFlags;
        GUID   guidScheme; // contains one of the pre-defined guids.
        LPCWSTR szIdentifier;  // unique identifier for app installing this  assembly.
        LPCWSTR szNonCannonicalData;  // data is description; relevent to the guid above 
    } FUSION_INSTALL_REFERENCE, *LPFUSION_INSTALL_REFERENCE;

    typedef const FUSION_INSTALL_REFERENCE  *LPCFUSION_INSTALL_REFERENCE;


    typedef struct _ASSEMBLY_INFO
    {
        ULONG cbAssemblyInfo; // size of this structure for future expansion
        DWORD dwAssemblyFlags;
        ULARGE_INTEGER uliAssemblySizeInKB;
        LPWSTR pszCurrentAssemblyPathBuf;
        ULONG   cchBuf; // size of path buf.
    } ASSEMBLY_INFO;

    cpp_quote("#define IASSEMBLYCACHE_INSTALL_FLAG_REFRESH       (0x00000001)")
    cpp_quote("#define IASSEMBLYCACHE_INSTALL_FLAG_FORCE_REFRESH (0x00000002)")

    cpp_quote("#define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_UNINSTALLED (1)")
    cpp_quote("#define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_STILL_IN_USE (2)")
    cpp_quote("#define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_ALREADY_UNINSTALLED (3)")
    cpp_quote("#define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_DELETE_PENDING (4)")
    cpp_quote("#define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_HAS_INSTALL_REFERENCES (5)")
    cpp_quote("#define IASSEMBLYCACHE_UNINSTALL_DISPOSITION_REFERENCE_NOT_FOUND (6)")

    cpp_quote("#define QUERYASMINFO_FLAG_VALIDATE        (0x00000001)")
    cpp_quote("#define QUERYASMINFO_FLAG_GETSIZE         (0x00000002)")

    // these flags are for dwAssemblyFlags field in struct _ASSEMBLY_INFO  
    cpp_quote("#define ASSEMBLYINFO_FLAG_INSTALLED       (0x00000001)")
    cpp_quote("#define ASSEMBLYINFO_FLAG_PAYLOADRESIDENT (0x00000002)")

    HRESULT UninstallAssembly(
        [in] DWORD dwFlags,
        [in] LPCWSTR pszAssemblyName, 
        [in] LPCFUSION_INSTALL_REFERENCE pRefData, 
        [out, optional] ULONG *pulDisposition
        );
 
    HRESULT QueryAssemblyInfo(
        [in] DWORD dwFlags,
        [in] LPCWSTR pszAssemblyName,
        [in, out] ASSEMBLY_INFO *pAsmInfo
        );
 
    HRESULT CreateAssemblyCacheItem( 
        [in] DWORD dwFlags,
        [in] PVOID pvReserved,
        [out] IAssemblyCacheItem **ppAsmItem,
        [in, optional] LPCWSTR pszAssemblyName  // uncanonicalized, comma separated name=value pairs.
        );
        
    HRESULT CreateAssemblyScavenger
    (
        [out]   IUnknown **ppUnkReserved
    );

    HRESULT InstallAssembly( // if you use this, fusion will do the streaming & commit.
        [in] DWORD dwFlags,
        [in] LPCWSTR pszManifestFilePath, 
        [in] LPCFUSION_INSTALL_REFERENCE pRefData
        );

}


/////////////////////////////////////////////////////////////////////////////// 
// 
// IAssemblyCacheItem
// 
/////////////////////////////////////////////////////////////////////////////// 

[
        local,
        object,
        uuid(9e3aaeb4-d1cd-11d2-bab9-00c04f8eceae),
        pointer_default(unique)
]
interface IAssemblyCacheItem : IUnknown
{
    cpp_quote("#define STREAM_FORMAT_COMPLIB_MODULE    0")
    cpp_quote("#define STREAM_FORMAT_COMPLIB_MANIFEST  1")
    cpp_quote("#define STREAM_FORMAT_WIN32_MODULE      2")
    cpp_quote("#define STREAM_FORMAT_WIN32_MANIFEST    4")
    
    cpp_quote("#define IASSEMBLYCACHEITEM_COMMIT_FLAG_REFRESH       (0x00000001)")
    cpp_quote("#define IASSEMBLYCACHEITEM_COMMIT_FLAG_FORCE_REFRESH (0x00000002)")
    
    cpp_quote("#define IASSEMBLYCACHEITEM_COMMIT_DISPOSITION_INSTALLED (1)") // first time install
    cpp_quote("#define IASSEMBLYCACHEITEM_COMMIT_DISPOSITION_REFRESHED (2)") // overwrite, if existing
    cpp_quote("#define IASSEMBLYCACHEITEM_COMMIT_DISPOSITION_ALREADY_INSTALLED (3)") // existing, 
    

    HRESULT CreateStream(
        [in] DWORD dwFlags,                         // For general API flags
        [in] LPCWSTR pszStreamName,                 // Name of the stream to be passed in
        [in] DWORD dwFormat,                        // format of the file to be streamed in.
        [in] DWORD dwFormatFlags,                   // format-specific flags
        [out] IStream **ppIStream,
        [in, optional] ULARGE_INTEGER *puliMaxSize  // Max size of the Stream.
        );
 
    HRESULT Commit
    (
        [in] DWORD dwFlags, // For general API flags like IASSEMBLYCACHEITEM _COMMIT_FLAG_REFRESH 
        [out, optional] ULONG *pulDisposition
    ); 
 
    HRESULT AbortItem(); // If you have created IAssemblyCacheItem and don't plan to use it, its good idea to call 
    AbortItem before releasing it.

}



/////////////////////////////////////////////////////////////////////////////// 
// 
// IAssemblyName
// 
/////////////////////////////////////////////////////////////////////////////// 

[
        local,
        object,
        uuid(CD193BC0-B4BC-11d2-9833-00C04FC31D2E),
        pointer_default(unique)
]
interface IAssemblyName: IUnknown
{
    typedef [unique] IAssemblyName *LPASSEMBLYNAME;
    
    typedef enum {
         CANOF_PARSE_DISPLAY_NAME = 0x1,
         CANOF_SET_DEFAULT_VALUES = 0x2
    } CREATE_ASM_NAME_OBJ_FLAGS;
    
    typedef enum
    {
        ASM_NAME_PUBLIC_KEY = 0,
        ASM_NAME_PUBLIC_KEY_TOKEN,
        ASM_NAME_HASH_VALUE,
        ASM_NAME_NAME,
        ASM_NAME_MAJOR_VERSION,
        ASM_NAME_MINOR_VERSION,
        ASM_NAME_BUILD_NUMBER,
        ASM_NAME_REVISION_NUMBER,
        ASM_NAME_CULTURE,
        ASM_NAME_PROCESSOR_ID_ARRAY,
        ASM_NAME_OSINFO_ARRAY,
        ASM_NAME_HASH_ALGID,
        ASM_NAME_ALIAS,
        ASM_NAME_CODEBASE_URL,
        ASM_NAME_CODEBASE_LASTMOD,
        ASM_NAME_NULL_PUBLIC_KEY,
        ASM_NAME_NULL_PUBLIC_KEY_TOKEN,
        ASM_NAME_CUSTOM,
        ASM_NAME_NULL_CUSTOM,                
        ASM_NAME_MVID,
        ASM_NAME_MAX_PARAMS
    } ASM_NAME;
    
    typedef enum
    {
        ASM_DISPLAYF_VERSION    = 0x1,
        ASM_DISPLAYF_CULTURE    = 0x2,
        ASM_DISPLAYF_PUBLIC_KEY_TOKEN = 0x4,
        ASM_DISPLAYF_PUBLIC_KEY = 0x8,
        ASM_DISPLAYF_CUSTOM     = 0x10,
        ASM_DISPLAYF_PROCESSORARCHITECTURE = 0x20,
        ASM_DISPLAYF_LANGUAGEID     = 0x40

    } ASM_DISPLAY_FLAGS;
    
    typedef enum
    {
        ASM_CMPF_NAME            = 0x1,
        ASM_CMPF_MAJOR_VERSION   = 0x2,
        ASM_CMPF_MINOR_VERSION   = 0x4,
        ASM_CMPF_BUILD_NUMBER    = 0x8,
        ASM_CMPF_REVISION_NUMBER = 0x10,
        ASM_CMPF_PUBLIC_KEY_TOKEN = 0x20,
        ASM_CMPF_CULTURE         = 0x40,
        ASM_CMPF_CUSTOM          = 0x80,
        ASM_CMPF_ALL = ASM_CMPF_NAME | ASM_CMPF_MAJOR_VERSION | ASM_CMPF_MINOR_VERSION |
                       ASM_CMPF_REVISION_NUMBER | ASM_CMPF_BUILD_NUMBER |
                       ASM_CMPF_PUBLIC_KEY_TOKEN | ASM_CMPF_CULTURE | ASM_CMPF_CUSTOM,
        // For strongly named assemblies, ASM_CMPF_DEFAULT==ASM_CMPF_ALL.
        // For simply named assemblies, this is also true, however, when
        // performing IAssemblyName::IsEqual, the build number/revision 
        // number will be removed from the comparision.
        ASM_CMPF_DEFAULT = 0x100
    } ASM_CMP_FLAGS;                       

    HRESULT SetProperty(
        [in]    DWORD  PropertyId, 
        [in]    LPVOID pvProperty,
        [in]    DWORD  cbProperty);

    HRESULT GetProperty(
        [in]         DWORD    PropertyId, 
        [out]        LPVOID   pvProperty,
        [in, out]    LPDWORD  pcbProperty);

    HRESULT Finalize();

    HRESULT  GetDisplayName(
        [out]       LPOLESTR  szDisplayName,
        [in, out]   LPDWORD   pccDisplayName,
        [in]        DWORD     dwDisplayFlags);

    HRESULT BindToObject(
        [in]      REFIID               refIID,
        [in]      IUnknown            *pUnkSink, 
        [in]      IUnknown            *pUnkContext,
        [in]      LPCOLESTR            szCodeBase,
        [in]      LONGLONG             llFlags,
        [in]      LPVOID               pvReserved,
        [in]      DWORD                cbReserved,
        [out]     LPVOID               *ppv);


    HRESULT GetName(
        [in, out] LPDWORD lpcwBuffer,
        [out] WCHAR *pwzName);
        
    HRESULT GetVersion(
        [out] LPDWORD pdwVersionHi,
        [out] LPDWORD pdwVersionLow);

    HRESULT IsEqual(
        [in] IAssemblyName *pName,
        [in] DWORD dwCmpFlags);
        
    HRESULT Clone(
        [out] IAssemblyName **pName);
        

}

/////////////////////////////////////////////////////////////////////////////// 
// 
// IAssemblyEnum
// 
/////////////////////////////////////////////////////////////////////////////// 
[
        local,
        object,
        uuid(21b8916c-f28e-11d2-a473-00c04f8ef448),
        pointer_default(unique)
]
interface IAssemblyEnum : IUnknown
{

    HRESULT GetNextAssembly
    (
        [in]                  LPVOID                pvReserved,
        [out]                 IAssemblyName       **ppName,
        [in]                  DWORD                 dwFlags
    );

    HRESULT Reset(void);

    HRESULT Clone 
    (
        [out] IAssemblyEnum **ppEnum
    );
    
}


/////////////////////////////////////////////////////////////////////////////// 
// 
// IInstallReferenceItem
// 
/////////////////////////////////////////////////////////////////////////////// 

[
        local,
        object,
        uuid(582dac66-e678-449f-aba6-6faaec8a9394),
        pointer_default(unique)
]
interface IInstallReferenceItem : IUnknown
{
    HRESULT GetReference
    (
    [out] LPFUSION_INSTALL_REFERENCE *ppRefData,
    [in]  DWORD dwFlags,
    [in]  LPVOID pvReserved
    );
}

/////////////////////////////////////////////////////////////////////////////// 
// 
// IInstallReferenceEnum
// 
/////////////////////////////////////////////////////////////////////////////// 

[
        local,
        object,
        uuid(56b1a988-7c0c-4aa2-8639-c3eb5a90226f),
        pointer_default(unique)
]
interface IInstallReferenceEnum : IUnknown
{
    HRESULT GetNextInstallReferenceItem
            (
            [out] IInstallReferenceItem **ppRefItem,
            [in]  DWORD dwFlags,
            [in]  LPVOID pvReserved
            );
}

#pragma midl_echo("STDAPI CreateInstallReferenceEnum(IInstallReferenceEnum **ppRefEnum, IAssemblyName *pName, DWORD dwFlags, _
LPVOID pvReserved);      ")
#pragma midl_echo("STDAPI CreateAssemblyEnum(IAssemblyEnum **pEnum, IUnknown *pUnkReserved, IAssemblyName *pName, DWORD dwFlags, _
LPVOID pvReserved);      ") 
#pragma midl_echo("STDAPI CreateAssemblyNameObject(LPASSEMBLYNAME *ppAssemblyNameObj, LPCWSTR szAssemblyName, DWORD dwFlags, _
LPVOID pvReserved);             ")
#pragma midl_echo("STDAPI CreateAssemblyCache(IAssemblyCache **ppAsmCache, DWORD dwReserved); ")
#pragma midl_echo("STDAPI GetCachePath(ASM_CACHE_FLAGS dwCacheFlags, LPWSTR pwzCachePath, PDWORD pcchPath); ")
				

Eigenschappen

Artikel ID: 317540 - Laatste beoordeling: zondag 27 februari 2011 - Wijziging: 2.0
Trefwoorden: 
kbbug kbdocerr kbpending kbmt KB317540 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:317540
Vrijwaring inhoud KB-artikelen over niet langer ondersteunde producten
Dit artikel heeft betrekking op producten waarvoor Microsoft geen ondersteuning meer biedt. Daarom wordt dit artikel alleen in de huidige vorm aangeboden en wordt het niet meer bijgewerkt.

Geef ons feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com