/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the w64 mingw-runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error This stub requires an updated version of <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif

#ifndef __iwamreg_h__
#define __iwamreg_h__

#ifndef __IWamAdmin_FWD_DEFINED__
#define __IWamAdmin_FWD_DEFINED__
typedef struct IWamAdmin IWamAdmin;
#endif

#ifndef __IWamAdmin2_FWD_DEFINED__
#define __IWamAdmin2_FWD_DEFINED__
typedef struct IWamAdmin2 IWamAdmin2;
#endif

#ifndef __IIISApplicationAdmin_FWD_DEFINED__
#define __IIISApplicationAdmin_FWD_DEFINED__
typedef struct IIISApplicationAdmin IIISApplicationAdmin;
#endif

#ifndef __WamAdmin_FWD_DEFINED__
#define __WamAdmin_FWD_DEFINED__
#ifdef __cplusplus
typedef class WamAdmin WamAdmin;
#else
typedef struct WamAdmin WamAdmin;
#endif
#endif

#include "oaidl.h"
#include "ocidl.h"
#ifdef __cplusplus
extern "C"{
#endif

#ifndef __MIDL_user_allocate_free_DEFINED__
#define __MIDL_user_allocate_free_DEFINED__
  void *__RPC_API MIDL_user_allocate(size_t);
  void __RPC_API MIDL_user_free(void *);
#endif

#ifndef __WAMREG_IADM__IID
#define __WAMREG_IADM__IID
  DEFINE_GUID(IID_IWamAdmin,0x29822AB7,0xF302,0x11D0,0x99,0x53,0x00,0xC0,0x4F,0xD9,0x19,0xC1);
  DEFINE_GUID(IID_IWamAdmin2,0x29822AB8,0xF302,0x11D0,0x99,0x53,0x00,0xC0,0x4F,0xD9,0x19,0xC1);
  DEFINE_GUID(IID_IIISApplicationAdmin,0x7C4E1804,0xE342,0x483D,0xA4,0x3E,0xA8,0x50,0xCF,0xCC,0x8D,0x18);
  DEFINE_GUID(LIBID_WAMREGLib,0x29822AA8,0xF302,0x11D0,0x99,0x53,0x00,0xC0,0x4F,0xD9,0x19,0xC1);
  DEFINE_GUID(CLSID_WamAdmin,0x61738644,0xF196,0x11D0,0x99,0x53,0x00,0xC0,0x4F,0xD9,0x19,0xC1);
#endif

#define APPSTATUS_STOPPED 0
#define APPSTATUS_RUNNING 1
#define APPSTATUS_NOTDEFINED 2

  typedef enum __MIDL___MIDL_itf_wamreg_0000_0001 {
    eAppRunInProc = 0,eAppRunOutProcIsolated,eAppRunOutProcInDefaultPool
  } EAppMode;

  extern RPC_IF_HANDLE __MIDL_itf_wamreg_0000_v0_0_c_ifspec;
  extern RPC_IF_HANDLE __MIDL_itf_wamreg_0000_v0_0_s_ifspec;

#ifndef __IWamAdmin_INTERFACE_DEFINED__
#define __IWamAdmin_INTERFACE_DEFINED__
  EXTERN_C const IID IID_IWamAdmin;
#if defined(__cplusplus) && !defined(CINTERFACE)
  struct IWamAdmin : public IUnknown {
  public:
    virtual HRESULT WINAPI AppCreate(LPCWSTR szMDPath,WINBOOL fInProc) = 0;
    virtual HRESULT WINAPI AppDelete(LPCWSTR szMDPath,WINBOOL fRecursive) = 0;
    virtual HRESULT WINAPI AppUnLoad(LPCWSTR szMDPath,WINBOOL fRecursive) = 0;
    virtual HRESULT WINAPI AppGetStatus(LPCWSTR szMDPath,DWORD *pdwAppStatus) = 0;
    virtual HRESULT WINAPI AppDeleteRecoverable(LPCWSTR szMDPath,WINBOOL fRecursive) = 0;
    virtual HRESULT WINAPI AppRecover(LPCWSTR szMDPath,WINBOOL fRecursive) = 0;
  };
#else
  typedef struct IWamAdminVtbl {
    BEGIN_INTERFACE
      HRESULT (WINAPI *QueryInterface)(IWamAdmin *This,REFIID riid,void **ppvObject);
      ULONG (WINAPI *AddRef)(IWamAdmin *This);
      ULONG (WINAPI *Release)(IWamAdmin *This);
      HRESULT (WINAPI *AppCreate)(IWamAdmin *This,LPCWSTR szMDPath,WINBOOL fInProc);
      HRESULT (WINAPI *AppDelete)(IWamAdmin *This,LPCWSTR szMDPath,WINBOOL fRecursive);
      HRESULT (WINAPI *AppUnLoad)(IWamAdmin *This,LPCWSTR szMDPath,WINBOOL fRecursive);
      HRESULT (WINAPI *AppGetStatus)(IWamAdmin *This,LPCWSTR szMDPath,DWORD *pdwAppStatus);
      HRESULT (WINAPI *AppDeleteRecoverable)(IWamAdmin *This,LPCWSTR szMDPath,WINBOOL fRecursive);
      HRESULT (WINAPI *AppRecover)(IWamAdmin *This,LPCWSTR szMDPath,WINBOOL fRecursive);
    END_INTERFACE
  } IWamAdminVtbl;
  struct IWamAdmin {
    CONST_VTBL struct IWamAdminVtbl *lpVtbl;
  };
#ifdef COBJMACROS
#define IWamAdmin_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWamAdmin_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWamAdmin_Release(This) (This)->lpVtbl->Release(This)
#define IWamAdmin_AppCreate(This,szMDPath,fInProc) (This)->lpVtbl->AppCreate(This,szMDPath,fInProc)
#define IWamAdmin_AppDelete(This,szMDPath,fRecursive) (This)->lpVtbl->AppDelete(This,szMDPath,fRecursive)
#define IWamAdmin_AppUnLoad(This,szMDPath,fRecursive) (This)->lpVtbl->AppUnLoad(This,szMDPath,fRecursive)
#define IWamAdmin_AppGetStatus(This,szMDPath,pdwAppStatus) (This)->lpVtbl->AppGetStatus(This,szMDPath,pdwAppStatus)
#define IWamAdmin_AppDeleteRecoverable(This,szMDPath,fRecursive) (This)->lpVtbl->AppDeleteRecoverable(This,szMDPath,fRecursive)
#define IWamAdmin_AppRecover(This,szMDPath,fRecursive) (This)->lpVtbl->AppRecover(This,szMDPath,fRecursive)
#endif
#endif
  HRESULT WINAPI IWamAdmin_AppCreate_Proxy(IWamAdmin *This,LPCWSTR szMDPath,WINBOOL fInProc);
  void __RPC_STUB IWamAdmin_AppCreate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IWamAdmin_AppDelete_Proxy(IWamAdmin *This,LPCWSTR szMDPath,WINBOOL fRecursive);
  void __RPC_STUB IWamAdmin_AppDelete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IWamAdmin_AppUnLoad_Proxy(IWamAdmin *This,LPCWSTR szMDPath,WINBOOL fRecursive);
  void __RPC_STUB IWamAdmin_AppUnLoad_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IWamAdmin_AppGetStatus_Proxy(IWamAdmin *This,LPCWSTR szMDPath,DWORD *pdwAppStatus);
  void __RPC_STUB IWamAdmin_AppGetStatus_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IWamAdmin_AppDeleteRecoverable_Proxy(IWamAdmin *This,LPCWSTR szMDPath,WINBOOL fRecursive);
  void __RPC_STUB IWamAdmin_AppDeleteRecoverable_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IWamAdmin_AppRecover_Proxy(IWamAdmin *This,LPCWSTR szMDPath,WINBOOL fRecursive);
  void __RPC_STUB IWamAdmin_AppRecover_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif

#ifndef __IWamAdmin2_INTERFACE_DEFINED__
#define __IWamAdmin2_INTERFACE_DEFINED__
  EXTERN_C const IID IID_IWamAdmin2;
#if defined(__cplusplus) && !defined(CINTERFACE)
  struct IWamAdmin2 : public IWamAdmin {
  public:
    virtual HRESULT WINAPI AppCreate2(LPCWSTR szMDPath,DWORD dwAppMode) = 0;
  };
#else
  typedef struct IWamAdmin2Vtbl {
    BEGIN_INTERFACE
      HRESULT (WINAPI *QueryInterface)(IWamAdmin2 *This,REFIID riid,void **ppvObject);
      ULONG (WINAPI *AddRef)(IWamAdmin2 *This);
      ULONG (WINAPI *Release)(IWamAdmin2 *This);
      HRESULT (WINAPI *AppCreate)(IWamAdmin2 *This,LPCWSTR szMDPath,WINBOOL fInProc);
      HRESULT (WINAPI *AppDelete)(IWamAdmin2 *This,LPCWSTR szMDPath,WINBOOL fRecursive);
      HRESULT (WINAPI *AppUnLoad)(IWamAdmin2 *This,LPCWSTR szMDPath,WINBOOL fRecursive);
      HRESULT (WINAPI *AppGetStatus)(IWamAdmin2 *This,LPCWSTR szMDPath,DWORD *pdwAppStatus);
      HRESULT (WINAPI *AppDeleteRecoverable)(IWamAdmin2 *This,LPCWSTR szMDPath,WINBOOL fRecursive);
      HRESULT (WINAPI *AppRecover)(IWamAdmin2 *This,LPCWSTR szMDPath,WINBOOL fRecursive);
      HRESULT (WINAPI *AppCreate2)(IWamAdmin2 *This,LPCWSTR szMDPath,DWORD dwAppMode);
    END_INTERFACE
  } IWamAdmin2Vtbl;
  struct IWamAdmin2 {
    CONST_VTBL struct IWamAdmin2Vtbl *lpVtbl;
  };
#ifdef COBJMACROS
#define IWamAdmin2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWamAdmin2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWamAdmin2_Release(This) (This)->lpVtbl->Release(This)
#define IWamAdmin2_AppCreate(This,szMDPath,fInProc) (This)->lpVtbl->AppCreate(This,szMDPath,fInProc)
#define IWamAdmin2_AppDelete(This,szMDPath,fRecursive) (This)->lpVtbl->AppDelete(This,szMDPath,fRecursive)
#define IWamAdmin2_AppUnLoad(This,szMDPath,fRecursive) (This)->lpVtbl->AppUnLoad(This,szMDPath,fRecursive)
#define IWamAdmin2_AppGetStatus(This,szMDPath,pdwAppStatus) (This)->lpVtbl->AppGetStatus(This,szMDPath,pdwAppStatus)
#define IWamAdmin2_AppDeleteRecoverable(This,szMDPath,fRecursive) (This)->lpVtbl->AppDeleteRecoverable(This,szMDPath,fRecursive)
#define IWamAdmin2_AppRecover(This,szMDPath,fRecursive) (This)->lpVtbl->AppRecover(This,szMDPath,fRecursive)
#define IWamAdmin2_AppCreate2(This,szMDPath,dwAppMode) (This)->lpVtbl->AppCreate2(This,szMDPath,dwAppMode)
#endif
#endif
  HRESULT WINAPI IWamAdmin2_AppCreate2_Proxy(IWamAdmin2 *This,LPCWSTR szMDPath,DWORD dwAppMode);
  void __RPC_STUB IWamAdmin2_AppCreate2_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif

#ifndef __IIISApplicationAdmin_INTERFACE_DEFINED__
#define __IIISApplicationAdmin_INTERFACE_DEFINED__
  EXTERN_C const IID IID_IIISApplicationAdmin;
#if defined(__cplusplus) && !defined(CINTERFACE)
  struct IIISApplicationAdmin : public IUnknown {
  public:
    virtual HRESULT WINAPI CreateApplication(LPCWSTR szMDPath,DWORD dwAppMode,LPCWSTR szAppPoolId,WINBOOL fCreatePool) = 0;
    virtual HRESULT WINAPI DeleteApplication(LPCWSTR szMDPath,WINBOOL fRecursive) = 0;
    virtual HRESULT WINAPI CreateApplicationPool(LPCWSTR szPool) = 0;
    virtual HRESULT WINAPI DeleteApplicationPool(LPCWSTR szPool) = 0;
    virtual HRESULT WINAPI EnumerateApplicationsInPool(LPCWSTR szPool,BSTR *bstrBuffer) = 0;
    virtual HRESULT WINAPI RecycleApplicationPool(LPCWSTR szPool) = 0;
    virtual HRESULT WINAPI GetProcessMode(DWORD *pdwMode) = 0;
  };
#else
  typedef struct IIISApplicationAdminVtbl {
    BEGIN_INTERFACE
      HRESULT (WINAPI *QueryInterface)(IIISApplicationAdmin *This,REFIID riid,void **ppvObject);
      ULONG (WINAPI *AddRef)(IIISApplicationAdmin *This);
      ULONG (WINAPI *Release)(IIISApplicationAdmin *This);
      HRESULT (WINAPI *CreateApplication)(IIISApplicationAdmin *This,LPCWSTR szMDPath,DWORD dwAppMode,LPCWSTR szAppPoolId,WINBOOL fCreatePool);
      HRESULT (WINAPI *DeleteApplication)(IIISApplicationAdmin *This,LPCWSTR szMDPath,WINBOOL fRecursive);
      HRESULT (WINAPI *CreateApplicationPool)(IIISApplicationAdmin *This,LPCWSTR szPool);
      HRESULT (WINAPI *DeleteApplicationPool)(IIISApplicationAdmin *This,LPCWSTR szPool);
      HRESULT (WINAPI *EnumerateApplicationsInPool)(IIISApplicationAdmin *This,LPCWSTR szPool,BSTR *bstrBuffer);
      HRESULT (WINAPI *RecycleApplicationPool)(IIISApplicationAdmin *This,LPCWSTR szPool);
      HRESULT (WINAPI *GetProcessMode)(IIISApplicationAdmin *This,DWORD *pdwMode);
    END_INTERFACE
  } IIISApplicationAdminVtbl;
  struct IIISApplicationAdmin {
    CONST_VTBL struct IIISApplicationAdminVtbl *lpVtbl;
  };
#ifdef COBJMACROS
#define IIISApplicationAdmin_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IIISApplicationAdmin_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IIISApplicationAdmin_Release(This) (This)->lpVtbl->Release(This)
#define IIISApplicationAdmin_CreateApplication(This,szMDPath,dwAppMode,szAppPoolId,fCreatePool) (This)->lpVtbl->CreateApplication(This,szMDPath,dwAppMode,szAppPoolId,fCreatePool)
#define IIISApplicationAdmin_DeleteApplication(This,szMDPath,fRecursive) (This)->lpVtbl->DeleteApplication(This,szMDPath,fRecursive)
#define IIISApplicationAdmin_CreateApplicationPool(This,szPool) (This)->lpVtbl->CreateApplicationPool(This,szPool)
#define IIISApplicationAdmin_DeleteApplicationPool(This,szPool) (This)->lpVtbl->DeleteApplicationPool(This,szPool)
#define IIISApplicationAdmin_EnumerateApplicationsInPool(This,szPool,bstrBuffer) (This)->lpVtbl->EnumerateApplicationsInPool(This,szPool,bstrBuffer)
#define IIISApplicationAdmin_RecycleApplicationPool(This,szPool) (This)->lpVtbl->RecycleApplicationPool(This,szPool)
#define IIISApplicationAdmin_GetProcessMode(This,pdwMode) (This)->lpVtbl->GetProcessMode(This,pdwMode)
#endif
#endif
  HRESULT WINAPI IIISApplicationAdmin_CreateApplication_Proxy(IIISApplicationAdmin *This,LPCWSTR szMDPath,DWORD dwAppMode,LPCWSTR szAppPoolId,WINBOOL fCreatePool);
  void __RPC_STUB IIISApplicationAdmin_CreateApplication_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IIISApplicationAdmin_DeleteApplication_Proxy(IIISApplicationAdmin *This,LPCWSTR szMDPath,WINBOOL fRecursive);
  void __RPC_STUB IIISApplicationAdmin_DeleteApplication_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IIISApplicationAdmin_CreateApplicationPool_Proxy(IIISApplicationAdmin *This,LPCWSTR szPool);
  void __RPC_STUB IIISApplicationAdmin_CreateApplicationPool_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IIISApplicationAdmin_DeleteApplicationPool_Proxy(IIISApplicationAdmin *This,LPCWSTR szPool);
  void __RPC_STUB IIISApplicationAdmin_DeleteApplicationPool_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IIISApplicationAdmin_EnumerateApplicationsInPool_Proxy(IIISApplicationAdmin *This,LPCWSTR szPool,BSTR *bstrBuffer);
  void __RPC_STUB IIISApplicationAdmin_EnumerateApplicationsInPool_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IIISApplicationAdmin_RecycleApplicationPool_Proxy(IIISApplicationAdmin *This,LPCWSTR szPool);
  void __RPC_STUB IIISApplicationAdmin_RecycleApplicationPool_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IIISApplicationAdmin_GetProcessMode_Proxy(IIISApplicationAdmin *This,DWORD *pdwMode);
  void __RPC_STUB IIISApplicationAdmin_GetProcessMode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif

#ifndef __WAMREGLib_LIBRARY_DEFINED__
#define __WAMREGLib_LIBRARY_DEFINED__
  EXTERN_C const IID LIBID_WAMREGLib;
  EXTERN_C const CLSID CLSID_WamAdmin;
#ifdef __cplusplus
  class WamAdmin;
#endif
#endif

  unsigned long __RPC_API BSTR_UserSize(unsigned long *,unsigned long,BSTR *);
  unsigned char *__RPC_API BSTR_UserMarshal(unsigned long *,unsigned char *,BSTR *);
  unsigned char *__RPC_API BSTR_UserUnmarshal(unsigned long *,unsigned char *,BSTR *);
  void __RPC_API BSTR_UserFree(unsigned long *,BSTR *);

#ifdef __cplusplus
}
#endif
#endif
