Esempio n. 1
0
        private static unsafe void ParseDataPackages(NativeRuntime.IFabricCodePackageActivationContext nativeContext, ServiceManifest manifest)
        {
            IList <string> names = new List <string>();

            NativeCommon.IFabricStringListResult nativeResult = nativeContext.GetDataPackageNames();
            uint   count;
            IntPtr nativeNames = nativeResult.GetStrings(out count);

            for (int i = 0; i < count; i++)
            {
                NativeRuntime.IFabricDataPackage            dataPackageResult = nativeContext.GetDataPackage(Marshal.ReadIntPtr((IntPtr)(nativeNames + i)));
                NativeTypes.FABRIC_DATA_PACKAGE_DESCRIPTION nativeDescription = *(((NativeTypes.FABRIC_DATA_PACKAGE_DESCRIPTION *)dataPackageResult.get_Description()));
                NativeRuntime.IFabricDataPackage            nativePackage     = null;
                string packageName = NativeTypes.FromNativeString(nativeDescription.Name);

                using (var pin = new PinBlittable(packageName))
                {
                    nativePackage = nativeContext.GetDataPackage(pin.AddrOfPinnedObject());
                }

                manifest.DataPackages.Add(DataPackage.CreateFromNative(nativePackage));
            }
        }