DOC: Globálnych zhromaždení Cache (GAC) API nie je zdokumentovaná v.NET Framework Software Development Kit (SDK) dokumentácia

Preklady článku Preklady článku
ID článku: 317540
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Rodné číslo používania programového rozhrania (API) ktorý umožní komunikovať s globálnych zhromaždení Cache (GAC) nie sú dokumentovať.NET rámec Software Development Kit (SDK) dokumentáciu.

DALSIE INFORMACIE

UPOZORNENIE: Nepoužívajte tieto rozhrania API v aplikácii vykonávať zhromaždenia viaže alebo testu na prítomnosť zostavy alebo iných čase spustenia, rozvoj, alebo návrhu operácie. Iba nástroje na správu a nastavenie programy musia použite tieto rozhrania API. Ak používate GAC, to priamo vystavuje žiadosť zhromaždenie záväzné zraniteľnosti alebo môže spôsobiť vašej žiadosti pracovať nesprávne na budúce verzie.NET Framework.

GAC ukladá syst?my že sú zdieľané cez všetky aplikácie na počítači. Skutočné ukladací a štruktúre GAC nie je zdokumentovaná a je predmetom zmien v budúcnosti verzie.NET Framework a operačného systému Microsoft Windows systém.

Len podporované metódu, ktorá sa prístup súprav v GAC prostredníctvom rozhrania API, ktoré sú uvedené v tomto článku.

Väčšina aplikácie nemajú používať tieto rozhrania API, pretože je súprava záväzné automaticky vykonáva spoločný jazykový modul runtime. Len vlastnej inštalácie programy alebo nástroje riadenia musí použiť tieto rozhrania API. Inštalátor systému Microsoft Windows má natívnu podporu pre inštaláciu zostáv na GAC.

Pre viac informácie o zostáv a GAC, nájdete.NET Framework SDK.

Použite GAC API v nasledovných prípadoch:
  • Keď nainštalujete zhromaždenie na GAC.
  • Keď odstránite zostavu z GAC.
  • Keď exportujete zhromaždenie z GAC.
  • Keď ste enumerovať zostavy, ktoré sú dostupné v GAC.
POZNÁMKA: CoInitialize(Ex) musí byť zvolané skôr, ako použijete niektorú z funkcií a rozhraní ktoré sú popísané v tejto špecifikácii.

IAssemblyCache rozhranie

The IAssemblyCache rozhranie je najvyššej úrovne rozhranie, ktoré poskytuje prístup k GAC.

Získavať inštancie CreateAssemblyCache API, hovor CreateAssemblyCache API, takto:
STDAPI CreateAssemblyCache(IAssemblyCache **ppAsmCache, DWORD dwReserved); 
Parametre sú definované takto:
  • ppAsmCache - ukazovateľ vrátiť IAssemblyCache
  • dwReserved

FUSION_INSTALL_REFERENCE štruktúra

The FUSION_INSTALL_REFERENCE štruktúra predstavuje odkaz, ktorý je urobiť Ke? aplikácia nainštaloval zostavu v 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;
				
Polia štruktúry sú definované takto:
  • cbSize -Veľkosť štruktúry v bajtoch.
  • dwFlags -Vyhradené, musí byť nula.
  • guidScheme -Subjekt, ktorý pridáva odkaz.
  • szIdentifier -Jedinečný reťazec, ktorý identifikuje aplikácie, ktoré inštalujú zhromaždenie.
  • szNonCannonicalData -Reťazec, ktorý len sa rozumie subjekt, ktorý pridáva odkaz. GAC iba ukladá tento reťazec.
Možné hodnoty pre guidScheme pole môže byť jeden z nasledujúcich:
  • FUSION_REFCOUNT_MSI_GUID -Montáž odkazuje aplikácia, ktorá bola nainštalovať pomocou Inštalátora systému Windows. The szIdentifier pole nastavené na MSI, a szNonCannonicalData je nastavený na Inštalátor systému Windows. Tento systém sa musí používať iba pomocou Inštalátora systému Windows sama.
  • FUSION_REFCOUNT_UNINSTALL_SUBKEY_GUID -Montáž odkazuje aplikácia, ktorá sa zobrazí v Pridať alebo odstrániť programy. The szIdentifier pole je tokenu, používa sa zaregistrovať žiadosť Pridať alebo odstrániť programy.
  • FUSION_REFCOUNT_FILEPATH_GUID -Montáž odkazuje aplikácia, ktorá je zastúpení súboru v systéme súborov. The szIdentifier pole je cesta k súboru.
  • FUSION_REFCOUNT_OPAQUE_STRING_GUID -Montáž odkazuje aplikácia, ktorá je len zastúpení nepriehľadné reťazec. The szIdentifier je to nepriehľadné reťazec. GAC nevykonáva existenciu kontrolu nepriehľadné odkazy keď to odstrániť.

ASSEMBLY_INFO štruktúra

The ASSEMBLY_INFO štruktúra predstavuje informácie o súprave v vyrovnávacej pamäte pre zostavy.

Polia štruktúry sú definované takto:
  • cbAssemblyInfo -Veľkosť štruktúry v bajtoch. Umožňuje prírastky štruktúra v budúcnosti verziu.NET Framework.
  • dwAssemblyFlags -Označuje jeden alebo viac ASSEMBLYINFO_FLAG_ * bity.
  • uliAssemblySizeInKB -Veľkosť súborov, ktoré tvoria zhromaždenie v kilobajtoch (KB).
  • pszCurrentAssemblyPathBuf -Ukazovateľ na medzipamäť reťazca, obsahujúci aktuálnu cestu adresár, ktorý obsahuje súbory, ktoré tvoria zhromaždenie. Cesta musí končiť s nula.
  • cchBuf -Veľkosť medzipamäte, pszCurrentAssemblyPathBug pole poukazuje na.
dwAssemblyFlags môže mať niektorý z nasledujúcich hodnôt:
  • ASSEMBLYINFO_FLAG__INSTALLED -Označuje, že zostava je skutočne nainštalovaný. Vždy nastavená v aktuálnej verzii.NET Framework.
  • ASSEMBLYINFO_FLAG__PAYLOADRESIDENT -Nikdy nastaviť v aktuálnej verzii.NET Rámec.

IAssemblyCache::UninstallAssembly metóda

The IAssemblyCache::UninstallAssembly metóda odstráni odkaz na zhromaždenie z GAC. Ak iné aplikácie držať žiadne iné odkazy na zhromaždenie, súbory, ktoré tvoria zhromaždenie sa odstránia z GAC.
    HRESULT UninstallAssembly(
        [in] DWORD dwFlags,
        [in] LPCWSTR pszAssemblyName, 
        [in] LPCFUSION_INSTALL_REFERENCE pRefData, 
        [out, optional] ULONG *pulDisposition
        );

				
Parametre sú definované takto:
  • dwFlags -Žiadne príznaky definované. Musí byť nula.
  • pszAssemblyName -Názov zostavy. Nula skončil Unicode reťazec.
  • pRefData -Ukazovateľ na FUSION_INSTALL_REFERENCE štruktúra. Hoci sa to neodporúča, tento parameter môžete mať hodnotu null. Zhromaždenie je nainštalovaný bez odkaz na žiadosť alebo všetky existujúce aplikácie odkazy sú preč.
  • pulDisposition -Ukazovateľ na integer, ktorý označuje akciu, ktorá je vykonáva funkciu.
POZNÁMKAAk pulDisposition nie je null, pulDisposition obsahuje jednu z nasledovných hodnôt:
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_UNINSTALLED -Montáž súbory boli odstránené z GAC.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_STILL_IN_USE -Žiadosť je pomocou zhromaždenia. Táto hodnota sa vracia na Systém Microsoft Windows 95 a Microsoft Windows 98.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_ALREADY_UNINSTALLED -Montáž v GAC neexistuje.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_DELETE_PENDING -Nesmú používať.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_HAS_INSTALL_REFERENCES -Montáž nebola odstránená z GAC pretože iného uplatňovanie referenčných existuje.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_REFERENCE_NOT_FOUND -Odkaz, ktorý je zadaný v pRefData nie je nájdený v GAC.
Vrátené hodnoty sú definované takto:
  • S_OK -Montáž je odinštalovaný.
  • S_FALSE -Operácie podarilo, ale zhromaždenie nie bol odstránený z GAC. Dôvodom je popísaná v pulDisposition.

IAssemblyCache::QueryAssemblyInfo metóda

The IAssemblyCache::QueryAssemblyInfo metóda načíta informácie o súprave z GAC.
    HRESULT QueryAssemblyInfo(
        [in] DWORD dwFlags,
        [in] LPCWSTR pszAssemblyName,
        [in, out] ASSEMBLY_INFO *pAsmInfo
        );
				
Parametre sú definované takto:
  • dwFlags -Jeden z QUERYASMINFO_FLAG_VALIDATE alebo QUERYASMINFO_FLAG_GETSIZE:
    • * _VALIDATE -Vykoná overenie súborov v GAC proti zhromaždenie manifest, vrátane overenie hašu a silné meno podpis overenie.
    • * _GETSIZE -Vráti veľkosť všetkých súborov v zhromaždení (stopa disku). Ak tento nie je stanovený, ASSEMBLY_INFO::uliAssemblySizeInKB pole sa neupravuje.
  • pszAssemblyName -Názov zostavy, ?ítaniu.
  • pAsmInfo -Ukazovateľ vrátený ASSEMBLY_INFO štruktúra.

IAssemblyCache::InstallAssembly metóda

The IAssemblyCache::InstallAssembly metóda pridá nové zhromaždenie GAC. Zhromaždenie musia byť pretrvával v súborový systém a je skopírovaný do GAC.
    HRESULT InstallAssembly( // If you use this, fusion will do the streaming & commit.
        [in] DWORD dwFlags,
        [in] LPCWSTR pszManifestFilePath, 
        [in] LPCFUSION_INSTALL_REFERENCE pRefData
        );
				
Parametre sú definované takto:
  • dwFlags -Nanajvýš jeden z bitov IASSEMBLYCACHE_INSTALL_FLAG_ * môžu byť zadané hodnoty:
    • * _REFRESH -Ak zhromaždenie je už nainštalovaný v GAC a v súbore čísla verzií zostavy inštalujú sú rovnaké alebo neskôr, súbory sú nahradené.
    • * _FORCE_REFRESH Súbory existujúcich zhromaždenia prepísané bez ohľadu na ich číslo verzie.
  • pszManifestFilePath -Reťazec smerovali do prepojené dynamické knižnice (DLL), obsahuje zostavy manifestu. Iné zhromaždenia súbory musí sa nachádzať v tej istej adresári ako knižnica DLL, ktorá obsahuje zostavy manifestu.
  • pRefData -Ukazovateľ na FUSION_INSTALL_REFERENCE ktoré označuje žiadosti, v mene ktorého je zhromaždenie nainštalovaný. Hoci sa to neodporúča, tento parameter môže byť null, ale to ponecháva zhromaždenia bez akéhokoľvek uplatňovania odkazu.

IAssemblyName rozhranie

The IAssemblyName rozhranie predstavuje názov zostavy. Názov zostavy zahŕňa vopred skupina dvojíc názov-hodnota. Názov zostavy je popísaná v podrobne v.NET Framework SDK.
[
        local,
        object,
        uuid(CD193BC0-B4BC-11d2-9833-00C04FC31D2E),
        pointer_default(unique)
]
interface IAssemblyName: IUnknown
				
Inštancia IAssemblyName sa získava volaním CreateAssemblyNameObject API:
STDAPI CreateAssemblyNameObject(LPASSEMBLYNAME *ppAssemblyNameObj, LPCWSTR szAssemblyName, DWORD dwFlags, LPVOID pvReserved);
Parametre sú definované takto:
  • ppAssemblyNameObj -Ukazovateľ na miesto pamäte, ktorý prijíma IAssemblyName ukazovateľ, ktorý je vytvorený.
  • szAssemblyName -Reťazec zastúpenie názov zostavy alebo úplnú zhromaždenie odkaz, ktorý sa určí dwFlags. Reprezentácia reťazca môže mať hodnotu null.
  • dwFlags -Nula alebo viac bitov, ktoré sú definované v CREATE_ASM_NAME_OBJ_FLAGS Enumerácia.
  • pvReserved -Musí mať hodnotu null.

CREATE_ASM_NAME_OBJ_FLAGS enumerácie

The CREATE_ASM_NAME_OBJ_FLAGS Enumerácia obsahuje nasledovné hodnoty:
  • CANOF_PARSE_DISPLAY_NAME -Ak táto vlajka je určený, szAssemblyName parameter je názov úplné zostavy a je rozložený na jednotlivec vlastnosti. Ak nie je zadaná vlajkou, szAssemblyName je "Názov" časť názov zostavy.
  • CANOF_SET_DEFAULT_VALUES -Ak táto vlajka je špecifikované, určité vlastnosti, ako napríklad architektúru procesora sú nastavené na predvolené hodnoty.
    typedef enum {
         CANOF_PARSE_DISPLAY_NAME = 0x1,
         CANOF_SET_DEFAULT_VALUES = 0x2
    } CREATE_ASM_NAME_OBJ_FLAGS;
				

ASM_NAME enumerácie

The ASM_NAME Enumerácia vlastnosť ID popisuje platné názvy dvojíc názov-hodnota v názov zostavy. Pozri.NET Framework SDK opis týchto vlastností.
    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 metóda

The IAssemblyName::SetProperty metóda pridá názov-hodnota dvojicu názov zostavy, alebo ak názov-hodnota páru s rovnakým názvom už existuje, upraví alebo odstráni hodnota pár názov-hodnota.
    HRESULT SetProperty(
        [in]    DWORD  PropertyId, 
        [in]    LPVOID pvProperty,
        [in]    DWORD  cbProperty);
				
Parametre sú definované takto:
  • PropertyId -ID, ktorý predstavuje časť mena dvojíc názov-hodnota to je doplniť alebo upraviť. Platné vlastníctva identifikátory sú definované v ASM_NAME Enumerácia.
  • pvProperty -Ukazovateľ na medzipamäť, ktorá obsahuje hodnotu Vlastnosť.
  • cbProperty -Dĺžka pvProperty Tlmivý roztok v bajtoch. Ak cbProperty je nula, dvojíc názov-hodnota sa odstráni z montáže meno.

IAssemblyName::GetProperty metóda

The IAssemblyName::GetProperty metóda načíta hodnoty pár názov-hodnota v zhromaždení názov, ktorý určuje názov.
    HRESULT GetProperty(
        [in]         DWORD    PropertyId, 
        [out]        LPVOID   pvProperty,
        [in, out]    LPDWORD  pcbProperty);
				
Parametre sú definované takto:
  • PropertyId -ID, ktorý predstavuje názov názov-hodnota spárovať ktorých hodnota je byť obnovený. Zadaná vlastnosť ID sú definované v ASM_NAME Enumerácia.
  • pvProperty -Ukazovateľ na medzipamäť, ktorá bude obsahovať hodnotu Vlastnosť.
  • cbProperty -Dĺžka pvProperty Tlmivý roztok, v bajtoch.

IAssemblyName::Finalize metóda

The IAssemblyName::Finalize metóda zamrzne názov zostavy. Dodatočné výzvy na IAssemblyName::SetProperty sú neúspešné po tejto metódy bolo požiadané.
HRESULT Finalize();

IAssemblyName::GetDisplayName metóda

The IAssemblyName::GetDisplayName metóda vracia reťazec zastúpenie názov zostavy.
    HRESULT  GetDisplayName(
        [out]       LPOLESTR  szDisplayName,
        [in, out]   LPDWORD   pccDisplayName,
        [in]        DWORD     dwDisplayFlags);
				
Parametre sú definované takto:
  • szDisplayName -Ukazovateľ na medzipamäť, ktorá má obsahovať zobrazovaný názov. The Zobrazované meno sa vráti v Unicode.
  • pccDisplayName -Veľkosť medzipamäte písmenami (na vstup). Dĺžka vrátený zobrazovaný názov (na návrat).
  • dwDisplayFlags -Jedna alebo viac bitov, ktoré sú definované v ASM_DISPLAY_FLAGS Enumerácia:
    • * _VERSION -Obsahuje číslo verzie ako časť displeja meno.
    • * _CULTURE -Zahŕňa kultúru.
    • * _PUBLIC_KEY_TOKEN -Obsahuje token verejného kľúča.
    • * _PUBLIC_KEY -Obsahuje verejný kľúč.
    • * _CUSTOM -Zahŕňa vlastné časť názov zostavy.
    • * _PROCESSORARCHITECTURE -Zahŕňa architektúru procesora.
    • * _LANGUAGEID -Obsahuje identifikátora jazyka.
    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 metóda

The IAssemblyName::GetName metóda vráti časť názov názov zostavy.
    HRESULT GetName(
        [in, out] LPDWORD lpcwBuffer,
        [out] WCHAR *pwzName);
				
Parametre sú definované takto:
  • lpcwBuffer -Veľkosť pwszName Tlmivý roztok (na vstup). Dĺžka názvu (na návrat).
  • pwszName -Ukazovateľ medzipamäť, ktorá bude obsahovať názov časť názov zostavy.

IAssemblyName::GetVersion metóda

The IAssemblyName::GetVersion metóda vráti verziu časti názov zostavy.
HRESULT GetVersion(
        [out] LPDWORD pdwVersionHi,
        [out] LPDWORD pdwVersionLow);
				
Parametre sú definované takto:
  • pdwVersionHi -Ukazovateľ DWORD, ktorý obsahuje horné 32 bitov číslo verzie.
  • pdwVersionLow -Ukazovateľ DWORD, ktoré obsahujú nižšie 32 bitov číslo verzie.

IAssemblyName::IsEqual metóda

The IAssemblyName::IsEqual Metóda porovnáva názov zostavy na inom zhromaždenia názvy.
    HRESULT IsEqual(
        [in] IAssemblyName *pName,
        [in] DWORD dwCmpFlags);
				
Parametre sú definované takto:
  • pName Názov zostavy, porovnať.
  • dwCmpFlags -Indikuje, ktorá časť názov zostavy použiť v porovnanie.
Hodnoty sú jeden alebo viac bitov, definované v ASM_CMP_FLAGS Enumerácia:
    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;                       
				
Vrátené hodnoty sú:
  • S_OK: -Mená zápas podľa porovnanie kritériá.
  • S_FALSE: -Mená sa nezhodujú.

IAssemblyName::Clone metóda

The IAssemblyName::Clone metóda vytvorí kópiu názov zostavy.
    HRESULT Clone(
        [out] IAssemblyName **pName);
				

IAssemblyEnum rozhranie

The IAssemblyEnum rozhranie enumeruje súprav v GAC.
 [
        local,
        object,
        uuid(21b8916c-f28e-11d2-a473-00c04f8ef448),
        pointer_default(unique)
]
interface IAssemblyEnum : IUnknown
				
Získavať inštancie CreateAssemblyEnum API, hovor CreateAssemblyNameObject API, takto:
STDAPI CreateAssemblyEnum(IAssemblyEnum **pEnum, IUnknown *pUnkReserved, IAssemblyName *pName, DWORD dwFlags, LPVOID pvReserved);
Parametre sú definované takto:
  • pEnum -Ukazovateľ na miesto pamäte, ktorý obsahuje IAssemblyEnum ukazovateľ.
  • pUnkReserved -Musí mať hodnotu null.
  • pName -Montáž názov, ktorý sa používa na filtrovanie enumerácie. Môže byť null sa enumerovať všetky súprav v GAC.
  • dwFlags -Presne jeden bit z ASM_CACHE_FLAGS Enumerácia.
  • pvReserved -Musí mať hodnotu NULL.

ASM_CACHE_FLAGS enumerácie

The ASM_CACHE_FLAGS Enumerácia obsahuje nasledovné hodnoty:
  • ASM_CACHE_ZAP -Enumeruje cache predkompilovaný zostavy pomocou Ngen.exe.
  • ASM_CACHE_GAC -Enumeruje GAC.
  • ASM_CACHE_DOWNLOAD -Enumeruje zostáv, ktoré boli stiahnuté na požiadanie alebo ktoré boli skopírované tieň.
IAssemblyName::GetDisplayName
typedef enum
{
    ASM_CACHE_ZAP            = 0x1,
    ASM_CACHE_GAC            = 0x2,
    ASM_CACHE_DOWNLOAD       = 0x4
} ASM_CACHE_FLAGS;
				

IAssemblyEnum::GetNextAssembly metóda

The IAssemblyEnum::GetNextAssembly metóda enumeruje súprav v GAC.
    HRESULT GetNextAssembly
    (
        [in]                  LPVOID                pvReserved,
        [out]                 IAssemblyName       **ppName,
        [in]                  DWORD                 dwFlags
    );
				
Parametre sú definované takto:
  • pvReserved -Musí mať hodnotu null.
  • ppName -Ukazovateľ na pamäťové miesto, ktoré je získať rozhranie ukazovateľ na názov zostavy ďalšom zhromaždenie, ktorý je vymenované.
  • dwFlags -Musí byť nula.

IInstallReferenceItem rozhranie

The IInstallReferenceItem rozhranie predstavuje odkaz, ktoré bolo nastavené na zhromaždenie v GAC. Inštancie IInstallReferenceIteam vrátia IInstallReferenceEnum rozhranie.
[
        local,
        object,
        uuid(582dac66-e678-449f-aba6-6faaec8a9394),
        pointer_default(unique)
]
interface IInstallReferenceItem : IUnknown
				

IInstallReferenceItem::GetReference metóda

The IInstallReferenceItem::GetReference metóda vracia FUSION_INSTALL_REFERENCE štruktúra.
    HRESULT GetReference
    (
    [out] LPFUSION_INSTALL_REFERENCE *ppRefData,
    [in]  DWORD dwFlags,
    [in]  LPVOID pvReserved
    );
				
Parametre sú definované takto:
  • ppRefData -Ukazovateľ na FUSION_INSTALL_REFERENCE štruktúra. Pamäť je pridelený GetReference metóda a, keď je vyslobodenia IInstallReferenceItem je uvoľnená. Volajúci musíme nedržia odkaz na Tento pufor po IInstallReferenceItem objekt sa uvoľní.
  • dwFlags -Musí byť nula.
  • pvReserved -Musí mať hodnotu null.

IInstallReferenceEnum rozhranie

The IInstallReferenceEnum rozhranie enumeruje všetky odkazy, ktoré sú nastavené na zhromaždenie v GAC.

POZNÁMKA: Odkazy, ktoré patria do zhromaždenia sú zamknuté na zmeny zatiaľ čo tieto odkazy sú boli vymenované.
[
        local,
        object,
        uuid(56b1a988-7c0c-4aa2-8639-c3eb5a90226f),
        pointer_default(unique)
]
interface IInstallReferenceEnum : IUnknown
				
Získavať inštancie CreateInstallReferenceEnum API, hovor CreateInstallReferenceEnum API, takto:
STDAPI CreateInstallReferenceEnum(IInstallReferenceEnum **ppRefEnum, IAssemblyName *pName, DWORD dwFlags, LPVOID pvReserved);
Parametre sú definované takto:
  • ppRefEnum -Ukazovateľ na miesto pamäte, ktorý prijíma IInstallReferenceEnum ukazovateľ.
  • pName Názov zostavy, pre ktoré odkazy sú vymenované.
  • dwFlags -Musí byť nula.
  • pvReserved -Musí mať hodnotu null.

IInstallReferenceEnum::GetNextInstallReferenceItem metóda

IInstallReferenceEnum::GetNextInstallReferenceItem vráti ďalšie referenčné informácie pre zostavu.
    HRESULT GetNextInstallReferenceItem
            (
            [out] IInstallReferenceItem **ppRefItem,
            [in]  DWORD dwFlags,
            [in]  LPVOID pvReserved
            );
				
Parametre sú definované takto:
  • ppRefItem -Ukazovateľ na miesto pamäte, ktorý prijíma IInstallReferenceItem ukazovateľ.
  • dwFlags -Musí byť nula.
  • pvReserved -Musí mať hodnotu null.
Vrátené hodnoty sú:
  • S_OK: -Ďalšiu položku úspešne vráti.
  • S_FALSE: -Žiadne ďalšie položky.

GetCachePath API

The GetCachePath API vráti ukladací GAC.
STDAPI GetCachePath(ASM_CACHE_FLAGS dwCacheFlags, LPWSTR pwzCachePath, PDWORD pcchPath);
Parametre sú definované takto:
  • dwCacheFlags -Presne jednu bitov, definované v ASM_CACHE_FLAGS Enumerácia.
  • pwzCachePath -Ukazovateľ medzipamäť, ktorá je získať cestu GAC ako Unicode na reťazec.
  • pcchPath -Dĺžka pwszCachePath Tlmivý roztok v znaky Unicode.
// ==++==
// 
//   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); ")
				

Vlastnosti

ID článku: 317540 - Posledná kontrola: 8. novembra 2011 - Revízia: 2.0
Kľúčové slová: 
kbbug kbdocerr kbpending kbmt KB317540 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:317540
Upozornenie na neaktuálny obsah článku databázy KB
Tento článok obsahuje informácie o produktoch, pre ktoré spoločnosť Microsoft už neposkytuje technickú podporu. Z tohto dôvodu je tento článok publikovaný ako nezmenený a už nebude aktualizovaný.

Odošlite odozvu

 

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