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)); } }