internal static unsafe DeployedServicePackageHealthState FromNative(NativeTypes.FABRIC_DEPLOYED_SERVICE_PACKAGE_HEALTH_STATE nativeState)
        {
            var deployedServicePackageHealthState = new DeployedServicePackageHealthState();

            deployedServicePackageHealthState.ApplicationName       = NativeTypes.FromNativeUri(nativeState.ApplicationName);
            deployedServicePackageHealthState.ServiceManifestName   = NativeTypes.FromNativeString(nativeState.ServiceManifestName);
            deployedServicePackageHealthState.NodeName              = NativeTypes.FromNativeString(nativeState.NodeName);
            deployedServicePackageHealthState.AggregatedHealthState = (HealthState)nativeState.AggregatedHealthState;

            if (nativeState.Reserved != IntPtr.Zero)
            {
                var nativeStateEx1 =
                    (NativeTypes.FABRIC_DEPLOYED_SERVICE_PACKAGE_HEALTH_STATE_EX1 *)nativeState.Reserved;

                deployedServicePackageHealthState.ServicePackageActivationId = NativeTypes.FromNativeString(nativeStateEx1->ServicePackageActivationId);
            }

            return(deployedServicePackageHealthState);
        }
        private static unsafe DeployedApplicationHealth FromNative(NativeTypes.FABRIC_DEPLOYED_APPLICATION_HEALTH *nativeHealth)
        {
            var managedHealth = new DeployedApplicationHealth();

            managedHealth.AggregatedHealthState = (HealthState)nativeHealth->AggregatedHealthState;
            managedHealth.HealthEvents          = HealthEvent.FromNativeList(nativeHealth->HealthEvents);
            managedHealth.ApplicationName       = NativeTypes.FromNativeUri(nativeHealth->ApplicationName);
            managedHealth.NodeName = NativeTypes.FromNativeString(nativeHealth->NodeName);
            managedHealth.DeployedServicePackageHealthStates = DeployedServicePackageHealthState.FromNativeList(nativeHealth->DeployedServicePackageHealthStates);

            if (nativeHealth->Reserved != IntPtr.Zero)
            {
                var nativeHealthEx1 = (NativeTypes.FABRIC_DEPLOYED_APPLICATION_HEALTH_EX1 *)nativeHealth->Reserved;
                managedHealth.UnhealthyEvaluations = HealthEvaluation.FromNativeList(nativeHealthEx1->UnhealthyEvaluations);

                if (nativeHealthEx1->Reserved != IntPtr.Zero)
                {
                    var nativeHealthEx2 = (NativeTypes.FABRIC_DEPLOYED_APPLICATION_HEALTH_EX2 *)nativeHealthEx1->Reserved;
                    managedHealth.HealthStatistics = HealthStatistics.CreateFromNative(nativeHealthEx2->HealthStatistics);
                }
            }

            return(managedHealth);
        }