﻿// Decompiled with JetBrains decompiler
// Type: System.Web.Hosting.IProcessHost
// Assembly: System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// MVID: 7E68A73E-4066-4F24-AB0A-F147209F50EC
// Assembly location: C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Web.dll

using System.Runtime.InteropServices;

namespace System.Web.Hosting
{
  /// <summary>
  /// Defines the set of process-wide functionality that every host of the application manager must implement.
  /// </summary>
  [Guid("0ccd465e-3114-4ca3-ad50-cea561307e93")]
  [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  [ComImport]
  public interface IProcessHost
  {
    /// <summary>
    /// Starts the specified application
    /// </summary>
    /// <param name="appId">The unique application ID.</param><param name="appPath">The virtual path to the application.</param><param name="runtimeInterface">A runtime manager interface.</param>
    void StartApplication([MarshalAs(UnmanagedType.LPWStr), In] string appId, [MarshalAs(UnmanagedType.LPWStr), In] string appPath, [MarshalAs(UnmanagedType.Interface)] out object runtimeInterface);

    /// <summary>
    /// Terminates the specified application.
    /// </summary>
    /// <param name="appId">The application to terminate.</param>
    void ShutdownApplication([MarshalAs(UnmanagedType.LPWStr), In] string appId);

    /// <summary>
    /// Sends a request to terminate all applications in an application domain.
    /// </summary>
    void Shutdown();

    /// <summary>
    /// Gets an <see cref="T:System.Web.Hosting.AppDomainInfoEnum"/> interface.
    /// </summary>
    /// <param name="appDomainInfoEnum">The <see cref="T:System.Web.Hosting.AppDomainInfoEnum"/> interface.</param>
    void EnumerateAppDomains([MarshalAs(UnmanagedType.Interface)] out IAppDomainInfoEnum appDomainInfoEnum);
  }
}
