internal static unsafe ContainerActivationArgs CreateFromNative(IntPtr nativePtr)
        {
            ReleaseAssert.AssertIfNot(nativePtr != IntPtr.Zero, "ContainerActivationArgs.CreateFromNative() has null pointer.");

            var nativeArgs = *((NativeTypes.FABRIC_CONTAINER_ACTIVATION_ARGS *)nativePtr);

            var containerActivationArgs = new ContainerActivationArgs
            {
                IsUserLocalSystem    = NativeTypes.FromBOOLEAN(nativeArgs.IsUserLocalSystem),
                AppHostId            = NativeTypes.FromNativeString(nativeArgs.AppHostId),
                NodeId               = NativeTypes.FromNativeString(nativeArgs.NodeId),
                ContainerDescription = ContainerDescription.CreateFromNative(nativeArgs.ContainerDescription),
                ProcessDescription   = ProcessDescription.CreateFromNative(nativeArgs.ProcessDescription),
                FabricBinPath        = NativeTypes.FromNativeString(nativeArgs.FabricBinPath),
                GatewayIpAddress     = NativeTypes.FromNativeString(nativeArgs.GatewayIpAddress)
            };

            if (nativeArgs.Reserved != null)
            {
                var nativeArgsEx1 = *((NativeTypes.FABRIC_CONTAINER_ACTIVATION_ARGS_EX1 *)nativeArgs.Reserved);
                containerActivationArgs.GatewayIpAddresses = NativeTypes.FromNativeStringList(nativeArgsEx1.GatewayIpAddresses);
            }

            return(containerActivationArgs);
        }
        NativeCommon.IFabricAsyncOperationContext NativeContainerActivatorService.IFabricContainerActivatorService.BeginActivateContainer(
            IntPtr activationParams,
            uint timeoutMilliseconds,
            NativeCommon.IFabricAsyncOperationCallback callback)
        {
            var activationArgs = ContainerActivationArgs.CreateFromNative(activationParams);
            var timeout        = TimeSpan.FromMilliseconds(timeoutMilliseconds);

            return(Utility.WrapNativeAsyncMethodImplementation(
                       (cancellationToken) => this.activatorService.ActivateContainerAsync(activationArgs, timeout),
                       callback,
                       "FabricContainerActivatorServiceBroker.ActivateContainerAsync",
                       ValidateAsyncApi));
        }