Ejemplo n.º 1
0
        public PluginLibrary(string name, params PluginEngine[] engines)
        {
            if (engines == null)
            {
                throw new ArgumentNullException("engines");
            }

            _engines = new ReadOnlyCollection <PluginEngine>((PluginEngine[])engines.Clone());

            unsafe
            {
                gvplugin_library_t *library = (gvplugin_library_t *)Marshal.AllocHGlobal(Marshal.SizeOf(typeof(gvplugin_library_t)));
                _library = new SafeMarshalHGlobalHandle((IntPtr)library, true);

                library->apis = (gvplugin_api_t *)Marshal.AllocHGlobal((engines.Length + 1) * Marshal.SizeOf(typeof(gvplugin_api_t)));
                _apis         = new SafeMarshalHGlobalHandle((IntPtr)library->apis, true);
                library->apis[engines.Length] = new gvplugin_api_t();

                library->packagename = (byte *)Marshal.StringToHGlobalAnsi(name);
                _packageName         = new SafeMarshalHGlobalHandle((IntPtr)library->packagename, true);

                for (int i = 0; i < engines.Length; i++)
                {
                    library->apis[i].api   = engines[i].Api;
                    library->apis[i].types = engines[i].InstalledPluginData;
                }
            }
        }
Ejemplo n.º 2
0
 public static extern unsafe void gvAddLibrary(SafeContextHandle gvc, gvplugin_library_t *lib);