internal static unsafe ResourceGovernancePolicyDescription CreateFromNative(IntPtr nativePtr) { ReleaseAssert.AssertIfNot( nativePtr != IntPtr.Zero, "ResourceGovernancePolicyDescription.CreateFromNative() has null pointer."); var nativeDescription = *((NativeTypes.FABRIC_RESOURCE_GOVERNANCE_POLICY_DESCRIPTION *)nativePtr); var resourceGovPolicyDesc = new ResourceGovernancePolicyDescription { CodePackageRef = NativeTypes.FromNativeString(nativeDescription.CodePackageRef), MemoryInMB = nativeDescription.MemoryInMB, MemorySwapInMB = nativeDescription.MemorySwapInMB, MemoryReservationInMB = nativeDescription.MemoryReservationInMB, CpuShares = nativeDescription.CpuShares, CpuPercent = nativeDescription.CpuPercent, MaximumIOps = nativeDescription.MaximumIOps, MaximumIOBytesps = nativeDescription.MaximumIOBytesps, BlockIOWeight = nativeDescription.BlockIOWeight, CpusetCpus = NativeTypes.FromNativeString(nativeDescription.CpusetCpus), NanoCpus = nativeDescription.NanoCpus, CpuQuota = nativeDescription.CpuQuota }; if (nativeDescription.Reserved != null) { var nativeParametersEx1 = *((NativeTypes.FABRIC_RESOURCE_GOVERNANCE_POLICY_DESCRIPTION_EX1 *)nativeDescription.Reserved); resourceGovPolicyDesc.DiskQuotaInMB = nativeParametersEx1.DiskQuotaInMB; resourceGovPolicyDesc.KernelMemoryInMB = nativeParametersEx1.KernelMemoryInMB; resourceGovPolicyDesc.ShmSizeInMB = nativeParametersEx1.ShmSizeInMB; } return(resourceGovPolicyDesc); }
internal static unsafe ProcessDescription CreateFromNative(IntPtr nativePtr) { ReleaseAssert.AssertIfNot(nativePtr != IntPtr.Zero, "ProcessDescription.CreateFromNative() has null pointer."); var nativeDescription = *((NativeTypes.FABRIC_PROCESS_DESCRIPTION *)nativePtr); IDictionary <string, string> encryptedEnvironmentVariables = new Dictionary <string, string>(); if (nativeDescription.Reserved != IntPtr.Zero) { var ex1 = (NativeTypes.FABRIC_PROCESS_DESCRIPTION_EX1 *)nativeDescription.Reserved; encryptedEnvironmentVariables = NativeTypes.FromNativeStringPairList(ex1->EncryptedEnvironmentVariables); } return(new ProcessDescription { ExePath = NativeTypes.FromNativeString(nativeDescription.ExePath), Arguments = NativeTypes.FromNativeString(nativeDescription.Arguments), StartInDirectory = NativeTypes.FromNativeString(nativeDescription.StartInDirectory), EnvVars = NativeTypes.FromNativeStringPairList(nativeDescription.EnvVars), AppDirectory = NativeTypes.FromNativeString(nativeDescription.AppDirectory), TempDirectory = NativeTypes.FromNativeString(nativeDescription.TempDirectory), WorkDirectory = NativeTypes.FromNativeString(nativeDescription.WorkDirectory), LogDirectory = NativeTypes.FromNativeString(nativeDescription.LogDirectory), RedirectConsole = NativeTypes.FromBOOLEAN(nativeDescription.RedirectConsole), RedirectedConsoleFileNamePrefix = NativeTypes.FromNativeString(nativeDescription.RedirectedConsoleFileNamePrefix), ConsoleRedirectionFileRetentionCount = nativeDescription.ConsoleRedirectionFileRetentionCount, ConsoleRedirectionFileMaxSizeInKb = nativeDescription.ConsoleRedirectionFileMaxSizeInKb, ShowNoWindow = NativeTypes.FromBOOLEAN(nativeDescription.ShowNoWindow), AllowChildProcessDetach = NativeTypes.FromBOOLEAN(nativeDescription.AllowChildProcessDetach), NotAttachedToJob = NativeTypes.FromBOOLEAN(nativeDescription.NotAttachedToJob), DebugParameters = ProcessDebugParameters.CreateFromNative(nativeDescription.DebugParameters), ResourceGovernancePolicy = ResourceGovernancePolicyDescription.CreateFromNative(nativeDescription.ResourceGovernancePolicy), ServicePackageResourceGovernance = ServicePackageResourceGovernanceDescription.CreateFromNative(nativeDescription.ServicePackageResourceGovernance), CgroupName = NativeTypes.FromNativeString(nativeDescription.CgroupName), IsHostedServiceProcess = NativeTypes.FromBOOLEAN(nativeDescription.IsHostedServiceProcess), EncryptedEnvironmentVariables = encryptedEnvironmentVariables }); }