أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

٥٩٠٦٤: عدم APIs التخزين المؤقت (GAC) تجميع عمومي لم توثيقها في الوثائق (SDK) من مجموعة أدوات تطوير البرامج .NET Framework

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

317540
إخلاء مسؤولية من محتوى قديم في قاعدة المعارف
عن تقديم الدعم التقني لهاو لذلك تظهر هذه المقالة كما هي و لن يتم تحديثها Microsoft تمت كتابة هذه المقالة بخصوص منتجات توقفت
الموجز
لم يتم توثيقها في تعليمة برمجية أصلية واجهات برمجة التطبيقات (API) التي تتيح لك التفاعل مع ذاكرة التخزين المؤقتة للتجميع العمومي (GAC) في وثائق .NET Framework تطوير مجموعة البرامج (SDK).
معلومات أخرى
تحذير: عدم استخدام واجهات برمجة التطبيقات هذه في التطبيق الخاص بك إلى تنفيذ ضم التجميع أو لاختبار وجود التجميعات أو أخرى وقت التشغيل تطوير أو عمليات وقت التصميم. يجب أن تستخدم برامج الإعداد والأدوات الإدارية فقط واجهات برمجة التطبيقات هذه. إذا كنت تستخدم GAC هذا مباشرة الكشف عن التطبيق الخاص بك إلى fragility ربط التجميع أو قد يؤدي التطبيق للعمل بشكل غير صحيح في الإصدارات المستقبلية من .NET Framework.

يخزن GAC التجميعات المشتركة عبر كافة التطبيقات على جهاز كمبيوتر. موقع التخزين الفعلية وبنية GAC لم يتم توثيقها ثم هي عرضة للتغيير في الإصدارات المستقبلية من .NET Framework "و" نظام التشغيل Microsoft Windows.

الطريقة الوحيدة المعتمدة للتجميعات الوصول في GAC من خلال APIs التي تم توثيقها في هذه المقالة.

لا يلزم استخدام واجهات برمجة التطبيقات هذه لأنه يتم تنفيذ التجميع الربط تلقائياً قبل وقت تشغيل اللغة العامة معظم التطبيقات. يجب أن تستخدم برامج الإعداد المخصص أو أدوات إدارة واجهات برمجة التطبيقات هذه. Microsoft Windows Installer يحتوي دعم أصلي لتثبيت التجميعات إلى GAC.

لمزيد من المعلومات حول التجميعات GAC راجع SDK .NET Framework.

استخدام API GAC في السيناريوهات التالية:
  • عند تثبيت تجميع إلى GAC.
  • عند إزالة تجميع من GAC.
  • عند تصدير تجميع من GAC.
  • عند تعداد التجميعات التي تتوفر في GAC.
ملاحظة: يجب استدعاء CoInitialize(Ex) قبل استخدام أي من دالات وواجهات الموضحة في هذه المواصفات.

واجهة IAssemblyCache

الواجهة IAssemblyCache هي الواجهة ذات المستوى الأعلى الذي يوفر الوصول إلى GAC.

للحصول على مثيل CreateAssemblyCache API قم باستدعاء CreateAssemblyCache API، كما يلي:
STDAPI CreateAssemblyCache(IAssemblyCache **ppAsmCache, DWORD dwReserved); 
يتم تعريف المعلمات كما يلي:
  • ppAsmCache - المؤشر للعودة IAssemblyCache
  • dwReserved

بنية FUSION_INSTALL_REFERENCE

يمثل بنية FUSION_INSTALL_REFERENCE مرجع يتم إجراء عند تثبيت تطبيق تجميع في 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;				
المعرّفة في حقول البنية كما يلي:
  • cbSize - حجم بنية بالبايت.
  • يجب أن يكون dwFlags - محجوز ، الصفر.
  • guidScheme - الوحدة يضيف المرجع.
  • szIdentifier - سلسلة فريد يقوم بتعريف التطبيق الذي قام بتثبيت التجميع.
  • szNonCannonicalData - سلسلة فقط فهمها الوحدة يضيف المرجع. يخزن GAC فقط هذه السلسلة.
يمكن أن تكون القيم الممكنة لحقل guidScheme أحد الإجراءات التالية:
  • تتم الإشارة إلى FUSION_REFCOUNT_MSI_GUID - التجميع في أحد تطبيقات التي تم تثبيتها باستخدام مثبت Windows. يتم تعيين الحقل szIdentifier إلى MSI وتعيين szNonCannonicalData إلى Windows Installer. هذا النظام يجب أن يتم استخدام فقط بواسطة Windows Installer نفسه.
  • تتم الإشارة إلى FUSION_REFCOUNT_UNINSTALL_SUBKEY_GUID - التجميع في أحد تطبيقات التي تظهر في إضافة/إزالة البرامج. حقل szIdentifier هي الرمز المميز المستخدمة في تسجيل التطبيق باستخدام إضافة/إزالة برامج.
  • تتم الإشارة إلى FUSION_REFCOUNT_FILEPATH_GUID - التجميع في أحد تطبيقات التي يتم تمثيل ملف في نظام الملفات. حقل szIdentifier هو المسار إلى هذا الملف.
  • تتم الإشارة إلى FUSION_REFCOUNT_OPAQUE_STRING_GUID - التجميع في أحد تطبيقات التي يتم تمثيل سلسلة غير شفاف فقط. هو szIdentifier هذه السلسلة غير شفاف. لم GAC تنفيذ التحقق من وجود مراجع غير شفاف عند إزالة هذا وجود.

بنية ASSEMBLY_INFO

يمثل بنية ASSEMBLY_INFO المعلومات حول تجميع في ذاكرة التخزين المؤقتة للتجميع.

يتم تعريف حقول البنية كما يلي:
  • cbAssemblyInfo - حجم بنية بالبايت. يسمح إضافات إلى البنية في الإصدار المستقبلي من .NET Framework.
  • تشير dwAssemblyFlags - إلى واحد أو أكثر من بت ASSEMBLYINFO_FLAG_ *.
  • uliAssemblySizeInKB - حجم الملفات التي تشكل التجميع بالكيلو بايت (KB).
  • pszCurrentAssemblyPathBuf - مؤشر إلى المخزن مؤقت سلسلة التي تحتوي على مسار الدليل الذي يحتوي على الملفات التي تشكل التجميع الحالي. يجب أن ينتهي المسار بـ صفر.
  • cchBuf - حجم المخزن المؤقت الذي يشير إلى حقل pszCurrentAssemblyPathBug.
يمكن أن dwAssemblyFlags إحدى القيم التالية:
  • ASSEMBLYINFO_FLAG__INSTALLED - تشير إلى أن التجميع مثبت بالفعل. تعيين دوماً في الإصدار الحالي من برنامج .NET Framework.
  • ASSEMBLYINFO_FLAG__PAYLOADRESIDENT - عدم تعيين في الإصدار الحالي .NET Framework.

أسلوب IAssemblyCache::UninstallAssembly

إزالة أسلوب IAssemblyCache::UninstallAssembly مرجع تجميع من GAC. في حالة الاحتفاظ التطبيقات الأخرى المراجع الأخرى إلى التجميع ، تتم إزالة الملفات التي تشكل التجميع من GAC.
    HRESULT UninstallAssembly(        [in] DWORD dwFlags,        [in] LPCWSTR pszAssemblyName,         [in] LPCFUSION_INSTALL_REFERENCE pRefData,         [out, optional] ULONG *pulDisposition        );				
يتم تعريف المعلمات كما يلي:
  • dwFlags - لا علامات تعريف. يجب أن يكون صفر.
  • pszAssemblyName - اسم التجميع. Unicode إنهاء صفر سلسلة.
  • pRefData - مؤشر ببنية FUSION_INSTALL_REFERENCE. على الرغم من أنه غير مستحسن، يمكن أن تكون هذه المعلمة فارغة. يتم تثبيت التجميع بدون مرجع تطبيق أو تختفي كافة المراجع التطبيقات الموجودة.
  • pulDisposition - المؤشر إلى عدد صحيح يشير إلى الإجراء الذي يتم تنفيذه بواسطة الدالة.
ملاحظة: إذا لم يتم pulDisposition فارغة pulDisposition يحتوي على إحدى القيم التالية:
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_UNINSTALLED - التجميع إزالة الملفات من GAC.
  • يستخدم IASSEMBLYCACHE_UNINSTALL_DISPOSITION_STILL_IN_USE - تطبيق التجميع. يتم إرجاع هذه القيمة في Microsoft Windows 95 و Microsoft Windows 98.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_ALREADY_UNINSTALLED - التجميع غير موجود في GAC.
  • IASSEMBLYCACHE_UNINSTALL_DISPOSITION_DELETE_PENDING - غير المستخدمة.
  • لم تم إزالة IASSEMBLYCACHE_UNINSTALL_DISPOSITION_HAS_INSTALL_REFERENCES - التجميع من GAC بسبب وجود مرجع تطبيق آخر.
  • لم يتم العثور على IASSEMBLYCACHE_UNINSTALL_DISPOSITION_REFERENCE_NOT_FOUND - المرجع المحدد في pRefData في GAC.
يتم تعريف قيم الإرجاع كما يلي:
  • تم إلغاء تثبيت S_OK - التجميع.
  • S_FALSE - نجاح العملية ولكن لم يتم إزالة التجميع من GAC. يتم وصف السبب في pulDisposition.

أسلوب IAssemblyCache::QueryAssemblyInfo

أسلوب IAssemblyCache::QueryAssemblyInfo باسترداد معلومات حول تجميع من GAC.
    HRESULT QueryAssemblyInfo(        [in] DWORD dwFlags,        [in] LPCWSTR pszAssemblyName,        [in, out] ASSEMBLY_INFO *pAsmInfo        );				
يتم تعريف المعلمات كما يلي:
  • dwFlags - أحد QUERYASMINFO_FLAG_VALIDATE أو QUERYASMINFO_FLAG_GETSIZE:
    • * _VALIDATE-بأداء التحقق من صحة الملفات في GAC مقابل أن ملف التجميع بما في ذلك التحقق من التجزئة التحقق من توقيع الاسم المميز.
    • * _GETSIZE-إرجاع حجم كافة الملفات في التجميع (أثر القرص). إذا لم يتم تعيينه لا يتم تعديل حقل ASSEMBLY_INFO::uliAssemblySizeInKB.
  • pszAssemblyName - اسم التجميع الذي تم الاستعلام عنه.
  • pAsmInfo - المؤشر إلى بنية ASSEMBLY_INFO التي تم إرجاعها.

أسلوب IAssemblyCache::InstallAssembly

إضافة أسلوب IAssemblyCache::InstallAssembly تجميع جديدة إلى GAC. يجب أن تكون موجودة بشكل ثابت في نظام الملفات التجميع ثم نسخها إلى GAC.
    HRESULT InstallAssembly( // If you use this, fusion will do the streaming & commit.        [in] DWORD dwFlags,        [in] LPCWSTR pszManifestFilePath,         [in] LPCFUSION_INSTALL_REFERENCE pRefData        );				
يتم تعريف المعلمات كالتالي:
  • يمكن تحديد dwFlags - في الأكثر واحدة من القيم IASSEMBLYCACHE_INSTALL_FLAG_ * البت:
    • * _REFRESH - إذا تم بالفعل تثبيت التجميع في GAC هي أرقام إصدار الملف التجميع تثبيت نفسها أو الأحدث، يتم استبدال الملفات.
    • * _FORCE_REFRESH-تتم الكتابة فوق الملفات الموجودة التجميع بغض النظر عن رقم الإصدار الخاص بها.
  • pszManifestFilePath - سلسلة تشير إلى ربط حيوي المكتبة (DLL) التي تحتوي على ملف التجميع الظاهر. يجب أن تتواجد الملفات التجميع أخرى في نفس الدليل كـ DLL الذي يحتوي على ملف التجميع الظاهر.
  • pRefData - مؤشر FUSION_INSTALL_REFERENCE الذي يشير إلى تطبيق يتم تثبيت التجميع نيابة الخاصة به. على الرغم من أنه غير مستحسن، يمكن أن تكون قيمة هذه المعلمة فارغة ولكن هذا يترك التجميع بدون أي مرجع التطبيق.

واجهة IAssemblyName

يمثل واجهة IAssemblyName على اسم تجميع. يتضمن اسم تجميع مجموعة predetermined من أزواج الاسم - القيمة. يتم وصف اسم التجميع بالتفصيل في SDK .NET Framework.
[        local,        object,        uuid(CD193BC0-B4BC-11d2-9833-00C04FC31D2E),        pointer_default(unique)]interface IAssemblyName: IUnknown				
يتم الحصول على مثيل IAssemblyName عن طريق استدعاء API CreateAssemblyNameObject:
STDAPI CreateAssemblyNameObject(LPASSEMBLYNAME *ppAssemblyNameObj, LPCWSTR szAssemblyName, DWORD dwFlags, LPVOID pvReserved);
يتم تعريف المعلمات كما يلي:
  • ppAssemblyNameObj - المؤشر إلى موقع ذاكرة يتلقى المؤشر IAssemblyName الذي يتم إنشاؤه.
  • szAssemblyName - تمثيل سلسلة من اسم التجميع أو مرجع التجميع الكامل الذي يحدده dwFlags. يمكن تمثيل سلسلة فارغة.
  • dwFlags - صفر أو أكثر من البتات التي تم تعريفها في تعداد CREATE_ASM_NAME_OBJ_FLAGS.
  • يجب أن تكون pvReserved - فارغة.

تعداد CREATE_ASM_NAME_OBJ_FLAGS

يتضمن التعداد CREATE_ASM_NAME_OBJ_FLAGS القيم التالية:
  • CANOF_PARSE_DISPLAY_NAME - إذا تم تحديد هذه العلامة المعلمة szAssemblyName هو اسم تجميع كامل وكنت تحليل خصائص فردية. إذا لم يتم تحديد العلامة szAssemblyName هو جزء "الاسم" اسم التجميع.
  • يتم تعيين CANOF_SET_DEFAULT_VALUES - إذا كانت هذه العلامة المحددة ، بعض الخصائص، مثل هندسة المعالج إلى القيم الافتراضية.
    typedef enum {         CANOF_PARSE_DISPLAY_NAME = 0x1,         CANOF_SET_DEFAULT_VALUES = 0x2    } CREATE_ASM_NAME_OBJ_FLAGS;				

تعداد ASM_NAME

وصف معرّف الخاصية ASM_NAME تعداد الأسماء الصالحة من أزواج الاسم - القيمة في اسم تجميع. راجع .NET Framework SDK للحصول على وصف هذه الخصائص.
    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

أسلوب IAssemblyName::SetProperty يضيف زوج الاسم - القيمة إلى اسم التجميع أو إذا زوج اسم - قيمة بنفس الاسم مسبقاً, تعديل أو حذف القيمة زوج اسم - قيمة.
    HRESULT SetProperty(        [in]    DWORD  PropertyId,         [in]    LPVOID pvProperty,        [in]    DWORD  cbProperty);				
يتم تعريف المعلمات كما يلي:
  • PropertyId-"المعرف" يمثل جزء الاسم من زوج الاسم - القيمة المراد إضافتها أو تعديلها. يتم تعريف معرفات خاصية صالحة في تعداد ASM_NAME.
  • pvProperty - مؤشر إلى المخزن مؤقت الذي يحتوي على قيمة الخاصية.
  • cbProperty - طول المخزن المؤقت pvProperty بالبايت. وإذا cbProperty صفراً، يتم إزالة زوج اسم - قيمة اسم التجميع.

أسلوب IAssemblyName::GetProperty

أسلوب IAssemblyName::GetProperty استرداد قيمة زوج اسم - قيمة في اسم التجميع الذي يحدد الاسم.
    HRESULT GetProperty(        [in]         DWORD    PropertyId,         [out]        LPVOID   pvProperty,        [in, out]    LPDWORD  pcbProperty);				
يتم تعريف المعلمات كما يلي:
  • PropertyId-"المعرف" يمثل اسم زوج اسم - قيمة قيمته يتم استرداد. تم تعريف الخاصية المحددة معرفات في تعداد ASM_NAME.
  • pvProperty - مؤشر إلى المخزن مؤقت التي تحتوي على قيمة الخاصية.
  • cbProperty - طول المخزن المؤقت pvProperty بالبايت.

أسلوب IAssemblyName::Finalize

تجميد أسلوب IAssemblyName::Finalize على اسم تجميع. مكالمات إضافية إلى IAssemblyName::SetProperty تكون غير الناجحة بعد استدعاء هذا الأسلوب.
HRESULT Finalize();

أسلوب IAssemblyName::GetDisplayName

يرجع الأسلوب IAssemblyName::GetDisplayName تمثيل سلسلة اسم التجميع.
    HRESULT  GetDisplayName(        [out]       LPOLESTR  szDisplayName,        [in, out]   LPDWORD   pccDisplayName,        [in]        DWORD     dwDisplayFlags);				
يتم تعريف المعلمات كما يلي:
  • szDisplayName - مؤشر إلى المخزن مؤقت الذي يحتوي على اسم العرض. يتم إرجاع اسم العرض في Unicode.
  • pccDisplayName - حجم المخزن المؤقت في الأحرف (على الإدخال). طول اسم العرض الذي تم إرجاعه (على إرجاع).
  • dwDisplayFlags - واحد أو أكثر من البتات المعرّفة في تعداد ASM_DISPLAY_FLAGS:
    • * _VERSION-تتضمن رقم إصدار كجزء من اسم العرض.
    • * _CULTURE-يتضمن البيانات الموروثة.
    • * _PUBLIC_KEY_TOKEN-يتضمن رمز المفتاح العمومي.
    • * _PUBLIC_KEY-يتضمن المفتاح العمومي.
    • * _CUSTOM-يتضمن جزء اسم التجميع المخصصة.
    • * _PROCESSORARCHITECTURE-يتضمن هندسة المعالج.
    • * _LANGUAGEID-يتضمن معرّف اللغة.
    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

يرجع الأسلوب IAssemblyName::GetName جزء الاسم من اسم التجميع.
    HRESULT GetName(        [in, out] LPDWORD lpcwBuffer,        [out] WCHAR *pwzName);				
يتم تعريف المعلمات كما يلي:
  • lpcwBuffer - حجم المخزن المؤقت pwszName (على الإدخال). طول الاسم (على إرجاع).
  • pwszName - المؤشر إلى المخزن المؤقت الذي يحتوي على جزء الاسم من اسم التجميع.

أسلوب IAssemblyName::GetVersion

يرجع الأسلوب IAssemblyName::GetVersion جزء إصدار من اسم التجميع.
HRESULT GetVersion(        [out] LPDWORD pdwVersionHi,        [out] LPDWORD pdwVersionLow);				
يتم تعريف المعلمات كما يلي:
  • pdwVersionHi - المؤشر إلى DWORD تحتوي على 32 بت أعلى رقم إصدار.
  • pdwVersionLow - المؤشر إلى DWORD التي تحتوي على 32 بت أقل من رقم الإصدار.

أسلوب IAssemblyName::IsEqual

أسلوب IAssemblyName::IsEqual مقارنة اسم التجميع إلى أسماء التجميعات آخر.
    HRESULT IsEqual(        [in] IAssemblyName *pName,        [in] DWORD dwCmpFlags);				
يتم تعريف المعلمات كما يلي:
  • pName - اسم التجميع لمقارنة.
  • dwCmpFlags - تشير إلى أي جزء من اسم التجميع الذي تريد استخدامه في المقارنة.
تكون القيم أو أكثر من البتات المعرّفة في تعداد ASM_CMP_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 comparison.        ASM_CMPF_DEFAULT = 0x100    } ASM_CMP_FLAGS;                       				
قيم الإرجاع كما يلي:
  • S_OK:-الأسماء مطابقة استناداً إلى معايير المقارنة.
  • S_FALSE:-الأسماء غير متطابقة.

أسلوب IAssemblyName::Clone

إنشاء أسلوب IAssemblyName::Clone نسخة لاسم التجميع.
    HRESULT Clone(        [out] IAssemblyName **pName);				

واجهة IAssemblyEnum

تعداد واجهة IAssemblyEnum التجميعات في GAC.
 [        local,        object,        uuid(21b8916c-f28e-11d2-a473-00c04f8ef448),        pointer_default(unique)]interface IAssemblyEnum : IUnknown				
للحصول على مثيل CreateAssemblyEnum API قم باستدعاء CreateAssemblyNameObject API، كما يلي:
STDAPI CreateAssemblyEnum(IAssemblyEnum **pEnum, IUnknown *pUnkReserved, IAssemblyName *pName, DWORD dwFlags, LPVOID pvReserved);
يتم تعريف المعلمات كما يلي:
  • pEnum - المؤشر إلى موقع ذاكرة التي تحتوي على المؤشر IAssemblyEnum.
  • يجب أن تكون pUnkReserved - فارغة.
  • pName - اسم تجميع التي تُستخدم في تصفية التعداد. يمكن أن يكون فارغاً تعداد كافة التجميعات في GAC.
  • dwFlags - بت واحد من التعداد ASM_CACHE_FLAGS بالضبط.
  • يجب pvReserved - NULL.

تعداد ASM_CACHE_FLAGS

يتضمن التعداد ASM_CACHE_FLAGS القيم التالية:
  • تعداد ASM_CACHE_ZAP - ذاكرة التخزين المؤقت التجميعات precompiled باستخدام Ngen.exe.
  • تعداد ASM_CACHE_GAC - GAC.
  • تعداد ASM_CACHE_DOWNLOAD - التجميعات التي تم تنزيلها عند الطلب أو التي تم نسخ الظل.
IAssemblyName::GetDisplayName
typedef enum{    ASM_CACHE_ZAP            = 0x1,    ASM_CACHE_GAC            = 0x2,    ASM_CACHE_DOWNLOAD       = 0x4} ASM_CACHE_FLAGS;				

أسلوب IAssemblyEnum::GetNextAssembly

تعداد الأسلوب IAssemblyEnum::GetNextAssembly التجميعات في GAC.
    HRESULT GetNextAssembly    (        [in]                  LPVOID                pvReserved,        [out]                 IAssemblyName       **ppName,        [in]                  DWORD                 dwFlags    );				
يتم تعريف المعلمات كما يلي:
  • يجب أن تكون pvReserved - فارغة.
  • ppName - المؤشر إلى موقع ذاكرة هو أن تتلقى إلى اسم التجميع التجميع التالي الذي يتم تعداد مؤشر واجهة.
  • يجب dwFlags - صفر.

واجهة IInstallReferenceItem

يمثل واجهة IInstallReferenceItem مرجع الذي تم تعيينه على تجميع في GAC. يتم إرجاع مثيلات IInstallReferenceIteam بواسطة واجهة IInstallReferenceEnum.
[        local,        object,        uuid(582dac66-e678-449f-aba6-6faaec8a9394),        pointer_default(unique)]interface IInstallReferenceItem : IUnknown				

أسلوب IInstallReferenceItem::GetReference

يرجع الأسلوب IInstallReferenceItem::GetReference بنية FUSION_INSTALL_REFERENCE.
    HRESULT GetReference    (    [out] LPFUSION_INSTALL_REFERENCE *ppRefData,    [in]  DWORD dwFlags,    [in]  LPVOID pvReserved    );				
يتم تعريف المعلمات كما يلي:
  • ppRefData - مؤشر ببنية FUSION_INSTALL_REFERENCE. يتم تخصيص بواسطة الأسلوب GetReference الذاكرة ثم يتم تحرير عند تحرير IInstallReferenceItem. يجب أن لا اضغط للمتصلين مرجع إلى هذا المخزن المؤقت بعد إصدار كائن IInstallReferenceItem.
  • يجب dwFlags - صفر.
  • يجب أن تكون pvReserved - فارغة.

واجهة IInstallReferenceEnum

واجهة IInstallReferenceEnum تعداد كافة المراجع التي يتم تعيينها على تجميع في GAC.

ملاحظة: يتم تأمين المراجع التي تنتمي إلى التجميع تغييرات أثناء تعداد تلك المراجع.
[        local,        object,        uuid(56b1a988-7c0c-4aa2-8639-c3eb5a90226f),        pointer_default(unique)]interface IInstallReferenceEnum : IUnknown				
للحصول على مثيل CreateInstallReferenceEnum API قم باستدعاء CreateInstallReferenceEnum API، كما يلي:
STDAPI CreateInstallReferenceEnum(IInstallReferenceEnum **ppRefEnum, IAssemblyName *pName, DWORD dwFlags, LPVOID pvReserved);
يتم تعريف المعلمات كما يلي:
  • ppRefEnum - مؤشر إلى موقع ذاكرة يتلقى المؤشر IInstallReferenceEnum.
  • pName - اسم التجميع يتم تعداد المراجع.
  • يجب dwFlags - صفر.
  • يجب أن تكون pvReserved - فارغة.

أسلوب IInstallReferenceEnum::GetNextInstallReferenceItem

إرجاع IInstallReferenceEnum::GetNextInstallReferenceItem التالية معلومات مرجع تجميع.
    HRESULT GetNextInstallReferenceItem            (            [out] IInstallReferenceItem **ppRefItem,            [in]  DWORD dwFlags,            [in]  LPVOID pvReserved            );				
يتم تعريف المعلمات كما يلي:
  • ppRefItem - المؤشر إلى موقع ذاكرة يتلقى المؤشر IInstallReferenceItem.
  • يجب dwFlags - صفر.
  • يجب أن تكون pvReserved - فارغة.
قيم الإرجاع كالتالي:
  • S_OK:-يتم إرجاع العنصر التالي بنجاح.
  • S_FALSE:-لا يوجد المزيد من العناصر.

GetCachePath API

إرجاع GetCachePath API موقع التخزين GAC.
STDAPI GetCachePath(ASM_CACHE_FLAGS dwCacheFlags, LPWSTR pwzCachePath, PDWORD pcchPath);
يتم تعريف المعلمات كما يلي:
  • dwCacheFlags - أحد البتات المعرّفة في تعداد ASM_CACHE_FLAGS بالضبط.
  • pwzCachePath - المؤشر إلى المخزن مؤقت أن تتلقى مسار GAC كسلسلة Unicode.
  • pcchPath - طول المخزن المؤقت pwszCachePath في أحرف 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); ")				

تحذير: تمت ترجمة هذا المقال تلقائياً

خصائص

رقم الموضوع: 317540 - آخر مراجعة: 04/04/2003 22:49:16 - المراجعة: 3.0

  • Microsoft .NET Framework Software Development Kit 1.0 Service Pack 2
  • Microsoft .NET Framework Software Development Kit 1.0 Service Pack 2
  • kbmt kbbug kbdocerr kbpending KB317540 KbMtar
تعليقات