コード例 #1
0
        public static void ReadCache(ArrayList alAssems, String name, uint nFlag)
        {
            SafeFusionHandle aEnum     = null;
            SafeFusionHandle aNameEnum = null;
            SafeFusionHandle AppCtx    = SafeFusionHandle.InvalidHandle;
            int hr;

            if (name != null)
            {
                hr = Win32Native.CreateAssemblyNameObject(out aNameEnum, name, CANOF.PARSE_DISPLAY_NAME, IntPtr.Zero);
                if (hr != 0)
                {
                    Marshal.ThrowExceptionForHR(hr);
                }
            }

            using (aNameEnum) {
                hr = Win32Native.CreateAssemblyEnum(out aEnum, AppCtx, aNameEnum, nFlag, IntPtr.Zero);
                if (hr != 0)
                {
                    Marshal.ThrowExceptionForHR(hr);
                }

                using (aEnum) {
                    for (;;)
                    {
                        using (SafeFusionHandle aAppCtx = new SafeFusionHandle(), aName = new SafeFusionHandle())
                        {
                            if (!GetNextAssembly(aEnum, aAppCtx, aName, 0))
                            {
                                break;
                            }

                            String sDisplayName = GetDisplayName(aName, 0);
                            if (sDisplayName == null)
                            {
                                continue;
                            }

                            alAssems.Add(sDisplayName);
                        }
                    }
                } // using (aEnum)
            }     // using (aNameEnum)
        }
コード例 #2
0
 static extern String GetDisplayName(SafeFusionHandle pName, uint dwDisplayFlags);
コード例 #3
0
 internal static extern int CreateAssemblyEnum(out SafeFusionHandle ppEnum, SafeFusionHandle pAppCtx, SafeFusionHandle pName, uint dwFlags, IntPtr pvReserved);
コード例 #4
0
 static extern bool GetNextAssembly(SafeFusionHandle pEnum, SafeFusionHandle pAppCtx, SafeFusionHandle pName, uint dwFlags);
コード例 #5
0
 internal static extern int CreateAssemblyNameObject(out SafeFusionHandle ppEnum, String szAssemblyName, uint dwFlags, IntPtr pvReserved);