Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

DOC: Toàn cầu hội Cache (GẤC) API được không diễn tả trong các.NET Framework phần mềm phát triển Kit (SDK) tài liệu hướng dẫn

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:317540
Khước từ Nội dung trong Cơ sở Kiến thức Không còn được hỗ trợ
Bài viết này nói về các sản phẩm mà Microsoft không còn hỗ trợ nữa. Do đó, bài viết này được cung cấp "nguyên bản" và sẽ không được cập nhật.
TÓM TẮT
Giao diện lập trình ứng dụng bản địa của mã (API) cho phép bạn tương tác với bộ nhớ Cache hội toàn cầu (GẤC) không tài liệu trong các.NET Framework phần mềm phát triển Kit (SDK) tài liệu hướng dẫn.
THÔNG TIN THÊM
THẬN TRỌNG: Không sử dụng các API trong ứng dụng của bạn để thực hiện các lắp ráp liên kết với hoặc để thử nghiệm cho sự hiện diện của hội đồng khác nhau hoặc khác thời gian chạy, phát triển, hoặc thiết kế-thời gian hoạt động. Chỉ có công cụ quản trị và thiết lập các chương trình phải sử dụng các API. Nếu bạn sử dụng GẤC, điều này trực tiếp cho thấy nhiều ứng dụng của bạn để lắp ráp ràng buộc mong manh hoặc có thể làm cho ứng dụng của bạn để làm việc không đúng trên Phiên bản tương lai của các.NET Framework.

GẤC lưu các hội đồng khác nhau mà được chia sẻ trên tất cả các ứng dụng trên một máy tính. Thực tế vò trí löu tröõ và cấu trúc của GẤC là không tài liệu và có thể thay đổi trong tương lai các phiên bản của các.NET Framework và điều hành Microsoft Windows hệ thống.

Là phương pháp duy nhất được hỗ trợ để truy cập vào hội đồng khác nhau trong GẤC thông qua các API được diễn tả trong bài viết này.

Hầu hết các các ứng dụng không cần phải sử dụng các API vì hội đồng tính ràng buộc là thực hiện tự động bởi thời gian chạy ngôn ngữ phổ biến. Thiết lập tùy chỉnh chỉ chương trình hoặc công cụ quản lý phải sử dụng các API. Microsoft Windows Installer có hỗ trợ bản xứ để cài đặt các hội đồng khác nhau để GẤC.

Để biết thêm thông tin về hội đồng khác nhau và GẤC, xem các.NET Framework SDK.

Sử dụng API GẤC trong các kịch bản sau đây:
  • Khi bạn cài đặt một hội đồng để GẤC.
  • Khi bạn loại bỏ một hội đồng từ GẤC.
  • Khi bạn xuất khẩu một hội đồng từ GẤC.
  • Khi bạn liệt kê hội đồng có sẵn trong các GẤC.
LƯU Ý: CoInitialize(Ex) phải được gọi là trước khi bạn sử dụng bất kỳ chức năng và giao diện mà được mô tả trong đặc tả này.

Giao diện IAssemblyCache

Các IAssemblyCache giao diện là giao diện cấp cao nhất để truy cập vào các GẤC.

Để có được một thể hiện của các CreateAssemblyCache API, cuộc gọi các CreateAssemblyCache API, như sau:
STDAPI CreateAssemblyCache(IAssemblyCache **ppAsmCache, DWORD dwReserved); 
Các thông số được định nghĩa như sau:
  • ppAsmCache - con trỏ để trở về IAssemblyCache
  • dwReserved

Cấu trúc FUSION_INSTALL_REFERENCE

Các FUSION_INSTALL_REFERENCE cấu trúc đại diện cho một tài liệu tham khảo được thực hiện khi một ứng dụng đã cài đặt một hội đồng trong GẤC.
    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;				
Các lĩnh vực cơ cấu được định nghĩa như sau:
  • cbSize -Kích thước cấu trúc trong byte.
  • dwFlags -Reserved, phải là số không.
  • guidScheme -Các thực thể có thêm tài liệu tham khảo.
  • szIdentifier -Một chuỗi duy nhất để nhận dạng ứng dụng cài đặt Hội đồng.
  • szNonCannonicalData -Một chuỗi mà chỉ là hiểu bởi các thực thể cho biết thêm rằng các tài liệu tham khảo. GẤC chỉ lưu trữ chuỗi này.
Có thể các giá trị cho các guidScheme lĩnh vực có thể là một trong những điều sau đây:
  • FUSION_REFCOUNT_MSI_GUID -Lắp ráp được tham chiếu bởi một ứng dụng đã cài đặt bằng cách sử dụng bộ cài đặt Windows. Các szIdentifier trường được thiết lập để MSI, và szNonCannonicalData được thiết lập để Cài đặt Windows. Chương trình này phải chỉ được sử dụng bởi Windows cài đặt riêng của mình.
  • FUSION_REFCOUNT_UNINSTALL_SUBKEY_GUID -Lắp ráp được tham chiếu bởi một ứng dụng xuất hiện trong Thêm/loại bỏ chương trình. Các szIdentifier lĩnh vực này là mã thông báo được sử dụng để đăng ký ứng dụng với Thêm/loại bỏ chương trình.
  • FUSION_REFCOUNT_FILEPATH_GUID -Lắp ráp được tham chiếu bởi một ứng dụng đó là đại diện bởi một tập tin trong hệ thống tập tin. Các szIdentifier lĩnh vực là đường dẫn đến tệp này.
  • FUSION_REFCOUNT_OPAQUE_STRING_GUID -Lắp ráp được tham chiếu bởi một ứng dụng chỉ đại diện bởi một chuỗi đục. Các szIdentifier Đây có phải là đục chuỗi. GẤC không thực hiện sự tồn tại kiểm tra tài liệu tham khảo đục khi bạn loại bỏ điều này.

Cấu trúc ASSEMBLY_INFO

Các ASSEMBLY_INFO cấu trúc đại diện cho thông tin về lắp ráp một trong các bộ nhớ cache lắp ráp.

Các lĩnh vực cơ cấu được định nghĩa như sau:
  • cbAssemblyInfo -Kích thước cấu trúc trong byte. Giấy phép bổ sung vào các cơ cấu tổ chức phiên bản trong tương lai các.NET Framework.
  • dwAssemblyFlags -Chỉ ra một hoặc nhiều các ASSEMBLYINFO_FLAG_ * bit.
  • uliAssemblySizeInKB -Kích thước tập tin tạo nên hội đồng theo kilobyte (KB).
  • pszCurrentAssemblyPathBuf -Một con trỏ chỉ tới một bộ đệm chuỗi chứa đường dẫn hiện tại của các thư mục có chứa các tập tin tạo nên hội đồng. Đường dẫn phải kết thúc với một số không.
  • cchBuf -Kích thước bộ đệm mà các pszCurrentAssemblyPathBug lĩnh vực chỉ.
dwAssemblyFlags có thể có một trong các giá trị sau:
  • ASSEMBLYINFO_FLAG__INSTALLED -Chỉ ra rằng hội đồng thực sự được cài đặt. Luôn luôn đặt trong phiên bản hiện tại của các.NET Framework.
  • ASSEMBLYINFO_FLAG__PAYLOADRESIDENT -Không bao giờ đặt ở phiên bản hiện tại của các.NET Khuôn khổ.

Phương pháp IAssemblyCache::UninstallAssembly

Các IAssemblyCache::UninstallAssembly phương pháp loại bỏ một tham chiếu đến một hội đồng từ GẤC. Nếu khác các ứng dụng giữ không có khác tham chiếu đến quốc hội, các tập tin tạo nên Hội đồng được rút khỏi GẤC.
    HRESULT UninstallAssembly(        [in] DWORD dwFlags,        [in] LPCWSTR pszAssemblyName,         [in] LPCFUSION_INSTALL_REFERENCE pRefData,         [out, optional] ULONG *pulDisposition        );				
Các thông số được định nghĩa như sau:
  • dwFlags -Không có lá cờ xác định. Phải là số không.
  • pszAssemblyName -Tên của hội đồng. Một số không kết thúc Unicode chuỗi.
  • pRefData -Một con trỏ đến một FUSION_INSTALL_REFERENCE cấu trúc. Mặc dù điều này không nên, tham số này có thể được null. Hội đồng được cài đặt mà không có một tham chiếu ứng dụng, hoặc tất cả hiện có ứng dụng tham khảo đã mất hết.
  • pulDisposition -Con trỏ chỉ tới một số nguyên chỉ ra hành động đó là thực hiện các chức năng.
LƯU Ý: Nếu pulDisposition không phải là null, pulDisposition chi này có một trong các giá trị sau:
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_UNINSTALLED -Các tập tin lắp ráp đã được xoá khỏi GẤC.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_STILL_IN_USE -Một ứng dụng đang sử dụng y Cynulliad. Giá trị này được trả lại vào Microsoft Windows 95 và Microsoft Windows 98.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_ALREADY_UNINSTALLED -Hội đồng không tồn tại trong GẤC.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_DELETE_PENDING -Không được sử dụng.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_HAS_INSTALL_REFERENCES -Hội đồng đã không được gỡ bỏ từ GẤC, bởi vì một ứng dụng tham khảo tồn tại.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_REFERENCE_NOT_FOUND -Tài liệu tham khảo được xác định trong pRefData không tìm thấy trong GẤC.
Giá trị trả lại được định nghĩa như sau:
  • S_OK -Lắp ráp đã được gỡ bỏ cài đặt.
  • S_FALSE -Các hoạt động đã thành công, nhưng hội đồng không được gỡ bỏ từ GẤC. Lý do được mô tả trong pulDisposition.

Phương pháp IAssemblyCache::QueryAssemblyInfo

Các IAssemblyCache::QueryAssemblyInfo phương pháp lấy thông tin về một hội đồng từ GẤC.
    HRESULT QueryAssemblyInfo(        [in] DWORD dwFlags,        [in] LPCWSTR pszAssemblyName,        [in, out] ASSEMBLY_INFO *pAsmInfo        );				
Các thông số được định nghĩa như sau:
  • dwFlags -Một trong QUERYASMINFO_FLAG_VALIDATE hoặc QUERYASMINFO_FLAG_GETSIZE:
    • * _VALIDATE -Thực hiện xác nhận của các tập tin trong GẤC chống lại các hội vận, bao gồm các băm xác minh và mạnh mẽ tên chữ ký xác minh.
    • * _GETSIZE -Trả lại kích thước của tất cả các file trong hội đồng (đĩa dấu chân). Nếu điều này không được chỉ định, các ASSEMBLY_INFO::uliAssemblySizeInKB lĩnh vực không thay đổi.
  • pszAssemblyName -Tên của hội đồng đó truy vấn.
  • pAsmInfo -Con trỏ đến việc quay trở lại ASSEMBLY_INFO cấu trúc.

Phương pháp IAssemblyCache::InstallAssembly

Các IAssemblyCache::InstallAssembly phương pháp thêm một quốc hội mới cho GẤC. Hội đồng phải tiếp tục tồn tại trong hệ thống tập tin và sao chép vào GẤC.
    HRESULT InstallAssembly( // If you use this, fusion will do the streaming & commit.        [in] DWORD dwFlags,        [in] LPCWSTR pszManifestFilePath,         [in] LPCFUSION_INSTALL_REFERENCE pRefData        );				
Các thông số được định nghĩa như sau:
  • dwFlags -Tại hầu hết, là một trong các bit của các IASSEMBLYCACHE_INSTALL_FLAG_ * các giá trị có thể được xác định:
    • * _REFRESH -Nếu hội đồng đã được cài đặt trong GẤC và tập tin các con số phiên bản của hội đồng đang được cài đặt là như nhau hoặc sau này, các tệp được thay thế.
    • * _FORCE_REFRESH -Các tập tin của một hội đồng hiện tại đang ghi đè bất kể số phiên bản của họ.
  • pszManifestFilePath -Một chuỗi trỏ đến các thư viện liên kết động (DLL) mà chứa các thế vận hội. Các tập tin khác lắp ráp phải nằm trong cùng một thư mục như DLL có chứa vận hội.
  • pRefData -Một con trỏ đến một FUSION_INSTALL_REFERENCE mà chỉ ra các ứng dụng trên danh nghĩa mà hội đồng là đang được cài đặt. Mặc dù điều này không nên, tham số này có thể không, nhưng điều này lá hội đồng mà không có bất kỳ tham chiếu ứng dụng.

Giao diện IAssemblyName

Các IAssemblyName giao diện đại diện cho một tên lắp ráp. Tên hội bao gồm định trước bộ là cặp tên giá trị. Tên hội được mô tả trong chi tiết trong các.NET Framework SDK.
[        local,        object,        uuid(CD193BC0-B4BC-11d2-9833-00C04FC31D2E),        pointer_default(unique)]interface IAssemblyName: IUnknown				
Một thể hiện của IAssemblyName thu được bằng cách gọi các CreateAssemblyNameObject API:
STDAPI CreateAssemblyNameObject(LPASSEMBLYNAME *ppAssemblyNameObj, LPCWSTR szAssemblyName, DWORD dwFlags, LPVOID pvReserved);
Các thông số được định nghĩa như sau:
  • ppAssemblyNameObj -Con trỏ tới một vị trí bộ nhớ sẽ nhận được các IAssemblyName con trỏ được tạo ra.
  • szAssemblyName -Một đại diện chuỗi tên hội hoặc của một đầy đủ tham khảo lắp ráp được xác định bởi dwFlags. Đại diện chuỗi có thể được null.
  • dwFlags -Số không hay nhiều của các bit được định nghĩa trong các CREATE_ASM_NAME_OBJ_FLAGS liệt kê.
  • pvReserved -Phải là null.

CREATE_ASM_NAME_OBJ_FLAGS đếm

Các CREATE_ASM_NAME_OBJ_FLAGS liệt kê có chứa các giá trị sau:
  • CANOF_PARSE_DISPLAY_NAME -Nếu lá cờ này được chỉ định, các szAssemblyName tham số là tên đầy đủ lắp ráp và được phân tách cho cá nhân bất động sản. Nếu lá cờ không được chỉ định, szAssemblyName là phần "Tên" tên lắp ráp.
  • CANOF_SET_DEFAULT_VALUES -Nếu lá cờ này là thuộc tính được chỉ định, nhất định, chẳng hạn như kiến trúc bộ xử lý, được đặt về giá trị mặc định của họ.
    typedef enum {         CANOF_PARSE_DISPLAY_NAME = 0x1,         CANOF_SET_DEFAULT_VALUES = 0x2    } CREATE_ASM_NAME_OBJ_FLAGS;				

ASM_NAME đếm

Các ASM_NAME liệt kê tài sản ID mô tả tên hợp lệ của các cặp tên giá trị trong một tên lắp ráp. Xem các.NET Framework SDK cho một mô tả về các đặc tính này.
    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;				

Phương pháp IAssemblyName::SetProperty

Các IAssemblyName::SetProperty phương pháp cho biết thêm một cặp tên giá trị để lắp ráp tên, hoặc, nếu một giá trị tên cặp có cùng tên đã tồn tại, sửa đổi hoặc xóa các giá trị của một cặp tên giá trị.
    HRESULT SetProperty(        [in]    DWORD  PropertyId,         [in]    LPVOID pvProperty,        [in]    DWORD  cbProperty);				
Các thông số được định nghĩa như sau:
  • PropertyId -ID đại diện cho một phần tên của giá trị tên cặp đó là để được thêm vào hoặc được đổi. Bất động sản hợp lệ ID được định nghĩa trong các ASM_NAME liệt kê.
  • pvProperty -Một con trỏ chỉ tới một bộ đệm chứa các giá trị của các bất động sản.
  • cbProperty -Chiều dài của các pvProperty bộ đệm trong byte. Nếu cbProperty là zero, cặp giá trị tên được lấy ra từ hội đồng Tên.

Phương pháp IAssemblyName::GetProperty

Các IAssemblyName::GetProperty phương pháp lấy giá trị của một tên giá trị cặp trong hội đồng tên chỉ định tên.
    HRESULT GetProperty(        [in]         DWORD    PropertyId,         [out]        LPVOID   pvProperty,        [in, out]    LPDWORD  pcbProperty);				
Các thông số được định nghĩa như sau:
  • PropertyId -ID mà đại diện tên giá trị tên cặp mà giá trị là để được lấy. Bất động sản đã chỉ định ID được định nghĩa trong các ASM_NAME liệt kê.
  • pvProperty -Một con trỏ chỉ tới một bộ đệm mà là có chứa các giá trị của các bất động sản.
  • cbProperty -Chiều dài của các pvProperty bộ đệm, tại byte.

Phương pháp IAssemblyName::Finalize

Các IAssemblyName::Finalize phương pháp đóng băng một tên lắp ráp. Thêm các cuộc gọi đến IAssemblyName::SetProperty không thành công sau khi phương pháp này được gọi là.
HRESULT Finalize();

Phương pháp IAssemblyName::GetDisplayName

Các IAssemblyName::GetDisplayName phương pháp trả về chuỗi đại diện cho tên quốc hội.
    HRESULT  GetDisplayName(        [out]       LPOLESTR  szDisplayName,        [in, out]   LPDWORD   pccDisplayName,        [in]        DWORD     dwDisplayFlags);				
Các thông số được định nghĩa như sau:
  • szDisplayName -Một con trỏ chỉ tới một bộ đệm mà là có chứa tên hiển thị. Các tên hiển thị được trả lại trong bảng mã Unicode.
  • pccDisplayName -Kích thước bộ đệm trong ký tự (trên đầu vào). Chiều dài của tên hiển thị trở lại (ngày trở lại).
  • dwDisplayFlags -Một hoặc nhiều của các bit được định nghĩa trong các ASM_DISPLAY_FLAGS liệt kê:
    • * _VERSION -Bao gồm các số phiên bản như một phần của màn hình Tên.
    • * _CULTURE -Bao gồm các nền văn hóa.
    • * _PUBLIC_KEY_TOKEN -Bao gồm mã thông báo quan trọng công cộng.
    • * _PUBLIC_KEY -Bao gồm các khóa công khai.
    • * _CUSTOM -Bao gồm một phần tùy chỉnh tên lắp ráp.
    • * _PROCESSORARCHITECTURE -Bao gồm các kiến trúc bộ xử lý.
    • * _LANGUAGEID -Bao gồm các ngôn ngữ của bạn.
    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;				

Phương pháp IAssemblyName::GetName

Các IAssemblyName::GetName phương pháp trả về phần tên của tên lắp ráp.
    HRESULT GetName(        [in, out] LPDWORD lpcwBuffer,        [out] WCHAR *pwzName);				
Các thông số được định nghĩa như sau:
  • lpcwBuffer -Kích thước của các pwszName bộ đệm (trên đầu vào). Độ dài của tên (ngày trở lại).
  • pwszName -Con trỏ chỉ tới các bộ đệm là có chứa một phần tên của các lắp ráp tên.

Phương pháp IAssemblyName::GetVersion

Các IAssemblyName::GetVersion phương pháp trả về phần Phiên bản của tên lắp ráp.
HRESULT GetVersion(        [out] LPDWORD pdwVersionHi,        [out] LPDWORD pdwVersionLow);				
Các thông số được định nghĩa như sau:
  • pdwVersionHi -Con trỏ đến một DWORD chứa 32 bit trên của các số phiên bản.
  • pdwVersionLow -Con trỏ đến một DWORD chứa 32 bit thấp của các số phiên bản.

Phương pháp IAssemblyName::IsEqual

Các IAssemblyName::IsEqual phương pháp so sánh tên lắp ráp một lắp ráp names.
    HRESULT IsEqual(        [in] IAssemblyName *pName,        [in] DWORD dwCmpFlags);				
Các thông số được định nghĩa như sau:
  • pName -Hội đồng tên để so sánh với.
  • dwCmpFlags -Chỉ ra mà một phần của tên gọi quốc hội để sử dụng trong các so sánh.
Các giá trị là một hay nhiều hơn nữa của các bit định nghĩa trong các ASM_CMP_FLAGS liệt kê:
    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;                       				
Giá trị trả lại là như sau:
  • S_OK: -Các tên phù hợp theo để so sánh tiêu chí.
  • S_FALSE: -Các tên không khớp.

Phương pháp IAssemblyName::Clone

Các IAssemblyName::Clone phương pháp tạo ra một bản sao của tên máy lắp ráp.
    HRESULT Clone(        [out] IAssemblyName **pName);				

Giao diện IAssemblyEnum

Các IAssemblyEnum giao diện liệt kê các hội đồng khác nhau trong GẤC.
 [        local,        object,        uuid(21b8916c-f28e-11d2-a473-00c04f8ef448),        pointer_default(unique)]interface IAssemblyEnum : IUnknown				
Để có được một thể hiện của các CreateAssemblyEnum API, cuộc gọi các CreateAssemblyNameObject API, như sau:
STDAPI CreateAssemblyEnum(IAssemblyEnum **pEnum, IUnknown *pUnkReserved, IAssemblyName *pName, DWORD dwFlags, LPVOID pvReserved);
Các thông số được định nghĩa như sau:
  • pEnum -Con trỏ tới một vị trí bộ nhớ có chứa các IAssemblyEnum con trỏ.
  • pUnkReserved -Phải là null.
  • pName -Lắp ráp tên được sử dụng để lọc đếm. Có thể null liệt kê tất cả các hội đồng khác nhau trong GẤC.
  • dwFlags -Chính xác một chút từ các ASM_CACHE_FLAGS liệt kê.
  • pvReserved -Phải là NULL.

ASM_CACHE_FLAGS đếm

Các ASM_CACHE_FLAGS liệt kê có chứa các giá trị sau:
  • ASM_CACHE_ZAP -Liệt kê bộ nhớ cache của tạo hội đồng khác nhau bằng cách sử dụng Ngen.exe.
  • ASM_CACHE_GAC -Liệt kê GẤC.
  • ASM_CACHE_DOWNLOAD -Liệt kê các hội đồng khác nhau đã được tải về theo yêu cầu hoặc rằng shadow sao chép.
IAssemblyName::GetDisplayName
typedef enum{    ASM_CACHE_ZAP            = 0x1,    ASM_CACHE_GAC            = 0x2,    ASM_CACHE_DOWNLOAD       = 0x4} ASM_CACHE_FLAGS;				

Phương pháp IAssemblyEnum::GetNextAssembly

Các IAssemblyEnum::GetNextAssembly phương pháp liệt kê các hội đồng khác nhau trong GẤC.
    HRESULT GetNextAssembly    (        [in]                  LPVOID                pvReserved,        [out]                 IAssemblyName       **ppName,        [in]                  DWORD                 dwFlags    );				
Các thông số được định nghĩa như sau:
  • pvReserved -Phải là null.
  • ppName -Con trỏ tới một vị trí bộ nhớ là để nhận các giao diện con trỏ chỉ tới tên lắp ráp của hội đồng tiếp theo đó là liệt kê.
  • dwFlags -Phải là số không.

Giao diện IInstallReferenceItem

Các IInstallReferenceItem giao diện đại diện cho một tham chiếu đã được đặt trên một hội đồng trong GẤC. Trường hợp của IInstallReferenceIteam được trả về bởi các IInstallReferenceEnum giao diện.
[        local,        object,        uuid(582dac66-e678-449f-aba6-6faaec8a9394),        pointer_default(unique)]interface IInstallReferenceItem : IUnknown				

Phương pháp IInstallReferenceItem::GetReference

Các IInstallReferenceItem::GetReference phương pháp trả về một FUSION_INSTALL_REFERENCE cấu trúc.
    HRESULT GetReference    (    [out] LPFUSION_INSTALL_REFERENCE *ppRefData,    [in]  DWORD dwFlags,    [in]  LPVOID pvReserved    );				
Các thông số được định nghĩa như sau:
  • ppRefData -Một con trỏ đến một FUSION_INSTALL_REFERENCE cấu trúc. Bộ nhớ được cấp phát bởi các GetReference phương pháp và được giải phóng khi IInstallReferenceItem được phát hành. Người gọi không phải giữ một tham chiếu đến bộ đệm này sau khi các IInstallReferenceItem đối tượng được phát hành.
  • dwFlags -Phải là số không.
  • pvReserved -Phải là null.

Giao diện IInstallReferenceEnum

Các IInstallReferenceEnum giao diện liệt kê tất cả các tài liệu tham khảo được đặt trên một hội đồng trong GẤC.

LƯU Ý: Tham khảo thuộc về hội đồng đang bị khóa để thay đổi trong khi những tài liệu tham khảo được đang được liệt kê.
[        local,        object,        uuid(56b1a988-7c0c-4aa2-8639-c3eb5a90226f),        pointer_default(unique)]interface IInstallReferenceEnum : IUnknown				
Để có được một thể hiện của các CreateInstallReferenceEnum API, cuộc gọi các CreateInstallReferenceEnum API, như sau:
STDAPI CreateInstallReferenceEnum(IInstallReferenceEnum **ppRefEnum, IAssemblyName *pName, DWORD dwFlags, LPVOID pvReserved);
Các thông số được định nghĩa như sau:
  • ppRefEnum -Một con trỏ đến một bộ nhớ vị trí mà nhận được các IInstallReferenceEnum con trỏ.
  • pName -Hội đồng tên mà các tài liệu tham khảo rất liệt kê.
  • dwFlags -Phải là số không.
  • pvReserved -Phải là null.

Phương pháp IInstallReferenceEnum::GetNextInstallReferenceItem

IInstallReferenceEnum::GetNextInstallReferenceItem trở về những thông tin tham khảo tiếp theo cho một hội đồng.
    HRESULT GetNextInstallReferenceItem            (            [out] IInstallReferenceItem **ppRefItem,            [in]  DWORD dwFlags,            [in]  LPVOID pvReserved            );				
Các thông số được định nghĩa như sau:
  • ppRefItem -Con trỏ tới một vị trí bộ nhớ sẽ nhận được các IInstallReferenceItem con trỏ.
  • dwFlags -Phải là số không.
  • pvReserved -Phải là null.
Giá trị trả lại là như sau:
  • S_OK: -Mục kế tiếp trở lại thành công.
  • S_FALSE: -Không có khoản mục hơn.

GetCachePath API

Các GetCachePath API trở về vị trí lưu trữ GẤC.
STDAPI GetCachePath(ASM_CACHE_FLAGS dwCacheFlags, LPWSTR pwzCachePath, PDWORD pcchPath);
Các thông số được định nghĩa như sau:
  • dwCacheFlags -Chính xác là một trong các bit được định nghĩa trong các ASM_CACHE_FLAGS liệt kê.
  • pwzCachePath -Con trỏ chỉ tới một bộ đệm mà là để nhận đường dẫn GẤC như một Unicode chuỗi.
  • pcchPath -Chiều dài của các pwszCachePath bộ đệm, ký tự 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); ")				

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 317540 - Xem lại Lần cuối: 08/27/2011 21:11:00 - Bản sửa đổi: 2.0

  • kbbug kbdocerr kbpending kbmt KB317540 KbMtvi
Phản hồi