Rewrite FSRM-API as IDL.


git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@6554 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-headers/Makefile.am b/mingw-w64-headers/Makefile.am
index 58dec81..51bafc8 100644
--- a/mingw-w64-headers/Makefile.am
+++ b/mingw-w64-headers/Makefile.am
@@ -79,6 +79,9 @@
   include/endpointvolume.idl \
   include/fsrm.idl \
   include/fsrmenums.idl \
+  include/fsrmquota.idl \
+  include/fsrmreports.idl \
+  include/fsrmscreen.idl \
   include/fusion.idl \
   include/fwptypes.idl \
   include/hstring.idl \
diff --git a/mingw-w64-headers/Makefile.in b/mingw-w64-headers/Makefile.in
index b09e933..cec1344 100644
--- a/mingw-w64-headers/Makefile.in
+++ b/mingw-w64-headers/Makefile.in
@@ -303,6 +303,9 @@
 @HAVE_WIDL_TRUE@  include/endpointvolume.idl \
 @HAVE_WIDL_TRUE@  include/fsrm.idl \
 @HAVE_WIDL_TRUE@  include/fsrmenums.idl \
+@HAVE_WIDL_TRUE@  include/fsrmquota.idl \
+@HAVE_WIDL_TRUE@  include/fsrmreports.idl \
+@HAVE_WIDL_TRUE@  include/fsrmscreen.idl \
 @HAVE_WIDL_TRUE@  include/fusion.idl \
 @HAVE_WIDL_TRUE@  include/fwptypes.idl \
 @HAVE_WIDL_TRUE@  include/hstring.idl \
diff --git a/mingw-w64-headers/include/fsrmquota.h b/mingw-w64-headers/include/fsrmquota.h
index 7cc4d95..6a4b70d 100644
--- a/mingw-w64-headers/include/fsrmquota.h
+++ b/mingw-w64-headers/include/fsrmquota.h
@@ -1,861 +1,337 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#include <fsrmenums.h>
-#include <fsrm.h>
+/*** Autogenerated by WIDL 1.6 from fsrmquota.idl - Do not edit ***/
 
-#ifndef _INC_FSRMQUOTA
-#define _INC_FSRMQUOTA
-#if (_WIN32_WINNT >= 0x0600)
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
 
-#ifndef __IFsrmAction_FWD_DEFINED__
-#define __IFsrmAction_FWD_DEFINED__
-typedef struct IFsrmAction IFsrmAction;
-#endif /* __IFsrmAction_FWD_DEFINED__ */
+#include <rpc.h>
+#include <rpcndr.h>
 
-#ifndef __IFsrmActionCommand_FWD_DEFINED__
-#define __IFsrmActionCommand_FWD_DEFINED__
-typedef struct IFsrmActionCommand IFsrmActionCommand;
-#endif /* __IFsrmActionCommand_FWD_DEFINED__ */
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
 
-#ifndef __IFsrmActionEmail_FWD_DEFINED__
-#define __IFsrmActionEmail_FWD_DEFINED__
-typedef struct IFsrmActionEmail IFsrmActionEmail;
-#endif /* __IFsrmActionEmail_FWD_DEFINED__ */
+#ifndef __fsrmquota_h__
+#define __fsrmquota_h__
 
-#ifndef __IFsrmActionEmail2_FWD_DEFINED__
-#define __IFsrmActionEmail2_FWD_DEFINED__
-typedef struct IFsrmActionEmail2 IFsrmActionEmail2;
-#endif /* __IFsrmActionEmail2_FWD_DEFINED__ */
-
-#ifndef __IFsrmActionEventLog_FWD_DEFINED__
-#define __IFsrmActionEventLog_FWD_DEFINED__
-typedef struct IFsrmActionEventLog IFsrmActionEventLog;
-#endif /* __IFsrmActionEventLog_FWD_DEFINED__ */
-
-#ifndef __IFsrmActionReport_FWD_DEFINED__
-#define __IFsrmActionReport_FWD_DEFINED__
-typedef struct IFsrmActionReport IFsrmActionReport;
-#endif /* __IFsrmActionReport_FWD_DEFINED__ */
-
-#ifndef __IFsrmAutoApplyQuota_FWD_DEFINED__
-#define __IFsrmAutoApplyQuota_FWD_DEFINED__
-typedef struct IFsrmAutoApplyQuota IFsrmAutoApplyQuota;
-#endif /* __IFsrmAutoApplyQuota_FWD_DEFINED__ */
-
-#ifndef __IFsrmClassificationManager_FWD_DEFINED__
-#define __IFsrmClassificationManager_FWD_DEFINED__
-typedef struct IFsrmClassificationManager IFsrmClassificationManager;
-#endif /* __IFsrmClassificationManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmClassificationRule_FWD_DEFINED__
-#define __IFsrmClassificationRule_FWD_DEFINED__
-typedef struct IFsrmClassificationRule IFsrmClassificationRule;
-#endif /* __IFsrmClassificationRule_FWD_DEFINED__ */
-
-#ifndef __IFsrmClassifierModuleDefinition_FWD_DEFINED__
-#define __IFsrmClassifierModuleDefinition_FWD_DEFINED__
-typedef struct IFsrmClassifierModuleDefinition IFsrmClassifierModuleDefinition;
-#endif /* __IFsrmClassifierModuleDefinition_FWD_DEFINED__ */
-
-#ifndef __IFsrmClassifierModuleImplementation_FWD_DEFINED__
-#define __IFsrmClassifierModuleImplementation_FWD_DEFINED__
-typedef struct IFsrmClassifierModuleImplementation IFsrmClassifierModuleImplementation;
-#endif /* __IFsrmClassifierModuleImplementation_FWD_DEFINED__ */
-
-#ifndef __IFsrmCollection_FWD_DEFINED__
-#define __IFsrmCollection_FWD_DEFINED__
-typedef struct IFsrmCollection IFsrmCollection;
-#endif /* __IFsrmCollection_FWD_DEFINED__ */
-
-#ifndef __IFsrmCommittableCollection_FWD_DEFINED__
-#define __IFsrmCommittableCollection_FWD_DEFINED__
-typedef struct IFsrmCommittableCollection IFsrmCommittableCollection;
-#endif /* __IFsrmCommittableCollection_FWD_DEFINED__ */
-
-#ifndef __IFsrmDerivedObjectsResult_FWD_DEFINED__
-#define __IFsrmDerivedObjectsResult_FWD_DEFINED__
-typedef struct IFsrmDerivedObjectsResult IFsrmDerivedObjectsResult;
-#endif /* __IFsrmDerivedObjectsResult_FWD_DEFINED__ */
-
-#ifndef __IFsrmExportImport_FWD_DEFINED__
-#define __IFsrmExportImport_FWD_DEFINED__
-typedef struct IFsrmExportImport IFsrmExportImport;
-#endif /* __IFsrmExportImport_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileGroup_FWD_DEFINED__
-#define __IFsrmFileGroup_FWD_DEFINED__
-typedef struct IFsrmFileGroup IFsrmFileGroup;
-#endif /* __IFsrmFileGroup_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileGroupImported_FWD_DEFINED__
-#define __IFsrmFileGroupImported_FWD_DEFINED__
-typedef struct IFsrmFileGroupImported IFsrmFileGroupImported;
-#endif /* __IFsrmFileGroupImported_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileGroupManager_FWD_DEFINED__
-#define __IFsrmFileGroupManager_FWD_DEFINED__
-typedef struct IFsrmFileGroupManager IFsrmFileGroupManager;
-#endif /* __IFsrmFileGroupManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileManagementJob_FWD_DEFINED__
-#define __IFsrmFileManagementJob_FWD_DEFINED__
-typedef struct IFsrmFileManagementJob IFsrmFileManagementJob;
-#endif /* __IFsrmFileManagementJob_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileManagementJobManager_FWD_DEFINED__
-#define __IFsrmFileManagementJobManager_FWD_DEFINED__
-typedef struct IFsrmFileManagementJobManager IFsrmFileManagementJobManager;
-#endif /* __IFsrmFileManagementJobManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreen_FWD_DEFINED__
-#define __IFsrmFileScreen_FWD_DEFINED__
-typedef struct IFsrmFileScreen IFsrmFileScreen;
-#endif /* __IFsrmFileScreen_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreenBase_FWD_DEFINED__
-#define __IFsrmFileScreenBase_FWD_DEFINED__
-typedef struct IFsrmFileScreenBase IFsrmFileScreenBase;
-#endif /* __IFsrmFileScreenBase_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreenException_FWD_DEFINED__
-#define __IFsrmFileScreenException_FWD_DEFINED__
-typedef struct IFsrmFileScreenException IFsrmFileScreenException;
-#endif /* __IFsrmFileScreenException_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreenManager_FWD_DEFINED__
-#define __IFsrmFileScreenManager_FWD_DEFINED__
-typedef struct IFsrmFileScreenManager IFsrmFileScreenManager;
-#endif /* __IFsrmFileScreenManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreenTemplate_FWD_DEFINED__
-#define __IFsrmFileScreenTemplate_FWD_DEFINED__
-typedef struct IFsrmFileScreenTemplate IFsrmFileScreenTemplate;
-#endif /* __IFsrmFileScreenTemplate_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreenTemplateImported_FWD_DEFINED__
-#define __IFsrmFileScreenTemplateImported_FWD_DEFINED__
-typedef struct IFsrmFileScreenTemplateImported IFsrmFileScreenTemplateImported;
-#endif /* __IFsrmFileScreenTemplateImported_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreenTemplateManager_FWD_DEFINED__
-#define __IFsrmFileScreenTemplateManager_FWD_DEFINED__
-typedef struct IFsrmFileScreenTemplateManager IFsrmFileScreenTemplateManager;
-#endif /* __IFsrmFileScreenTemplateManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmMutableCollection_FWD_DEFINED__
-#define __IFsrmMutableCollection_FWD_DEFINED__
-typedef struct IFsrmMutableCollection IFsrmMutableCollection;
-#endif /* __IFsrmMutableCollection_FWD_DEFINED__ */
-
-#ifndef __IFsrmObject_FWD_DEFINED__
-#define __IFsrmObject_FWD_DEFINED__
-typedef struct IFsrmObject IFsrmObject;
-#endif /* __IFsrmObject_FWD_DEFINED__ */
-
-#ifndef __IFsrmPathMapper_FWD_DEFINED__
-#define __IFsrmPathMapper_FWD_DEFINED__
-typedef struct IFsrmPathMapper IFsrmPathMapper;
-#endif /* __IFsrmPathMapper_FWD_DEFINED__ */
-
-#ifndef __IFsrmPipelineModuleConnector_FWD_DEFINED__
-#define __IFsrmPipelineModuleConnector_FWD_DEFINED__
-typedef struct IFsrmPipelineModuleConnector IFsrmPipelineModuleConnector;
-#endif /* __IFsrmPipelineModuleConnector_FWD_DEFINED__ */
-
-#ifndef __IFsrmPipelineModuleDefinition_FWD_DEFINED__
-#define __IFsrmPipelineModuleDefinition_FWD_DEFINED__
-typedef struct IFsrmPipelineModuleDefinition IFsrmPipelineModuleDefinition;
-#endif /* __IFsrmPipelineModuleDefinition_FWD_DEFINED__ */
-
-#ifndef __IFsrmPipelineModuleImplementation_FWD_DEFINED__
-#define __IFsrmPipelineModuleImplementation_FWD_DEFINED__
-typedef struct IFsrmPipelineModuleImplementation IFsrmPipelineModuleImplementation;
-#endif /* __IFsrmPipelineModuleImplementation_FWD_DEFINED__ */
-
-#ifndef __IFsrmProperty_FWD_DEFINED__
-#define __IFsrmProperty_FWD_DEFINED__
-typedef struct IFsrmProperty IFsrmProperty;
-#endif /* __IFsrmProperty_FWD_DEFINED__ */
-
-#ifndef __IFsrmPropertyBag_FWD_DEFINED__
-#define __IFsrmPropertyBag_FWD_DEFINED__
-typedef struct IFsrmPropertyBag IFsrmPropertyBag;
-#endif /* __IFsrmPropertyBag_FWD_DEFINED__ */
-
-#ifndef __IFsrmPropertyCondition_FWD_DEFINED__
-#define __IFsrmPropertyCondition_FWD_DEFINED__
-typedef struct IFsrmPropertyCondition IFsrmPropertyCondition;
-#endif /* __IFsrmPropertyCondition_FWD_DEFINED__ */
-
-#ifndef __IFsrmPropertyDefinition_FWD_DEFINED__
-#define __IFsrmPropertyDefinition_FWD_DEFINED__
-typedef struct IFsrmPropertyDefinition IFsrmPropertyDefinition;
-#endif /* __IFsrmPropertyDefinition_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuota_FWD_DEFINED__
-#define __IFsrmQuota_FWD_DEFINED__
-typedef struct IFsrmQuota IFsrmQuota;
-#endif /* __IFsrmQuota_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaBase_FWD_DEFINED__
-#define __IFsrmQuotaBase_FWD_DEFINED__
-typedef struct IFsrmQuotaBase IFsrmQuotaBase;
-#endif /* __IFsrmQuotaBase_FWD_DEFINED__ */
+/* Forward declarations */
 
 #ifndef __IFsrmQuotaManager_FWD_DEFINED__
 #define __IFsrmQuotaManager_FWD_DEFINED__
-typedef struct IFsrmQuotaManager IFsrmQuotaManager;
-#endif /* __IFsrmQuotaManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaManagerEx_FWD_DEFINED__
-#define __IFsrmQuotaManagerEx_FWD_DEFINED__
-typedef struct IFsrmQuotaManagerEx IFsrmQuotaManagerEx;
-#endif /* __IFsrmQuotaManagerEx_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaObject_FWD_DEFINED__
-#define __IFsrmQuotaObject_FWD_DEFINED__
-typedef struct IFsrmQuotaObject IFsrmQuotaObject;
-#endif /* __IFsrmQuotaObject_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaTemplate_FWD_DEFINED__
-#define __IFsrmQuotaTemplate_FWD_DEFINED__
-typedef struct IFsrmQuotaTemplate IFsrmQuotaTemplate;
-#endif /* __IFsrmQuotaTemplate_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaTemplateImported_FWD_DEFINED__
-#define __IFsrmQuotaTemplateImported_FWD_DEFINED__
-typedef struct IFsrmQuotaTemplateImported IFsrmQuotaTemplateImported;
-#endif /* __IFsrmQuotaTemplateImported_FWD_DEFINED__ */
+typedef interface IFsrmQuotaManager IFsrmQuotaManager;
+#endif
 
 #ifndef __IFsrmQuotaTemplateManager_FWD_DEFINED__
 #define __IFsrmQuotaTemplateManager_FWD_DEFINED__
-typedef struct IFsrmQuotaTemplateManager IFsrmQuotaTemplateManager;
-#endif /* __IFsrmQuotaTemplateManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmReport_FWD_DEFINED__
-#define __IFsrmReport_FWD_DEFINED__
-typedef struct IFsrmReport IFsrmReport;
-#endif /* __IFsrmReport_FWD_DEFINED__ */
-
-#ifndef __IFsrmReportJob_FWD_DEFINED__
-#define __IFsrmReportJob_FWD_DEFINED__
-typedef struct IFsrmReportJob IFsrmReportJob;
-#endif /* __IFsrmReportJob_FWD_DEFINED__ */
-
-#ifndef __IFsrmReportManager_FWD_DEFINED__
-#define __IFsrmReportManager_FWD_DEFINED__
-typedef struct IFsrmReportManager IFsrmReportManager;
-#endif /* __IFsrmReportManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmReportScheduler_FWD_DEFINED__
-#define __IFsrmReportScheduler_FWD_DEFINED__
-typedef struct IFsrmReportScheduler IFsrmReportScheduler;
-#endif /* __IFsrmReportScheduler_FWD_DEFINED__ */
-
-#ifndef __IFsrmRule_FWD_DEFINED__
-#define __IFsrmRule_FWD_DEFINED__
-typedef struct IFsrmRule IFsrmRule;
-#endif /* __IFsrmRule_FWD_DEFINED__ */
-
-#ifndef __IFsrmSetting_FWD_DEFINED__
-#define __IFsrmSetting_FWD_DEFINED__
-typedef struct IFsrmSetting IFsrmSetting;
-#endif /* __IFsrmSetting_FWD_DEFINED__ */
-
-#ifndef __IFsrmStorageModuleDefinition_FWD_DEFINED__
-#define __IFsrmStorageModuleDefinition_FWD_DEFINED__
-typedef struct IFsrmStorageModuleDefinition IFsrmStorageModuleDefinition;
-#endif /* __IFsrmStorageModuleDefinition_FWD_DEFINED__ */
-
-#ifndef __IFsrmStorageModuleImplementation_FWD_DEFINED__
-#define __IFsrmStorageModuleImplementation_FWD_DEFINED__
-typedef struct IFsrmStorageModuleImplementation IFsrmStorageModuleImplementation;
-#endif /* __IFsrmStorageModuleImplementation_FWD_DEFINED__ */
-
-#undef  INTERFACE
-#define INTERFACE IFsrmQuotaBase
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+typedef interface IFsrmQuotaTemplateManager IFsrmQuotaTemplateManager;
 #endif
-DECLARE_INTERFACE_(IFsrmQuotaBase,IFsrmObject)
+
+#ifndef __IFsrmQuotaBase_FWD_DEFINED__
+#define __IFsrmQuotaBase_FWD_DEFINED__
+typedef interface IFsrmQuotaBase IFsrmQuotaBase;
+#endif
+
+#ifndef __IFsrmQuotaObject_FWD_DEFINED__
+#define __IFsrmQuotaObject_FWD_DEFINED__
+typedef interface IFsrmQuotaObject IFsrmQuotaObject;
+#endif
+
+#ifndef __IFsrmQuotaTemplate_FWD_DEFINED__
+#define __IFsrmQuotaTemplate_FWD_DEFINED__
+typedef interface IFsrmQuotaTemplate IFsrmQuotaTemplate;
+#endif
+
+#ifndef __IFsrmQuota_FWD_DEFINED__
+#define __IFsrmQuota_FWD_DEFINED__
+typedef interface IFsrmQuota IFsrmQuota;
+#endif
+
+#ifndef __IFsrmAutoApplyQuota_FWD_DEFINED__
+#define __IFsrmAutoApplyQuota_FWD_DEFINED__
+typedef interface IFsrmAutoApplyQuota IFsrmAutoApplyQuota;
+#endif
+
+#ifndef __IFsrmQuotaManagerEx_FWD_DEFINED__
+#define __IFsrmQuotaManagerEx_FWD_DEFINED__
+typedef interface IFsrmQuotaManagerEx IFsrmQuotaManagerEx;
+#endif
+
+#ifndef __IFsrmQuotaTemplateImported_FWD_DEFINED__
+#define __IFsrmQuotaTemplateImported_FWD_DEFINED__
+typedef interface IFsrmQuotaTemplateImported IFsrmQuotaTemplateImported;
+#endif
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <fsrmenums.h>
+#include <fsrm.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+#ifndef __IFsrmAutoApplyQuota_FWD_DEFINED__
+#define __IFsrmAutoApplyQuota_FWD_DEFINED__
+typedef interface IFsrmAutoApplyQuota IFsrmAutoApplyQuota;
+#endif
+
+#ifndef __IFsrmQuota_FWD_DEFINED__
+#define __IFsrmQuota_FWD_DEFINED__
+typedef interface IFsrmQuota IFsrmQuota;
+#endif
+
+#ifndef __IFsrmQuotaBase_FWD_DEFINED__
+#define __IFsrmQuotaBase_FWD_DEFINED__
+typedef interface IFsrmQuotaBase IFsrmQuotaBase;
+#endif
+
+#ifndef __IFsrmQuotaObject_FWD_DEFINED__
+#define __IFsrmQuotaObject_FWD_DEFINED__
+typedef interface IFsrmQuotaObject IFsrmQuotaObject;
+#endif
+
+#ifndef __IFsrmQuotaManager_FWD_DEFINED__
+#define __IFsrmQuotaManager_FWD_DEFINED__
+typedef interface IFsrmQuotaManager IFsrmQuotaManager;
+#endif
+
+#ifndef __IFsrmQuotaTemplate_FWD_DEFINED__
+#define __IFsrmQuotaTemplate_FWD_DEFINED__
+typedef interface IFsrmQuotaTemplate IFsrmQuotaTemplate;
+#endif
+
+#ifndef __IFsrmQuotaTemplateImported_FWD_DEFINED__
+#define __IFsrmQuotaTemplateImported_FWD_DEFINED__
+typedef interface IFsrmQuotaTemplateImported IFsrmQuotaTemplateImported;
+#endif
+
+#ifndef __IFsrmQuotaTemplateManager_FWD_DEFINED__
+#define __IFsrmQuotaTemplateManager_FWD_DEFINED__
+typedef interface IFsrmQuotaTemplateManager IFsrmQuotaTemplateManager;
+#endif
+
+typedef LONG FSRM_QUOTA_THRESHOLD;
+#define FSRM_DISPID_QUOTA_BASE (FSRM_DISPID_FEATURE_QUOTA | 0x100000)
+
+#define FSRM_DISPID_QUOTA_OBJECT (FSRM_DISPID_QUOTA_BASE | 0x10000)
+
+#define FSRM_DISPID_QUOTA (FSRM_DISPID_QUOTA_OBJECT | 0x1000)
+
+#define FSRM_DISPID_AUTOAPPLYQUOTA (FSRM_DISPID_QUOTA_OBJECT | 0x2000)
+
+#define FSRM_DISPID_QUOTA_TEMPLATE (FSRM_DISPID_QUOTA_BASE | 0x20000)
+
+#define FSRM_DISPID_QUOTA_TEMPLATE_IMPORTED (FSRM_DISPID_QUOTA_TEMPLATE | 0x1000)
+
+#define FSRM_DISPID_QUOTA_MANAGER (FSRM_DISPID_FEATURE_QUOTA | 0x200000)
+
+#define FSRM_DISPID_QUOTA_TEMPLATE_MANAGER (FSRM_DISPID_FEATURE_QUOTA | 0x300000)
+
+#define FSRM_DISPID_QUOTA_MANAGER_EX (FSRM_DISPID_FEATURE_QUOTA | 0x400000)
+
+#define FsrmMaxNumberThresholds (16)
+
+#define FsrmMinThresholdValue (1)
+
+#define FsrmMaxThresholdValue (250)
+
+#define FsrmMinQuotaLimit (1024)
+
+#define FsrmMaxExcludeFolders (32)
+
+/*****************************************************************************
+ * IFsrmQuotaManager interface
+ */
+#ifndef __IFsrmQuotaManager_INTERFACE_DEFINED__
+#define __IFsrmQuotaManager_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmQuotaManager, 0x8bb68c7d, 0x19d8, 0x4ffb, 0x80,0x9e, 0xbe,0x4f,0xc1,0x73,0x40,0x14);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("8bb68c7d-19d8-4ffb-809e-be4fc1734014")
+IFsrmQuotaManager : public IDispatch
 {
+    virtual HRESULT STDMETHODCALLTYPE get_ActionVariables(
+        SAFEARRAY **variables) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ActionVariableDescriptions(
+        SAFEARRAY **descriptions) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateQuota(
+        BSTR path,
+        IFsrmQuota **quota) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateAutoApplyQuota(
+        BSTR quotaTemplateName,
+        BSTR path,
+        IFsrmAutoApplyQuota **quota) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetQuota(
+        BSTR path,
+        IFsrmQuota **quota) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAutoApplyQuota(
+        BSTR path,
+        IFsrmAutoApplyQuota **quota) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRestrictiveQuota(
+        BSTR path,
+        IFsrmQuota **quota) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumQuotas(
+        BSTR path = L"",
+        FsrmEnumOptions options = FsrmEnumOptions_None,
+        IFsrmCommittableCollection **quotas) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumAutoApplyQuotas(
+        BSTR path = L"",
+        FsrmEnumOptions options = FsrmEnumOptions_None,
+        IFsrmCommittableCollection **quotas) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumEffectiveQuotas(
+        BSTR path,
+        FsrmEnumOptions options = FsrmEnumOptions_None,
+        IFsrmCommittableCollection **quotas) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Scan(
+        BSTR strPath) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateQuotaCollection(
+        IFsrmCommittableCollection **collection) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmQuotaManager, 0x8bb68c7d, 0x19d8, 0x4ffb, 0x80,0x9e, 0xbe,0x4f,0xc1,0x73,0x40,0x14)
+#endif
+#else
+typedef struct IFsrmQuotaManagerVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmQuotaManager* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmQuotaManager* This);
 
-    /* IFsrmObject methods */
-    STDMETHOD_(HRESULT,get_Id)(THIS_ FSRM_OBJECT_ID *id) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *description) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR description) PURE;
-    STDMETHOD_(HRESULT,Delete)(THIS) PURE;
-    STDMETHOD_(HRESULT,Commit)(THIS) PURE;
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmQuotaManager* This);
 
-    /* IFsrmQuotaBase methods */
-    STDMETHOD_(HRESULT,get_QuotaLimit)(THIS_ VARIANT *quotaLimit) PURE;
-    STDMETHOD_(HRESULT,put_QuotaLimit)(THIS_ VARIANT quotaLimit) PURE;
-    STDMETHOD_(HRESULT,get_QuotaFlags)(THIS_ __LONG32 *quotaFlags) PURE;
-    STDMETHOD_(HRESULT,put_QuotaFlags)(THIS_ __LONG32 quotaFlags) PURE;
-    STDMETHOD_(HRESULT,get_Thresholds)(THIS_ SAFEARRAY *thresholds) PURE;
-    STDMETHOD_(HRESULT,AddThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold) PURE;
-    STDMETHOD_(HRESULT,DeleteThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold) PURE;
-    STDMETHOD_(HRESULT,ModifyThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold,FSRM_QUOTA_THRESHOLD newThreshold) PURE;
-    STDMETHOD_(HRESULT,CreateThresholdAction)(THIS_ FSRM_QUOTA_THRESHOLD threshold,FsrmActionType actionType,IFsrmAction **action) PURE;
-    STDMETHOD_(HRESULT,EnumThresholdActions)(THIS_ FSRM_QUOTA_THRESHOLD threshold,IFsrmCollection **actions) PURE;
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmQuotaManager* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmQuotaManager* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmQuotaManager* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmQuotaManager* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmQuotaManager methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_ActionVariables)(
+        IFsrmQuotaManager* This,
+        SAFEARRAY **variables);
+
+    HRESULT (STDMETHODCALLTYPE *get_ActionVariableDescriptions)(
+        IFsrmQuotaManager* This,
+        SAFEARRAY **descriptions);
+
+    HRESULT (STDMETHODCALLTYPE *CreateQuota)(
+        IFsrmQuotaManager* This,
+        BSTR path,
+        IFsrmQuota **quota);
+
+    HRESULT (STDMETHODCALLTYPE *CreateAutoApplyQuota)(
+        IFsrmQuotaManager* This,
+        BSTR quotaTemplateName,
+        BSTR path,
+        IFsrmAutoApplyQuota **quota);
+
+    HRESULT (STDMETHODCALLTYPE *GetQuota)(
+        IFsrmQuotaManager* This,
+        BSTR path,
+        IFsrmQuota **quota);
+
+    HRESULT (STDMETHODCALLTYPE *GetAutoApplyQuota)(
+        IFsrmQuotaManager* This,
+        BSTR path,
+        IFsrmAutoApplyQuota **quota);
+
+    HRESULT (STDMETHODCALLTYPE *GetRestrictiveQuota)(
+        IFsrmQuotaManager* This,
+        BSTR path,
+        IFsrmQuota **quota);
+
+    HRESULT (STDMETHODCALLTYPE *EnumQuotas)(
+        IFsrmQuotaManager* This,
+        BSTR path,
+        FsrmEnumOptions options,
+        IFsrmCommittableCollection **quotas);
+
+    HRESULT (STDMETHODCALLTYPE *EnumAutoApplyQuotas)(
+        IFsrmQuotaManager* This,
+        BSTR path,
+        FsrmEnumOptions options,
+        IFsrmCommittableCollection **quotas);
+
+    HRESULT (STDMETHODCALLTYPE *EnumEffectiveQuotas)(
+        IFsrmQuotaManager* This,
+        BSTR path,
+        FsrmEnumOptions options,
+        IFsrmCommittableCollection **quotas);
+
+    HRESULT (STDMETHODCALLTYPE *Scan)(
+        IFsrmQuotaManager* This,
+        BSTR strPath);
+
+    HRESULT (STDMETHODCALLTYPE *CreateQuotaCollection)(
+        IFsrmQuotaManager* This,
+        IFsrmCommittableCollection **collection);
 
     END_INTERFACE
+} IFsrmQuotaManagerVtbl;
+interface IFsrmQuotaManager {
+    CONST_VTBL IFsrmQuotaManagerVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
-#define IFsrmQuotaBase_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IFsrmQuotaBase_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IFsrmQuotaBase_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmQuotaBase_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IFsrmQuotaBase_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IFsrmQuotaBase_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IFsrmQuotaBase_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IFsrmQuotaBase_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
-#define IFsrmQuotaBase_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
-#define IFsrmQuotaBase_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
-#define IFsrmQuotaBase_Delete() (This)->lpVtbl->Delete(This)
-#define IFsrmQuotaBase_Commit() (This)->lpVtbl->Commit(This)
-#define IFsrmQuotaBase_get_QuotaLimit(This,quotaLimit) (This)->lpVtbl->get_QuotaLimit(This,quotaLimit)
-#define IFsrmQuotaBase_put_QuotaLimit(This,quotaLimit) (This)->lpVtbl->put_QuotaLimit(This,quotaLimit)
-#define IFsrmQuotaBase_get_QuotaFlags(This,quotaFlags) (This)->lpVtbl->get_QuotaFlags(This,quotaFlags)
-#define IFsrmQuotaBase_put_QuotaFlags(This,quotaFlags) (This)->lpVtbl->put_QuotaFlags(This,quotaFlags)
-#define IFsrmQuotaBase_get_Thresholds(This,thresholds) (This)->lpVtbl->get_Thresholds(This,thresholds)
-#define IFsrmQuotaBase_AddThreshold(This,threshold) (This)->lpVtbl->AddThreshold(This,threshold)
-#define IFsrmQuotaBase_DeleteThreshold(This,threshold) (This)->lpVtbl->DeleteThreshold(This,threshold)
-#define IFsrmQuotaBase_ModifyThreshold(This,threshold,newThreshold) (This)->lpVtbl->ModifyThreshold(This,threshold,newThreshold)
-#define IFsrmQuotaBase_CreateThresholdAction(This,threshold,actionType,action) (This)->lpVtbl->CreateThresholdAction(This,threshold,actionType,action)
-#define IFsrmQuotaBase_EnumThresholdActions(This,threshold,actions) (This)->lpVtbl->EnumThresholdActions(This,threshold,actions)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmQuotaObject
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IFsrmQuotaObject,IFsrmQuotaBase)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
-
-    /* IFsrmObject methods */
-    STDMETHOD_(HRESULT,get_Id)(THIS_ FSRM_OBJECT_ID *id) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *description) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR description) PURE;
-    STDMETHOD_(HRESULT,Delete)(THIS) PURE;
-    STDMETHOD_(HRESULT,Commit)(THIS) PURE;
-
-    /* IFsrmQuotaBase methods */
-    STDMETHOD_(HRESULT,get_QuotaLimit)(THIS_ VARIANT *quotaLimit) PURE;
-    STDMETHOD_(HRESULT,put_QuotaLimit)(THIS_ VARIANT quotaLimit) PURE;
-    STDMETHOD_(HRESULT,get_QuotaFlags)(THIS_ __LONG32 *quotaFlags) PURE;
-    STDMETHOD_(HRESULT,put_QuotaFlags)(THIS_ __LONG32 quotaFlags) PURE;
-    STDMETHOD_(HRESULT,get_Thresholds)(THIS_ SAFEARRAY *thresholds) PURE;
-    STDMETHOD_(HRESULT,AddThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold) PURE;
-    STDMETHOD_(HRESULT,DeleteThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold) PURE;
-    STDMETHOD_(HRESULT,ModifyThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold,FSRM_QUOTA_THRESHOLD newThreshold) PURE;
-    STDMETHOD_(HRESULT,CreateThresholdAction)(THIS_ FSRM_QUOTA_THRESHOLD threshold,FsrmActionType actionType,IFsrmAction **action) PURE;
-    STDMETHOD_(HRESULT,EnumThresholdActions)(THIS_ FSRM_QUOTA_THRESHOLD threshold,IFsrmCollection **actions) PURE;
-
-    /* IFsrmQuotaObject methods */
-    STDMETHOD_(HRESULT,get_Path)(THIS_ BSTR *path) PURE;
-    STDMETHOD_(HRESULT,get_UserSid)(THIS_ BSTR *userSid) PURE;
-    STDMETHOD_(HRESULT,get_UserAccount)(THIS_ BSTR *userAccount) PURE;
-    STDMETHOD_(HRESULT,get_SourceTemplateName)(THIS_ BSTR *quotaTemplateName) PURE;
-    STDMETHOD_(HRESULT,get_MatchesSourceTemplate)(THIS_ VARIANT_BOOL *matches) PURE;
-    STDMETHOD_(HRESULT,ApplyTemplate)(THIS_ BSTR quotaTemplateName) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IFsrmQuotaObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IFsrmQuotaObject_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IFsrmQuotaObject_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmQuotaObject_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IFsrmQuotaObject_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IFsrmQuotaObject_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IFsrmQuotaObject_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IFsrmQuotaObject_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
-#define IFsrmQuotaObject_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
-#define IFsrmQuotaObject_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
-#define IFsrmQuotaObject_Delete() (This)->lpVtbl->Delete(This)
-#define IFsrmQuotaObject_Commit() (This)->lpVtbl->Commit(This)
-#define IFsrmQuotaObject_get_QuotaLimit(This,quotaLimit) (This)->lpVtbl->get_QuotaLimit(This,quotaLimit)
-#define IFsrmQuotaObject_put_QuotaLimit(This,quotaLimit) (This)->lpVtbl->put_QuotaLimit(This,quotaLimit)
-#define IFsrmQuotaObject_get_QuotaFlags(This,quotaFlags) (This)->lpVtbl->get_QuotaFlags(This,quotaFlags)
-#define IFsrmQuotaObject_put_QuotaFlags(This,quotaFlags) (This)->lpVtbl->put_QuotaFlags(This,quotaFlags)
-#define IFsrmQuotaObject_get_Thresholds(This,thresholds) (This)->lpVtbl->get_Thresholds(This,thresholds)
-#define IFsrmQuotaObject_AddThreshold(This,threshold) (This)->lpVtbl->AddThreshold(This,threshold)
-#define IFsrmQuotaObject_DeleteThreshold(This,threshold) (This)->lpVtbl->DeleteThreshold(This,threshold)
-#define IFsrmQuotaObject_ModifyThreshold(This,threshold,newThreshold) (This)->lpVtbl->ModifyThreshold(This,threshold,newThreshold)
-#define IFsrmQuotaObject_CreateThresholdAction(This,threshold,actionType,action) (This)->lpVtbl->CreateThresholdAction(This,threshold,actionType,action)
-#define IFsrmQuotaObject_EnumThresholdActions(This,threshold,actions) (This)->lpVtbl->EnumThresholdActions(This,threshold,actions)
-#define IFsrmQuotaObject_get_Path(This,path) (This)->lpVtbl->get_Path(This,path)
-#define IFsrmQuotaObject_get_UserSid(This,userSid) (This)->lpVtbl->get_UserSid(This,userSid)
-#define IFsrmQuotaObject_get_UserAccount(This,userAccount) (This)->lpVtbl->get_UserAccount(This,userAccount)
-#define IFsrmQuotaObject_get_SourceTemplateName(This,quotaTemplateName) (This)->lpVtbl->get_SourceTemplateName(This,quotaTemplateName)
-#define IFsrmQuotaObject_get_MatchesSourceTemplate(This,matches) (This)->lpVtbl->get_MatchesSourceTemplate(This,matches)
-#define IFsrmQuotaObject_ApplyTemplate(This,quotaTemplateName) (This)->lpVtbl->ApplyTemplate(This,quotaTemplateName)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmAutoApplyQuota
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IFsrmAutoApplyQuota,IFsrmQuotaObject)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
-
-    /* IFsrmObject methods */
-    STDMETHOD_(HRESULT,get_Id)(THIS_ FSRM_OBJECT_ID *id) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *description) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR description) PURE;
-    STDMETHOD_(HRESULT,Delete)(THIS) PURE;
-    STDMETHOD_(HRESULT,Commit)(THIS) PURE;
-
-    /* IFsrmQuotaBase methods */
-    STDMETHOD_(HRESULT,get_QuotaLimit)(THIS_ VARIANT *quotaLimit) PURE;
-    STDMETHOD_(HRESULT,put_QuotaLimit)(THIS_ VARIANT quotaLimit) PURE;
-    STDMETHOD_(HRESULT,get_QuotaFlags)(THIS_ __LONG32 *quotaFlags) PURE;
-    STDMETHOD_(HRESULT,put_QuotaFlags)(THIS_ __LONG32 quotaFlags) PURE;
-    STDMETHOD_(HRESULT,get_Thresholds)(THIS_ SAFEARRAY *thresholds) PURE;
-    STDMETHOD_(HRESULT,AddThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold) PURE;
-    STDMETHOD_(HRESULT,DeleteThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold) PURE;
-    STDMETHOD_(HRESULT,ModifyThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold,FSRM_QUOTA_THRESHOLD newThreshold) PURE;
-    STDMETHOD_(HRESULT,CreateThresholdAction)(THIS_ FSRM_QUOTA_THRESHOLD threshold,FsrmActionType actionType,IFsrmAction **action) PURE;
-    STDMETHOD_(HRESULT,EnumThresholdActions)(THIS_ FSRM_QUOTA_THRESHOLD threshold,IFsrmCollection **actions) PURE;
-
-    /* IFsrmQuotaObject methods */
-    STDMETHOD_(HRESULT,get_Path)(THIS_ BSTR *path) PURE;
-    STDMETHOD_(HRESULT,get_UserSid)(THIS_ BSTR *userSid) PURE;
-    STDMETHOD_(HRESULT,get_UserAccount)(THIS_ BSTR *userAccount) PURE;
-    STDMETHOD_(HRESULT,get_SourceTemplateName)(THIS_ BSTR *quotaTemplateName) PURE;
-    STDMETHOD_(HRESULT,get_MatchesSourceTemplate)(THIS_ VARIANT_BOOL *matches) PURE;
-    STDMETHOD_(HRESULT,ApplyTemplate)(THIS_ BSTR quotaTemplateName) PURE;
-
-    /* IFsrmAutoApplyQuota methods */
-    STDMETHOD_(HRESULT,get_ExcludeFolders)(THIS_ SAFEARRAY **folders) PURE;
-    STDMETHOD_(HRESULT,put_ExcludeFolders)(THIS_ SAFEARRAY *folders) PURE;
-    STDMETHOD_(HRESULT,CommitAndUpdateDerived)(THIS_ FsrmCommitOptions commitOptions,FsrmTemplateApplyOptions applyOptions,IFsrmDerivedObjectsResult **derivedObjectsResult) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IFsrmAutoApplyQuota_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IFsrmAutoApplyQuota_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IFsrmAutoApplyQuota_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmAutoApplyQuota_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IFsrmAutoApplyQuota_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IFsrmAutoApplyQuota_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IFsrmAutoApplyQuota_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IFsrmAutoApplyQuota_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
-#define IFsrmAutoApplyQuota_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
-#define IFsrmAutoApplyQuota_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
-#define IFsrmAutoApplyQuota_Delete() (This)->lpVtbl->Delete(This)
-#define IFsrmAutoApplyQuota_Commit() (This)->lpVtbl->Commit(This)
-#define IFsrmAutoApplyQuota_get_QuotaLimit(This,quotaLimit) (This)->lpVtbl->get_QuotaLimit(This,quotaLimit)
-#define IFsrmAutoApplyQuota_put_QuotaLimit(This,quotaLimit) (This)->lpVtbl->put_QuotaLimit(This,quotaLimit)
-#define IFsrmAutoApplyQuota_get_QuotaFlags(This,quotaFlags) (This)->lpVtbl->get_QuotaFlags(This,quotaFlags)
-#define IFsrmAutoApplyQuota_put_QuotaFlags(This,quotaFlags) (This)->lpVtbl->put_QuotaFlags(This,quotaFlags)
-#define IFsrmAutoApplyQuota_get_Thresholds(This,thresholds) (This)->lpVtbl->get_Thresholds(This,thresholds)
-#define IFsrmAutoApplyQuota_AddThreshold(This,threshold) (This)->lpVtbl->AddThreshold(This,threshold)
-#define IFsrmAutoApplyQuota_DeleteThreshold(This,threshold) (This)->lpVtbl->DeleteThreshold(This,threshold)
-#define IFsrmAutoApplyQuota_ModifyThreshold(This,threshold,newThreshold) (This)->lpVtbl->ModifyThreshold(This,threshold,newThreshold)
-#define IFsrmAutoApplyQuota_CreateThresholdAction(This,threshold,actionType,action) (This)->lpVtbl->CreateThresholdAction(This,threshold,actionType,action)
-#define IFsrmAutoApplyQuota_EnumThresholdActions(This,threshold,actions) (This)->lpVtbl->EnumThresholdActions(This,threshold,actions)
-#define IFsrmAutoApplyQuota_get_Path(This,path) (This)->lpVtbl->get_Path(This,path)
-#define IFsrmAutoApplyQuota_get_UserSid(This,userSid) (This)->lpVtbl->get_UserSid(This,userSid)
-#define IFsrmAutoApplyQuota_get_UserAccount(This,userAccount) (This)->lpVtbl->get_UserAccount(This,userAccount)
-#define IFsrmAutoApplyQuota_get_SourceTemplateName(This,quotaTemplateName) (This)->lpVtbl->get_SourceTemplateName(This,quotaTemplateName)
-#define IFsrmAutoApplyQuota_get_MatchesSourceTemplate(This,matches) (This)->lpVtbl->get_MatchesSourceTemplate(This,matches)
-#define IFsrmAutoApplyQuota_ApplyTemplate(This,quotaTemplateName) (This)->lpVtbl->ApplyTemplate(This,quotaTemplateName)
-#define IFsrmAutoApplyQuota_get_ExcludeFolders(This,folders) (This)->lpVtbl->get_ExcludeFolders(This,folders)
-#define IFsrmAutoApplyQuota_put_ExcludeFolders(This,folders) (This)->lpVtbl->put_ExcludeFolders(This,folders)
-#define IFsrmAutoApplyQuota_CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult) (This)->lpVtbl->CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmQuota
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IFsrmQuota,IFsrmQuotaObject)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
-
-    /* IFsrmObject methods */
-    STDMETHOD_(HRESULT,get_Id)(THIS_ FSRM_OBJECT_ID *id) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *description) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR description) PURE;
-    STDMETHOD_(HRESULT,Delete)(THIS) PURE;
-    STDMETHOD_(HRESULT,Commit)(THIS) PURE;
-
-    /* IFsrmQuotaBase methods */
-    STDMETHOD_(HRESULT,get_QuotaLimit)(THIS_ VARIANT *quotaLimit) PURE;
-    STDMETHOD_(HRESULT,put_QuotaLimit)(THIS_ VARIANT quotaLimit) PURE;
-    STDMETHOD_(HRESULT,get_QuotaFlags)(THIS_ __LONG32 *quotaFlags) PURE;
-    STDMETHOD_(HRESULT,put_QuotaFlags)(THIS_ __LONG32 quotaFlags) PURE;
-    STDMETHOD_(HRESULT,get_Thresholds)(THIS_ SAFEARRAY *thresholds) PURE;
-    STDMETHOD_(HRESULT,AddThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold) PURE;
-    STDMETHOD_(HRESULT,DeleteThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold) PURE;
-    STDMETHOD_(HRESULT,ModifyThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold,FSRM_QUOTA_THRESHOLD newThreshold) PURE;
-    STDMETHOD_(HRESULT,CreateThresholdAction)(THIS_ FSRM_QUOTA_THRESHOLD threshold,FsrmActionType actionType,IFsrmAction **action) PURE;
-    STDMETHOD_(HRESULT,EnumThresholdActions)(THIS_ FSRM_QUOTA_THRESHOLD threshold,IFsrmCollection **actions) PURE;
-
-    /* IFsrmQuota methods */
-    STDMETHOD_(HRESULT,get_QuotaUsed)(THIS_ VARIANT *used) PURE;
-    STDMETHOD_(HRESULT,get_QuotaPeakUsage)(THIS_ VARIANT *peakUsage) PURE;
-    STDMETHOD_(HRESULT,get_QuotaPeakUsageTime)(THIS_ DATE *peakUsageDateTime) PURE;
-    STDMETHOD_(HRESULT,ResetPeakUsage)(THIS) PURE;
-    STDMETHOD_(HRESULT,RefreshUsageProperties)(THIS) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IFsrmQuota_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IFsrmQuota_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IFsrmQuota_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmQuota_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IFsrmQuota_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IFsrmQuota_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IFsrmQuota_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IFsrmQuota_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
-#define IFsrmQuota_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
-#define IFsrmQuota_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
-#define IFsrmQuota_Delete() (This)->lpVtbl->Delete(This)
-#define IFsrmQuota_Commit() (This)->lpVtbl->Commit(This)
-#define IFsrmQuota_get_QuotaLimit(This,quotaLimit) (This)->lpVtbl->get_QuotaLimit(This,quotaLimit)
-#define IFsrmQuota_put_QuotaLimit(This,quotaLimit) (This)->lpVtbl->put_QuotaLimit(This,quotaLimit)
-#define IFsrmQuota_get_QuotaFlags(This,quotaFlags) (This)->lpVtbl->get_QuotaFlags(This,quotaFlags)
-#define IFsrmQuota_put_QuotaFlags(This,quotaFlags) (This)->lpVtbl->put_QuotaFlags(This,quotaFlags)
-#define IFsrmQuota_get_Thresholds(This,thresholds) (This)->lpVtbl->get_Thresholds(This,thresholds)
-#define IFsrmQuota_AddThreshold(This,threshold) (This)->lpVtbl->AddThreshold(This,threshold)
-#define IFsrmQuota_DeleteThreshold(This,threshold) (This)->lpVtbl->DeleteThreshold(This,threshold)
-#define IFsrmQuota_ModifyThreshold(This,threshold,newThreshold) (This)->lpVtbl->ModifyThreshold(This,threshold,newThreshold)
-#define IFsrmQuota_CreateThresholdAction(This,threshold,actionType,action) (This)->lpVtbl->CreateThresholdAction(This,threshold,actionType,action)
-#define IFsrmQuota_EnumThresholdActions(This,threshold,actions) (This)->lpVtbl->EnumThresholdActions(This,threshold,actions)
-#define IFsrmQuota_get_Path(This,path) (This)->lpVtbl->get_Path(This,path)
-#define IFsrmQuota_get_UserSid(This,userSid) (This)->lpVtbl->get_UserSid(This,userSid)
-#define IFsrmQuota_get_UserAccount(This,userAccount) (This)->lpVtbl->get_UserAccount(This,userAccount)
-#define IFsrmQuota_get_SourceTemplateName(This,quotaTemplateName) (This)->lpVtbl->get_SourceTemplateName(This,quotaTemplateName)
-#define IFsrmQuota_get_MatchesSourceTemplate(This,matches) (This)->lpVtbl->get_MatchesSourceTemplate(This,matches)
-#define IFsrmQuota_ApplyTemplate(This,quotaTemplateName) (This)->lpVtbl->ApplyTemplate(This,quotaTemplateName)
-#define IFsrmQuota_get_QuotaUsed(This,used) (This)->lpVtbl->get_QuotaUsed(This,used)
-#define IFsrmQuota_get_QuotaPeakUsage(This,peakUsage) (This)->lpVtbl->get_QuotaPeakUsage(This,peakUsage)
-#define IFsrmQuota_get_QuotaPeakUsageTime(This,peakUsageDateTime) (This)->lpVtbl->get_QuotaPeakUsageTime(This,peakUsageDateTime)
-#define IFsrmQuota_ResetPeakUsage() (This)->lpVtbl->ResetPeakUsage(This)
-#define IFsrmQuota_RefreshUsageProperties() (This)->lpVtbl->RefreshUsageProperties(This)
-#endif /*COBJMACROS*/
-
-
-#undef  INTERFACE
-#define INTERFACE IFsrmQuotaTemplate
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IFsrmQuotaTemplate,IFsrmQuotaBase)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
-
-    /* IFsrmObject methods */
-    STDMETHOD_(HRESULT,get_Id)(THIS_ FSRM_OBJECT_ID *id) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *description) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR description) PURE;
-    STDMETHOD_(HRESULT,Delete)(THIS) PURE;
-    STDMETHOD_(HRESULT,Commit)(THIS) PURE;
-
-    /* IFsrmQuotaBase methods */
-    STDMETHOD_(HRESULT,get_QuotaLimit)(THIS_ VARIANT *quotaLimit) PURE;
-    STDMETHOD_(HRESULT,put_QuotaLimit)(THIS_ VARIANT quotaLimit) PURE;
-    STDMETHOD_(HRESULT,get_QuotaFlags)(THIS_ __LONG32 *quotaFlags) PURE;
-    STDMETHOD_(HRESULT,put_QuotaFlags)(THIS_ __LONG32 quotaFlags) PURE;
-    STDMETHOD_(HRESULT,get_Thresholds)(THIS_ SAFEARRAY *thresholds) PURE;
-    STDMETHOD_(HRESULT,AddThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold) PURE;
-    STDMETHOD_(HRESULT,DeleteThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold) PURE;
-    STDMETHOD_(HRESULT,ModifyThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold,FSRM_QUOTA_THRESHOLD newThreshold) PURE;
-    STDMETHOD_(HRESULT,CreateThresholdAction)(THIS_ FSRM_QUOTA_THRESHOLD threshold,FsrmActionType actionType,IFsrmAction **action) PURE;
-    STDMETHOD_(HRESULT,EnumThresholdActions)(THIS_ FSRM_QUOTA_THRESHOLD threshold,IFsrmCollection **actions) PURE;
-
-    /* IFsrmQuotaTemplate methods */
-    STDMETHOD_(HRESULT,get_Name)(THIS_ BSTR *name) PURE;
-    STDMETHOD_(HRESULT,put_Name)(THIS_ BSTR name) PURE;
-    STDMETHOD_(HRESULT,CopyTemplate)(THIS_ BSTR quotaTemplateName) PURE;
-    STDMETHOD_(HRESULT,CommitAndUpdateDerived)(THIS_ FsrmCommitOptions commitOptions,FsrmTemplateApplyOptions applyOptions,IFsrmDerivedObjectsResult **derivedObjectsResult) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IFsrmQuotaTemplate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IFsrmQuotaTemplate_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IFsrmQuotaTemplate_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmQuotaTemplate_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IFsrmQuotaTemplate_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IFsrmQuotaTemplate_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IFsrmQuotaTemplate_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IFsrmQuotaTemplate_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
-#define IFsrmQuotaTemplate_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
-#define IFsrmQuotaTemplate_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
-#define IFsrmQuotaTemplate_Delete() (This)->lpVtbl->Delete(This)
-#define IFsrmQuotaTemplate_Commit() (This)->lpVtbl->Commit(This)
-#define IFsrmQuotaTemplate_get_QuotaLimit(This,quotaLimit) (This)->lpVtbl->get_QuotaLimit(This,quotaLimit)
-#define IFsrmQuotaTemplate_put_QuotaLimit(This,quotaLimit) (This)->lpVtbl->put_QuotaLimit(This,quotaLimit)
-#define IFsrmQuotaTemplate_get_QuotaFlags(This,quotaFlags) (This)->lpVtbl->get_QuotaFlags(This,quotaFlags)
-#define IFsrmQuotaTemplate_put_QuotaFlags(This,quotaFlags) (This)->lpVtbl->put_QuotaFlags(This,quotaFlags)
-#define IFsrmQuotaTemplate_get_Thresholds(This,thresholds) (This)->lpVtbl->get_Thresholds(This,thresholds)
-#define IFsrmQuotaTemplate_AddThreshold(This,threshold) (This)->lpVtbl->AddThreshold(This,threshold)
-#define IFsrmQuotaTemplate_DeleteThreshold(This,threshold) (This)->lpVtbl->DeleteThreshold(This,threshold)
-#define IFsrmQuotaTemplate_ModifyThreshold(This,threshold,newThreshold) (This)->lpVtbl->ModifyThreshold(This,threshold,newThreshold)
-#define IFsrmQuotaTemplate_CreateThresholdAction(This,threshold,actionType,action) (This)->lpVtbl->CreateThresholdAction(This,threshold,actionType,action)
-#define IFsrmQuotaTemplate_EnumThresholdActions(This,threshold,actions) (This)->lpVtbl->EnumThresholdActions(This,threshold,actions)
-#define IFsrmQuotaTemplate_get_Name(This,name) (This)->lpVtbl->get_Name(This,name)
-#define IFsrmQuotaTemplate_put_Name(This,name) (This)->lpVtbl->put_Name(This,name)
-#define IFsrmQuotaTemplate_CopyTemplate(This,quotaTemplateName) (This)->lpVtbl->CopyTemplate(This,quotaTemplateName)
-#define IFsrmQuotaTemplate_CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult) (This)->lpVtbl->CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmQuotaTemplateImported
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IFsrmQuotaTemplateImported,IFsrmQuotaTemplate)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
-
-    /* IFsrmObject methods */
-    STDMETHOD_(HRESULT,get_Id)(THIS_ FSRM_OBJECT_ID *id) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *description) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR description) PURE;
-    STDMETHOD_(HRESULT,Delete)(THIS) PURE;
-    STDMETHOD_(HRESULT,Commit)(THIS) PURE;
-
-    /* IFsrmQuotaBase methods */
-    STDMETHOD_(HRESULT,get_QuotaLimit)(THIS_ VARIANT *quotaLimit) PURE;
-    STDMETHOD_(HRESULT,put_QuotaLimit)(THIS_ VARIANT quotaLimit) PURE;
-    STDMETHOD_(HRESULT,get_QuotaFlags)(THIS_ __LONG32 *quotaFlags) PURE;
-    STDMETHOD_(HRESULT,put_QuotaFlags)(THIS_ __LONG32 quotaFlags) PURE;
-    STDMETHOD_(HRESULT,get_Thresholds)(THIS_ SAFEARRAY *thresholds) PURE;
-    STDMETHOD_(HRESULT,AddThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold) PURE;
-    STDMETHOD_(HRESULT,DeleteThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold) PURE;
-    STDMETHOD_(HRESULT,ModifyThreshold)(THIS_ FSRM_QUOTA_THRESHOLD threshold,FSRM_QUOTA_THRESHOLD newThreshold) PURE;
-    STDMETHOD_(HRESULT,CreateThresholdAction)(THIS_ FSRM_QUOTA_THRESHOLD threshold,FsrmActionType actionType,IFsrmAction **action) PURE;
-    STDMETHOD_(HRESULT,EnumThresholdActions)(THIS_ FSRM_QUOTA_THRESHOLD threshold,IFsrmCollection **actions) PURE;
-
-    /* IFsrmQuotaTemplate methods */
-    STDMETHOD_(HRESULT,get_Name)(THIS_ BSTR *name) PURE;
-    STDMETHOD_(HRESULT,put_Name)(THIS_ BSTR name) PURE;
-    STDMETHOD_(HRESULT,CopyTemplate)(THIS_ BSTR quotaTemplateName) PURE;
-    STDMETHOD_(HRESULT,CommitAndUpdateDerived)(THIS_ FsrmCommitOptions commitOptions,FsrmTemplateApplyOptions applyOptions,IFsrmDerivedObjectsResult **derivedObjectsResult) PURE;
-
-    /* IFsrmQuotaTemplateImported methods */
-    STDMETHOD_(HRESULT,get_OverwriteOnCommit)(THIS_ VARIANT_BOOL *overwrite) PURE;
-    STDMETHOD_(HRESULT,put_OverwriteOnCommit)(THIS_ VARIANT_BOOL overwrite) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IFsrmQuotaTemplateImported_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IFsrmQuotaTemplateImported_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IFsrmQuotaTemplateImported_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmQuotaTemplateImported_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IFsrmQuotaTemplateImported_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IFsrmQuotaTemplateImported_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IFsrmQuotaTemplateImported_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IFsrmQuotaTemplateImported_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
-#define IFsrmQuotaTemplateImported_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
-#define IFsrmQuotaTemplateImported_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
-#define IFsrmQuotaTemplateImported_Delete() (This)->lpVtbl->Delete(This)
-#define IFsrmQuotaTemplateImported_Commit() (This)->lpVtbl->Commit(This)
-#define IFsrmQuotaTemplateImported_get_QuotaLimit(This,quotaLimit) (This)->lpVtbl->get_QuotaLimit(This,quotaLimit)
-#define IFsrmQuotaTemplateImported_put_QuotaLimit(This,quotaLimit) (This)->lpVtbl->put_QuotaLimit(This,quotaLimit)
-#define IFsrmQuotaTemplateImported_get_QuotaFlags(This,quotaFlags) (This)->lpVtbl->get_QuotaFlags(This,quotaFlags)
-#define IFsrmQuotaTemplateImported_put_QuotaFlags(This,quotaFlags) (This)->lpVtbl->put_QuotaFlags(This,quotaFlags)
-#define IFsrmQuotaTemplateImported_get_Thresholds(This,thresholds) (This)->lpVtbl->get_Thresholds(This,thresholds)
-#define IFsrmQuotaTemplateImported_AddThreshold(This,threshold) (This)->lpVtbl->AddThreshold(This,threshold)
-#define IFsrmQuotaTemplateImported_DeleteThreshold(This,threshold) (This)->lpVtbl->DeleteThreshold(This,threshold)
-#define IFsrmQuotaTemplateImported_ModifyThreshold(This,threshold,newThreshold) (This)->lpVtbl->ModifyThreshold(This,threshold,newThreshold)
-#define IFsrmQuotaTemplateImported_CreateThresholdAction(This,threshold,actionType,action) (This)->lpVtbl->CreateThresholdAction(This,threshold,actionType,action)
-#define IFsrmQuotaTemplateImported_EnumThresholdActions(This,threshold,actions) (This)->lpVtbl->EnumThresholdActions(This,threshold,actions)
-#define IFsrmQuotaTemplateImported_get_Name(This,name) (This)->lpVtbl->get_Name(This,name)
-#define IFsrmQuotaTemplateImported_put_Name(This,name) (This)->lpVtbl->put_Name(This,name)
-#define IFsrmQuotaTemplateImported_CopyTemplate(This,quotaTemplateName) (This)->lpVtbl->CopyTemplate(This,quotaTemplateName)
-#define IFsrmQuotaTemplateImported_CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult) (This)->lpVtbl->CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult)
-#define IFsrmQuotaTemplateImported_get_OverwriteOnCommit(This,overwrite) (This)->lpVtbl->get_OverwriteOnCommit(This,overwrite)
-#define IFsrmQuotaTemplateImported_put_OverwriteOnCommit(This,overwrite) (This)->lpVtbl->put_OverwriteOnCommit(This,overwrite)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmQuotaTemplateManager
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IFsrmQuotaTemplateManager,IDispatch)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
-
-    /* IFsrmQuotaTemplateManager methods */
-    STDMETHOD_(HRESULT,CreateTemplate)(THIS_ IFsrmQuotaTemplate **quotaTemplate) PURE;
-    STDMETHOD_(HRESULT,GetTemplate)(THIS_ BSTR name,IFsrmQuotaTemplate **quotaTemplate) PURE;
-    STDMETHOD_(HRESULT,EnumTemplates)(THIS_ FsrmEnumOptions options,IFsrmCommittableCollection **quotaTemplates) PURE;
-    STDMETHOD_(HRESULT,ExportTemplates)(THIS_ VARIANT *quotaTemplateNamesArray,BSTR *serializedQuotaTemplates) PURE;
-    STDMETHOD_(HRESULT,ImportTemplates)(THIS_ BSTR serializedQuotaTemplates,VARIANT *quotaTemplateNamesArray,IFsrmCommittableCollection **quotaTemplates) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IFsrmQuotaTemplateManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IFsrmQuotaTemplateManager_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IFsrmQuotaTemplateManager_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmQuotaTemplateImported_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IFsrmQuotaTemplateImported_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IFsrmQuotaTemplateImported_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IFsrmQuotaTemplateImported_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IFsrmQuotaTemplateManager_CreateTemplate(This,quotaTemplate) (This)->lpVtbl->CreateTemplate(This,quotaTemplate)
-#define IFsrmQuotaTemplateManager_GetTemplate(This,name,quotaTemplate) (This)->lpVtbl->GetTemplate(This,name,quotaTemplate)
-#define IFsrmQuotaTemplateManager_EnumTemplates(This,options,quotaTemplates) (This)->lpVtbl->EnumTemplates(This,options,quotaTemplates)
-#define IFsrmQuotaTemplateManager_ExportTemplates(This,quotaTemplateNamesArray,serializedQuotaTemplates) (This)->lpVtbl->ExportTemplates(This,quotaTemplateNamesArray,serializedQuotaTemplates)
-#define IFsrmQuotaTemplateManager_ImportTemplates(This,serializedQuotaTemplates,quotaTemplateNamesArray,quotaTemplates) (This)->lpVtbl->ImportTemplates(This,serializedQuotaTemplates,quotaTemplateNamesArray,quotaTemplates)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmQuotaManager
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IFsrmQuotaManager,IDispatch)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
-
-    /* IFsrmQuotaManager methods */
-    STDMETHOD_(HRESULT,get_ActionVariables)(THIS_ SAFEARRAY *variables) PURE;
-    STDMETHOD_(HRESULT,get_ActionVariableDescriptions)(THIS_ SAFEARRAY *descriptions) PURE;
-    STDMETHOD_(HRESULT,CreateQuota)(THIS_ BSTR path,IFsrmQuota **quota) PURE;
-    STDMETHOD_(HRESULT,CreateAutoApplyQuota)(THIS_ BSTR quotaTemplateName,BSTR path,IFsrmAutoApplyQuota **quota) PURE;
-    STDMETHOD_(HRESULT,GetQuota)(THIS_ BSTR path,IFsrmQuota **quota) PURE;
-    STDMETHOD_(HRESULT,GetAutoApplyQuota)(THIS_ BSTR path,IFsrmAutoApplyQuota **quota) PURE;
-    STDMETHOD_(HRESULT,GetRestrictiveQuota)(THIS_ BSTR path,IFsrmQuota **quota) PURE;
-    STDMETHOD_(HRESULT,EnumQuotas)(THIS_ BSTR path,FsrmEnumOptions options,IFsrmCommittableCollection **quotas) PURE;
-    STDMETHOD_(HRESULT,EnumAutoApplyQuotas)(THIS_ BSTR path,FsrmEnumOptions options,IFsrmCommittableCollection **quotas) PURE;
-    STDMETHOD_(HRESULT,EnumEffectiveQuotas)(THIS_ BSTR path,FsrmEnumOptions options,IFsrmCommittableCollection **quotas) PURE;
-    STDMETHOD_(HRESULT,Scan)(THIS_ BSTR strPath) PURE;
-    STDMETHOD_(HRESULT,CreateQuotaCollection)(THIS_ IFsrmCommittableCollection **collection) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IFsrmQuotaManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IFsrmQuotaManager_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IFsrmQuotaManager_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define IFsrmQuotaManager_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define IFsrmQuotaManager_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define IFsrmQuotaManager_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define IFsrmQuotaManager_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmQuotaManager methods ***/
 #define IFsrmQuotaManager_get_ActionVariables(This,variables) (This)->lpVtbl->get_ActionVariables(This,variables)
 #define IFsrmQuotaManager_get_ActionVariableDescriptions(This,descriptions) (This)->lpVtbl->get_ActionVariableDescriptions(This,descriptions)
 #define IFsrmQuotaManager_CreateQuota(This,path,quota) (This)->lpVtbl->CreateQuota(This,path,quota)
@@ -868,57 +344,2330 @@
 #define IFsrmQuotaManager_EnumEffectiveQuotas(This,path,options,quotas) (This)->lpVtbl->EnumEffectiveQuotas(This,path,options,quotas)
 #define IFsrmQuotaManager_Scan(This,strPath) (This)->lpVtbl->Scan(This,strPath)
 #define IFsrmQuotaManager_CreateQuotaCollection(This,collection) (This)->lpVtbl->CreateQuotaCollection(This,collection)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmQuotaManagerEx
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaManager_QueryInterface(IFsrmQuotaManager* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmQuotaManager_AddRef(IFsrmQuotaManager* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmQuotaManager_Release(IFsrmQuotaManager* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaManager_GetTypeInfoCount(IFsrmQuotaManager* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManager_GetTypeInfo(IFsrmQuotaManager* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManager_GetIDsOfNames(IFsrmQuotaManager* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManager_Invoke(IFsrmQuotaManager* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmQuotaManager methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaManager_get_ActionVariables(IFsrmQuotaManager* This,SAFEARRAY **variables) {
+    return This->lpVtbl->get_ActionVariables(This,variables);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManager_get_ActionVariableDescriptions(IFsrmQuotaManager* This,SAFEARRAY **descriptions) {
+    return This->lpVtbl->get_ActionVariableDescriptions(This,descriptions);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManager_CreateQuota(IFsrmQuotaManager* This,BSTR path,IFsrmQuota **quota) {
+    return This->lpVtbl->CreateQuota(This,path,quota);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManager_CreateAutoApplyQuota(IFsrmQuotaManager* This,BSTR quotaTemplateName,BSTR path,IFsrmAutoApplyQuota **quota) {
+    return This->lpVtbl->CreateAutoApplyQuota(This,quotaTemplateName,path,quota);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManager_GetQuota(IFsrmQuotaManager* This,BSTR path,IFsrmQuota **quota) {
+    return This->lpVtbl->GetQuota(This,path,quota);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManager_GetAutoApplyQuota(IFsrmQuotaManager* This,BSTR path,IFsrmAutoApplyQuota **quota) {
+    return This->lpVtbl->GetAutoApplyQuota(This,path,quota);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManager_GetRestrictiveQuota(IFsrmQuotaManager* This,BSTR path,IFsrmQuota **quota) {
+    return This->lpVtbl->GetRestrictiveQuota(This,path,quota);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManager_EnumQuotas(IFsrmQuotaManager* This,BSTR path,FsrmEnumOptions options,IFsrmCommittableCollection **quotas) {
+    return This->lpVtbl->EnumQuotas(This,path,options,quotas);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManager_EnumAutoApplyQuotas(IFsrmQuotaManager* This,BSTR path,FsrmEnumOptions options,IFsrmCommittableCollection **quotas) {
+    return This->lpVtbl->EnumAutoApplyQuotas(This,path,options,quotas);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManager_EnumEffectiveQuotas(IFsrmQuotaManager* This,BSTR path,FsrmEnumOptions options,IFsrmCommittableCollection **quotas) {
+    return This->lpVtbl->EnumEffectiveQuotas(This,path,options,quotas);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManager_Scan(IFsrmQuotaManager* This,BSTR strPath) {
+    return This->lpVtbl->Scan(This,strPath);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManager_CreateQuotaCollection(IFsrmQuotaManager* This,IFsrmCommittableCollection **collection) {
+    return This->lpVtbl->CreateQuotaCollection(This,collection);
+}
 #endif
-DECLARE_INTERFACE_(IFsrmQuotaManagerEx,IFsrmQuotaManager)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmQuotaManager_get_ActionVariables_Proxy(
+    IFsrmQuotaManager* This,
+    SAFEARRAY **variables);
+void __RPC_STUB IFsrmQuotaManager_get_ActionVariables_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaManager_get_ActionVariableDescriptions_Proxy(
+    IFsrmQuotaManager* This,
+    SAFEARRAY **descriptions);
+void __RPC_STUB IFsrmQuotaManager_get_ActionVariableDescriptions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaManager_CreateQuota_Proxy(
+    IFsrmQuotaManager* This,
+    BSTR path,
+    IFsrmQuota **quota);
+void __RPC_STUB IFsrmQuotaManager_CreateQuota_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaManager_CreateAutoApplyQuota_Proxy(
+    IFsrmQuotaManager* This,
+    BSTR quotaTemplateName,
+    BSTR path,
+    IFsrmAutoApplyQuota **quota);
+void __RPC_STUB IFsrmQuotaManager_CreateAutoApplyQuota_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaManager_GetQuota_Proxy(
+    IFsrmQuotaManager* This,
+    BSTR path,
+    IFsrmQuota **quota);
+void __RPC_STUB IFsrmQuotaManager_GetQuota_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaManager_GetAutoApplyQuota_Proxy(
+    IFsrmQuotaManager* This,
+    BSTR path,
+    IFsrmAutoApplyQuota **quota);
+void __RPC_STUB IFsrmQuotaManager_GetAutoApplyQuota_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaManager_GetRestrictiveQuota_Proxy(
+    IFsrmQuotaManager* This,
+    BSTR path,
+    IFsrmQuota **quota);
+void __RPC_STUB IFsrmQuotaManager_GetRestrictiveQuota_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaManager_EnumQuotas_Proxy(
+    IFsrmQuotaManager* This,
+    BSTR path,
+    FsrmEnumOptions options,
+    IFsrmCommittableCollection **quotas);
+void __RPC_STUB IFsrmQuotaManager_EnumQuotas_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaManager_EnumAutoApplyQuotas_Proxy(
+    IFsrmQuotaManager* This,
+    BSTR path,
+    FsrmEnumOptions options,
+    IFsrmCommittableCollection **quotas);
+void __RPC_STUB IFsrmQuotaManager_EnumAutoApplyQuotas_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaManager_EnumEffectiveQuotas_Proxy(
+    IFsrmQuotaManager* This,
+    BSTR path,
+    FsrmEnumOptions options,
+    IFsrmCommittableCollection **quotas);
+void __RPC_STUB IFsrmQuotaManager_EnumEffectiveQuotas_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaManager_Scan_Proxy(
+    IFsrmQuotaManager* This,
+    BSTR strPath);
+void __RPC_STUB IFsrmQuotaManager_Scan_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaManager_CreateQuotaCollection_Proxy(
+    IFsrmQuotaManager* This,
+    IFsrmCommittableCollection **collection);
+void __RPC_STUB IFsrmQuotaManager_CreateQuotaCollection_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmQuotaManager_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmQuotaTemplateManager interface
+ */
+#ifndef __IFsrmQuotaTemplateManager_INTERFACE_DEFINED__
+#define __IFsrmQuotaTemplateManager_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmQuotaTemplateManager, 0x4173ac41, 0x172d, 0x4d52, 0x96,0x3c, 0xfd,0xc7,0xe4,0x15,0xf7,0x17);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("4173ac41-172d-4d52-963c-fdc7e415f717")
+IFsrmQuotaTemplateManager : public IDispatch
 {
+    virtual HRESULT STDMETHODCALLTYPE CreateTemplate(
+        IFsrmQuotaTemplate **quotaTemplate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTemplate(
+        BSTR name = L"",
+        IFsrmQuotaTemplate **quotaTemplate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumTemplates(
+        FsrmEnumOptions options = FsrmEnumOptions_None,
+        IFsrmCommittableCollection **quotaTemplates) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ExportTemplates(
+        VARIANT *quotaTemplateNamesArray = 0,
+        BSTR *serializedQuotaTemplates) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ImportTemplates(
+        BSTR serializedQuotaTemplates,
+        VARIANT *quotaTemplateNamesArray = 0,
+        IFsrmCommittableCollection **quotaTemplates) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmQuotaTemplateManager, 0x4173ac41, 0x172d, 0x4d52, 0x96,0x3c, 0xfd,0xc7,0xe4,0x15,0xf7,0x17)
+#endif
+#else
+typedef struct IFsrmQuotaTemplateManagerVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmQuotaTemplateManager* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmQuotaTemplateManager* This);
 
-    /* IFsrmQuotaManager methods */
-    STDMETHOD_(HRESULT,get_ActionVariables)(THIS_ SAFEARRAY *variables) PURE;
-    STDMETHOD_(HRESULT,get_ActionVariableDescriptions)(THIS_ SAFEARRAY *descriptions) PURE;
-    STDMETHOD_(HRESULT,CreateQuota)(THIS_ BSTR path,IFsrmQuota **quota) PURE;
-    STDMETHOD_(HRESULT,CreateAutoApplyQuota)(THIS_ BSTR quotaTemplateName,BSTR path,IFsrmAutoApplyQuota **quota) PURE;
-    STDMETHOD_(HRESULT,GetQuota)(THIS_ BSTR path,IFsrmQuota **quota) PURE;
-    STDMETHOD_(HRESULT,GetAutoApplyQuota)(THIS_ BSTR path,IFsrmAutoApplyQuota **quota) PURE;
-    STDMETHOD_(HRESULT,GetRestrictiveQuota)(THIS_ BSTR path,IFsrmQuota **quota) PURE;
-    STDMETHOD_(HRESULT,EnumQuotas)(THIS_ BSTR path,FsrmEnumOptions options,IFsrmCommittableCollection **quotas) PURE;
-    STDMETHOD_(HRESULT,EnumAutoApplyQuotas)(THIS_ BSTR path,FsrmEnumOptions options,IFsrmCommittableCollection **quotas) PURE;
-    STDMETHOD_(HRESULT,EnumEffectiveQuotas)(THIS_ BSTR path,FsrmEnumOptions options,IFsrmCommittableCollection **quotas) PURE;
-    STDMETHOD_(HRESULT,Scan)(THIS_ BSTR strPath) PURE;
-    STDMETHOD_(HRESULT,CreateQuotaCollection)(THIS_ IFsrmCommittableCollection **collection) PURE;
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmQuotaTemplateManager* This);
 
-    /* IFsrmQuotaManagerEx methods */
-    STDMETHOD_(HRESULT,IsAffectedByQuota)(THIS_ BSTR path,FsrmEnumOptions options,VARIANT_BOOL *affected) PURE;
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmQuotaTemplateManager* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmQuotaTemplateManager* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmQuotaTemplateManager* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmQuotaTemplateManager* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmQuotaTemplateManager methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateTemplate)(
+        IFsrmQuotaTemplateManager* This,
+        IFsrmQuotaTemplate **quotaTemplate);
+
+    HRESULT (STDMETHODCALLTYPE *GetTemplate)(
+        IFsrmQuotaTemplateManager* This,
+        BSTR name,
+        IFsrmQuotaTemplate **quotaTemplate);
+
+    HRESULT (STDMETHODCALLTYPE *EnumTemplates)(
+        IFsrmQuotaTemplateManager* This,
+        FsrmEnumOptions options,
+        IFsrmCommittableCollection **quotaTemplates);
+
+    HRESULT (STDMETHODCALLTYPE *ExportTemplates)(
+        IFsrmQuotaTemplateManager* This,
+        VARIANT *quotaTemplateNamesArray,
+        BSTR *serializedQuotaTemplates);
+
+    HRESULT (STDMETHODCALLTYPE *ImportTemplates)(
+        IFsrmQuotaTemplateManager* This,
+        BSTR serializedQuotaTemplates,
+        VARIANT *quotaTemplateNamesArray,
+        IFsrmCommittableCollection **quotaTemplates);
 
     END_INTERFACE
+} IFsrmQuotaTemplateManagerVtbl;
+interface IFsrmQuotaTemplateManager {
+    CONST_VTBL IFsrmQuotaTemplateManagerVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmQuotaTemplateManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmQuotaTemplateManager_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmQuotaTemplateManager_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmQuotaTemplateManager_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmQuotaTemplateManager_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmQuotaTemplateManager_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmQuotaTemplateManager_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmQuotaTemplateManager methods ***/
+#define IFsrmQuotaTemplateManager_CreateTemplate(This,quotaTemplate) (This)->lpVtbl->CreateTemplate(This,quotaTemplate)
+#define IFsrmQuotaTemplateManager_GetTemplate(This,name,quotaTemplate) (This)->lpVtbl->GetTemplate(This,name,quotaTemplate)
+#define IFsrmQuotaTemplateManager_EnumTemplates(This,options,quotaTemplates) (This)->lpVtbl->EnumTemplates(This,options,quotaTemplates)
+#define IFsrmQuotaTemplateManager_ExportTemplates(This,quotaTemplateNamesArray,serializedQuotaTemplates) (This)->lpVtbl->ExportTemplates(This,quotaTemplateNamesArray,serializedQuotaTemplates)
+#define IFsrmQuotaTemplateManager_ImportTemplates(This,serializedQuotaTemplates,quotaTemplateNamesArray,quotaTemplates) (This)->lpVtbl->ImportTemplates(This,serializedQuotaTemplates,quotaTemplateNamesArray,quotaTemplates)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaTemplateManager_QueryInterface(IFsrmQuotaTemplateManager* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmQuotaTemplateManager_AddRef(IFsrmQuotaTemplateManager* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmQuotaTemplateManager_Release(IFsrmQuotaTemplateManager* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaTemplateManager_GetTypeInfoCount(IFsrmQuotaTemplateManager* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateManager_GetTypeInfo(IFsrmQuotaTemplateManager* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateManager_GetIDsOfNames(IFsrmQuotaTemplateManager* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateManager_Invoke(IFsrmQuotaTemplateManager* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmQuotaTemplateManager methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaTemplateManager_CreateTemplate(IFsrmQuotaTemplateManager* This,IFsrmQuotaTemplate **quotaTemplate) {
+    return This->lpVtbl->CreateTemplate(This,quotaTemplate);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateManager_GetTemplate(IFsrmQuotaTemplateManager* This,BSTR name,IFsrmQuotaTemplate **quotaTemplate) {
+    return This->lpVtbl->GetTemplate(This,name,quotaTemplate);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateManager_EnumTemplates(IFsrmQuotaTemplateManager* This,FsrmEnumOptions options,IFsrmCommittableCollection **quotaTemplates) {
+    return This->lpVtbl->EnumTemplates(This,options,quotaTemplates);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateManager_ExportTemplates(IFsrmQuotaTemplateManager* This,VARIANT *quotaTemplateNamesArray,BSTR *serializedQuotaTemplates) {
+    return This->lpVtbl->ExportTemplates(This,quotaTemplateNamesArray,serializedQuotaTemplates);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateManager_ImportTemplates(IFsrmQuotaTemplateManager* This,BSTR serializedQuotaTemplates,VARIANT *quotaTemplateNamesArray,IFsrmCommittableCollection **quotaTemplates) {
+    return This->lpVtbl->ImportTemplates(This,serializedQuotaTemplates,quotaTemplateNamesArray,quotaTemplates);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmQuotaTemplateManager_CreateTemplate_Proxy(
+    IFsrmQuotaTemplateManager* This,
+    IFsrmQuotaTemplate **quotaTemplate);
+void __RPC_STUB IFsrmQuotaTemplateManager_CreateTemplate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaTemplateManager_GetTemplate_Proxy(
+    IFsrmQuotaTemplateManager* This,
+    BSTR name,
+    IFsrmQuotaTemplate **quotaTemplate);
+void __RPC_STUB IFsrmQuotaTemplateManager_GetTemplate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaTemplateManager_EnumTemplates_Proxy(
+    IFsrmQuotaTemplateManager* This,
+    FsrmEnumOptions options,
+    IFsrmCommittableCollection **quotaTemplates);
+void __RPC_STUB IFsrmQuotaTemplateManager_EnumTemplates_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaTemplateManager_ExportTemplates_Proxy(
+    IFsrmQuotaTemplateManager* This,
+    VARIANT *quotaTemplateNamesArray,
+    BSTR *serializedQuotaTemplates);
+void __RPC_STUB IFsrmQuotaTemplateManager_ExportTemplates_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaTemplateManager_ImportTemplates_Proxy(
+    IFsrmQuotaTemplateManager* This,
+    BSTR serializedQuotaTemplates,
+    VARIANT *quotaTemplateNamesArray,
+    IFsrmCommittableCollection **quotaTemplates);
+void __RPC_STUB IFsrmQuotaTemplateManager_ImportTemplates_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmQuotaTemplateManager_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmQuotaBase interface
+ */
+#ifndef __IFsrmQuotaBase_INTERFACE_DEFINED__
+#define __IFsrmQuotaBase_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmQuotaBase, 0x1568a795, 0x3924, 0x4118, 0xb7,0x4b, 0x68,0xd8,0xf0,0xfa,0x5d,0xaf);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("1568a795-3924-4118-b74b-68d8f0fa5daf")
+IFsrmQuotaBase : public IFsrmObject
+{
+    virtual HRESULT STDMETHODCALLTYPE get_QuotaLimit(
+        VARIANT *quotaLimit) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_QuotaLimit(
+        VARIANT quotaLimit) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_QuotaFlags(
+        LONG *quotaFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_QuotaFlags(
+        LONG quotaFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Thresholds(
+        SAFEARRAY **thresholds) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddThreshold(
+        FSRM_QUOTA_THRESHOLD threshold) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeleteThreshold(
+        FSRM_QUOTA_THRESHOLD threshold) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ModifyThreshold(
+        FSRM_QUOTA_THRESHOLD threshold,
+        FSRM_QUOTA_THRESHOLD newThreshold) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateThresholdAction(
+        FSRM_QUOTA_THRESHOLD threshold,
+        FsrmActionType actionType,
+        IFsrmAction **action) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumThresholdActions(
+        FSRM_QUOTA_THRESHOLD threshold,
+        IFsrmCollection **actions) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmQuotaBase, 0x1568a795, 0x3924, 0x4118, 0xb7,0x4b, 0x68,0xd8,0xf0,0xfa,0x5d,0xaf)
+#endif
+#else
+typedef struct IFsrmQuotaBaseVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmQuotaBase* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmQuotaBase* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmQuotaBase* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmQuotaBase* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmQuotaBase* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmQuotaBase* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmQuotaBase* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IFsrmQuotaBase* This,
+        FSRM_OBJECT_ID *id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IFsrmQuotaBase* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IFsrmQuotaBase* This,
+        BSTR description);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmQuotaBase* This);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IFsrmQuotaBase* This);
+
+    /*** IFsrmQuotaBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_QuotaLimit)(
+        IFsrmQuotaBase* This,
+        VARIANT *quotaLimit);
+
+    HRESULT (STDMETHODCALLTYPE *put_QuotaLimit)(
+        IFsrmQuotaBase* This,
+        VARIANT quotaLimit);
+
+    HRESULT (STDMETHODCALLTYPE *get_QuotaFlags)(
+        IFsrmQuotaBase* This,
+        LONG *quotaFlags);
+
+    HRESULT (STDMETHODCALLTYPE *put_QuotaFlags)(
+        IFsrmQuotaBase* This,
+        LONG quotaFlags);
+
+    HRESULT (STDMETHODCALLTYPE *get_Thresholds)(
+        IFsrmQuotaBase* This,
+        SAFEARRAY **thresholds);
+
+    HRESULT (STDMETHODCALLTYPE *AddThreshold)(
+        IFsrmQuotaBase* This,
+        FSRM_QUOTA_THRESHOLD threshold);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteThreshold)(
+        IFsrmQuotaBase* This,
+        FSRM_QUOTA_THRESHOLD threshold);
+
+    HRESULT (STDMETHODCALLTYPE *ModifyThreshold)(
+        IFsrmQuotaBase* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        FSRM_QUOTA_THRESHOLD newThreshold);
+
+    HRESULT (STDMETHODCALLTYPE *CreateThresholdAction)(
+        IFsrmQuotaBase* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        FsrmActionType actionType,
+        IFsrmAction **action);
+
+    HRESULT (STDMETHODCALLTYPE *EnumThresholdActions)(
+        IFsrmQuotaBase* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        IFsrmCollection **actions);
+
+    END_INTERFACE
+} IFsrmQuotaBaseVtbl;
+interface IFsrmQuotaBase {
+    CONST_VTBL IFsrmQuotaBaseVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmQuotaBase_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmQuotaBase_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmQuotaBase_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmQuotaBase_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmQuotaBase_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmQuotaBase_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmQuotaBase_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmObject methods ***/
+#define IFsrmQuotaBase_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
+#define IFsrmQuotaBase_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
+#define IFsrmQuotaBase_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
+#define IFsrmQuotaBase_Delete(This) (This)->lpVtbl->Delete(This)
+#define IFsrmQuotaBase_Commit(This) (This)->lpVtbl->Commit(This)
+/*** IFsrmQuotaBase methods ***/
+#define IFsrmQuotaBase_get_QuotaLimit(This,quotaLimit) (This)->lpVtbl->get_QuotaLimit(This,quotaLimit)
+#define IFsrmQuotaBase_put_QuotaLimit(This,quotaLimit) (This)->lpVtbl->put_QuotaLimit(This,quotaLimit)
+#define IFsrmQuotaBase_get_QuotaFlags(This,quotaFlags) (This)->lpVtbl->get_QuotaFlags(This,quotaFlags)
+#define IFsrmQuotaBase_put_QuotaFlags(This,quotaFlags) (This)->lpVtbl->put_QuotaFlags(This,quotaFlags)
+#define IFsrmQuotaBase_get_Thresholds(This,thresholds) (This)->lpVtbl->get_Thresholds(This,thresholds)
+#define IFsrmQuotaBase_AddThreshold(This,threshold) (This)->lpVtbl->AddThreshold(This,threshold)
+#define IFsrmQuotaBase_DeleteThreshold(This,threshold) (This)->lpVtbl->DeleteThreshold(This,threshold)
+#define IFsrmQuotaBase_ModifyThreshold(This,threshold,newThreshold) (This)->lpVtbl->ModifyThreshold(This,threshold,newThreshold)
+#define IFsrmQuotaBase_CreateThresholdAction(This,threshold,actionType,action) (This)->lpVtbl->CreateThresholdAction(This,threshold,actionType,action)
+#define IFsrmQuotaBase_EnumThresholdActions(This,threshold,actions) (This)->lpVtbl->EnumThresholdActions(This,threshold,actions)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaBase_QueryInterface(IFsrmQuotaBase* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmQuotaBase_AddRef(IFsrmQuotaBase* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmQuotaBase_Release(IFsrmQuotaBase* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaBase_GetTypeInfoCount(IFsrmQuotaBase* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmQuotaBase_GetTypeInfo(IFsrmQuotaBase* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmQuotaBase_GetIDsOfNames(IFsrmQuotaBase* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmQuotaBase_Invoke(IFsrmQuotaBase* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmObject methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaBase_get_Id(IFsrmQuotaBase* This,FSRM_OBJECT_ID *id) {
+    return This->lpVtbl->get_Id(This,id);
+}
+static FORCEINLINE HRESULT IFsrmQuotaBase_get_Description(IFsrmQuotaBase* This,BSTR *description) {
+    return This->lpVtbl->get_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmQuotaBase_put_Description(IFsrmQuotaBase* This,BSTR description) {
+    return This->lpVtbl->put_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmQuotaBase_Delete(IFsrmQuotaBase* This) {
+    return This->lpVtbl->Delete(This);
+}
+static FORCEINLINE HRESULT IFsrmQuotaBase_Commit(IFsrmQuotaBase* This) {
+    return This->lpVtbl->Commit(This);
+}
+/*** IFsrmQuotaBase methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaBase_get_QuotaLimit(IFsrmQuotaBase* This,VARIANT *quotaLimit) {
+    return This->lpVtbl->get_QuotaLimit(This,quotaLimit);
+}
+static FORCEINLINE HRESULT IFsrmQuotaBase_put_QuotaLimit(IFsrmQuotaBase* This,VARIANT quotaLimit) {
+    return This->lpVtbl->put_QuotaLimit(This,quotaLimit);
+}
+static FORCEINLINE HRESULT IFsrmQuotaBase_get_QuotaFlags(IFsrmQuotaBase* This,LONG *quotaFlags) {
+    return This->lpVtbl->get_QuotaFlags(This,quotaFlags);
+}
+static FORCEINLINE HRESULT IFsrmQuotaBase_put_QuotaFlags(IFsrmQuotaBase* This,LONG quotaFlags) {
+    return This->lpVtbl->put_QuotaFlags(This,quotaFlags);
+}
+static FORCEINLINE HRESULT IFsrmQuotaBase_get_Thresholds(IFsrmQuotaBase* This,SAFEARRAY **thresholds) {
+    return This->lpVtbl->get_Thresholds(This,thresholds);
+}
+static FORCEINLINE HRESULT IFsrmQuotaBase_AddThreshold(IFsrmQuotaBase* This,FSRM_QUOTA_THRESHOLD threshold) {
+    return This->lpVtbl->AddThreshold(This,threshold);
+}
+static FORCEINLINE HRESULT IFsrmQuotaBase_DeleteThreshold(IFsrmQuotaBase* This,FSRM_QUOTA_THRESHOLD threshold) {
+    return This->lpVtbl->DeleteThreshold(This,threshold);
+}
+static FORCEINLINE HRESULT IFsrmQuotaBase_ModifyThreshold(IFsrmQuotaBase* This,FSRM_QUOTA_THRESHOLD threshold,FSRM_QUOTA_THRESHOLD newThreshold) {
+    return This->lpVtbl->ModifyThreshold(This,threshold,newThreshold);
+}
+static FORCEINLINE HRESULT IFsrmQuotaBase_CreateThresholdAction(IFsrmQuotaBase* This,FSRM_QUOTA_THRESHOLD threshold,FsrmActionType actionType,IFsrmAction **action) {
+    return This->lpVtbl->CreateThresholdAction(This,threshold,actionType,action);
+}
+static FORCEINLINE HRESULT IFsrmQuotaBase_EnumThresholdActions(IFsrmQuotaBase* This,FSRM_QUOTA_THRESHOLD threshold,IFsrmCollection **actions) {
+    return This->lpVtbl->EnumThresholdActions(This,threshold,actions);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmQuotaBase_get_QuotaLimit_Proxy(
+    IFsrmQuotaBase* This,
+    VARIANT *quotaLimit);
+void __RPC_STUB IFsrmQuotaBase_get_QuotaLimit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaBase_put_QuotaLimit_Proxy(
+    IFsrmQuotaBase* This,
+    VARIANT quotaLimit);
+void __RPC_STUB IFsrmQuotaBase_put_QuotaLimit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaBase_get_QuotaFlags_Proxy(
+    IFsrmQuotaBase* This,
+    LONG *quotaFlags);
+void __RPC_STUB IFsrmQuotaBase_get_QuotaFlags_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaBase_put_QuotaFlags_Proxy(
+    IFsrmQuotaBase* This,
+    LONG quotaFlags);
+void __RPC_STUB IFsrmQuotaBase_put_QuotaFlags_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaBase_get_Thresholds_Proxy(
+    IFsrmQuotaBase* This,
+    SAFEARRAY **thresholds);
+void __RPC_STUB IFsrmQuotaBase_get_Thresholds_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaBase_AddThreshold_Proxy(
+    IFsrmQuotaBase* This,
+    FSRM_QUOTA_THRESHOLD threshold);
+void __RPC_STUB IFsrmQuotaBase_AddThreshold_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaBase_DeleteThreshold_Proxy(
+    IFsrmQuotaBase* This,
+    FSRM_QUOTA_THRESHOLD threshold);
+void __RPC_STUB IFsrmQuotaBase_DeleteThreshold_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaBase_ModifyThreshold_Proxy(
+    IFsrmQuotaBase* This,
+    FSRM_QUOTA_THRESHOLD threshold,
+    FSRM_QUOTA_THRESHOLD newThreshold);
+void __RPC_STUB IFsrmQuotaBase_ModifyThreshold_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaBase_CreateThresholdAction_Proxy(
+    IFsrmQuotaBase* This,
+    FSRM_QUOTA_THRESHOLD threshold,
+    FsrmActionType actionType,
+    IFsrmAction **action);
+void __RPC_STUB IFsrmQuotaBase_CreateThresholdAction_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaBase_EnumThresholdActions_Proxy(
+    IFsrmQuotaBase* This,
+    FSRM_QUOTA_THRESHOLD threshold,
+    IFsrmCollection **actions);
+void __RPC_STUB IFsrmQuotaBase_EnumThresholdActions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmQuotaBase_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmQuotaObject interface
+ */
+#ifndef __IFsrmQuotaObject_INTERFACE_DEFINED__
+#define __IFsrmQuotaObject_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmQuotaObject, 0x42dc3511, 0x61d5, 0x48ae, 0xb6,0xdc, 0x59,0xfc,0x00,0xc0,0xa8,0xd6);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("42dc3511-61d5-48ae-b6dc-59fc00c0a8d6")
+IFsrmQuotaObject : public IFsrmQuotaBase
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Path(
+        BSTR *path) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_UserSid(
+        BSTR *userSid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_UserAccount(
+        BSTR *userAccount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SourceTemplateName(
+        BSTR *quotaTemplateName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MatchesSourceTemplate(
+        VARIANT_BOOL *matches) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ApplyTemplate(
+        BSTR quotaTemplateName) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmQuotaObject, 0x42dc3511, 0x61d5, 0x48ae, 0xb6,0xdc, 0x59,0xfc,0x00,0xc0,0xa8,0xd6)
+#endif
+#else
+typedef struct IFsrmQuotaObjectVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmQuotaObject* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmQuotaObject* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmQuotaObject* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmQuotaObject* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmQuotaObject* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmQuotaObject* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmQuotaObject* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IFsrmQuotaObject* This,
+        FSRM_OBJECT_ID *id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IFsrmQuotaObject* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IFsrmQuotaObject* This,
+        BSTR description);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmQuotaObject* This);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IFsrmQuotaObject* This);
+
+    /*** IFsrmQuotaBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_QuotaLimit)(
+        IFsrmQuotaObject* This,
+        VARIANT *quotaLimit);
+
+    HRESULT (STDMETHODCALLTYPE *put_QuotaLimit)(
+        IFsrmQuotaObject* This,
+        VARIANT quotaLimit);
+
+    HRESULT (STDMETHODCALLTYPE *get_QuotaFlags)(
+        IFsrmQuotaObject* This,
+        LONG *quotaFlags);
+
+    HRESULT (STDMETHODCALLTYPE *put_QuotaFlags)(
+        IFsrmQuotaObject* This,
+        LONG quotaFlags);
+
+    HRESULT (STDMETHODCALLTYPE *get_Thresholds)(
+        IFsrmQuotaObject* This,
+        SAFEARRAY **thresholds);
+
+    HRESULT (STDMETHODCALLTYPE *AddThreshold)(
+        IFsrmQuotaObject* This,
+        FSRM_QUOTA_THRESHOLD threshold);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteThreshold)(
+        IFsrmQuotaObject* This,
+        FSRM_QUOTA_THRESHOLD threshold);
+
+    HRESULT (STDMETHODCALLTYPE *ModifyThreshold)(
+        IFsrmQuotaObject* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        FSRM_QUOTA_THRESHOLD newThreshold);
+
+    HRESULT (STDMETHODCALLTYPE *CreateThresholdAction)(
+        IFsrmQuotaObject* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        FsrmActionType actionType,
+        IFsrmAction **action);
+
+    HRESULT (STDMETHODCALLTYPE *EnumThresholdActions)(
+        IFsrmQuotaObject* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        IFsrmCollection **actions);
+
+    /*** IFsrmQuotaObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Path)(
+        IFsrmQuotaObject* This,
+        BSTR *path);
+
+    HRESULT (STDMETHODCALLTYPE *get_UserSid)(
+        IFsrmQuotaObject* This,
+        BSTR *userSid);
+
+    HRESULT (STDMETHODCALLTYPE *get_UserAccount)(
+        IFsrmQuotaObject* This,
+        BSTR *userAccount);
+
+    HRESULT (STDMETHODCALLTYPE *get_SourceTemplateName)(
+        IFsrmQuotaObject* This,
+        BSTR *quotaTemplateName);
+
+    HRESULT (STDMETHODCALLTYPE *get_MatchesSourceTemplate)(
+        IFsrmQuotaObject* This,
+        VARIANT_BOOL *matches);
+
+    HRESULT (STDMETHODCALLTYPE *ApplyTemplate)(
+        IFsrmQuotaObject* This,
+        BSTR quotaTemplateName);
+
+    END_INTERFACE
+} IFsrmQuotaObjectVtbl;
+interface IFsrmQuotaObject {
+    CONST_VTBL IFsrmQuotaObjectVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmQuotaObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmQuotaObject_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmQuotaObject_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmQuotaObject_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmQuotaObject_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmQuotaObject_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmQuotaObject_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmObject methods ***/
+#define IFsrmQuotaObject_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
+#define IFsrmQuotaObject_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
+#define IFsrmQuotaObject_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
+#define IFsrmQuotaObject_Delete(This) (This)->lpVtbl->Delete(This)
+#define IFsrmQuotaObject_Commit(This) (This)->lpVtbl->Commit(This)
+/*** IFsrmQuotaBase methods ***/
+#define IFsrmQuotaObject_get_QuotaLimit(This,quotaLimit) (This)->lpVtbl->get_QuotaLimit(This,quotaLimit)
+#define IFsrmQuotaObject_put_QuotaLimit(This,quotaLimit) (This)->lpVtbl->put_QuotaLimit(This,quotaLimit)
+#define IFsrmQuotaObject_get_QuotaFlags(This,quotaFlags) (This)->lpVtbl->get_QuotaFlags(This,quotaFlags)
+#define IFsrmQuotaObject_put_QuotaFlags(This,quotaFlags) (This)->lpVtbl->put_QuotaFlags(This,quotaFlags)
+#define IFsrmQuotaObject_get_Thresholds(This,thresholds) (This)->lpVtbl->get_Thresholds(This,thresholds)
+#define IFsrmQuotaObject_AddThreshold(This,threshold) (This)->lpVtbl->AddThreshold(This,threshold)
+#define IFsrmQuotaObject_DeleteThreshold(This,threshold) (This)->lpVtbl->DeleteThreshold(This,threshold)
+#define IFsrmQuotaObject_ModifyThreshold(This,threshold,newThreshold) (This)->lpVtbl->ModifyThreshold(This,threshold,newThreshold)
+#define IFsrmQuotaObject_CreateThresholdAction(This,threshold,actionType,action) (This)->lpVtbl->CreateThresholdAction(This,threshold,actionType,action)
+#define IFsrmQuotaObject_EnumThresholdActions(This,threshold,actions) (This)->lpVtbl->EnumThresholdActions(This,threshold,actions)
+/*** IFsrmQuotaObject methods ***/
+#define IFsrmQuotaObject_get_Path(This,path) (This)->lpVtbl->get_Path(This,path)
+#define IFsrmQuotaObject_get_UserSid(This,userSid) (This)->lpVtbl->get_UserSid(This,userSid)
+#define IFsrmQuotaObject_get_UserAccount(This,userAccount) (This)->lpVtbl->get_UserAccount(This,userAccount)
+#define IFsrmQuotaObject_get_SourceTemplateName(This,quotaTemplateName) (This)->lpVtbl->get_SourceTemplateName(This,quotaTemplateName)
+#define IFsrmQuotaObject_get_MatchesSourceTemplate(This,matches) (This)->lpVtbl->get_MatchesSourceTemplate(This,matches)
+#define IFsrmQuotaObject_ApplyTemplate(This,quotaTemplateName) (This)->lpVtbl->ApplyTemplate(This,quotaTemplateName)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaObject_QueryInterface(IFsrmQuotaObject* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmQuotaObject_AddRef(IFsrmQuotaObject* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmQuotaObject_Release(IFsrmQuotaObject* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaObject_GetTypeInfoCount(IFsrmQuotaObject* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_GetTypeInfo(IFsrmQuotaObject* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_GetIDsOfNames(IFsrmQuotaObject* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_Invoke(IFsrmQuotaObject* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmObject methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaObject_get_Id(IFsrmQuotaObject* This,FSRM_OBJECT_ID *id) {
+    return This->lpVtbl->get_Id(This,id);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_get_Description(IFsrmQuotaObject* This,BSTR *description) {
+    return This->lpVtbl->get_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_put_Description(IFsrmQuotaObject* This,BSTR description) {
+    return This->lpVtbl->put_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_Delete(IFsrmQuotaObject* This) {
+    return This->lpVtbl->Delete(This);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_Commit(IFsrmQuotaObject* This) {
+    return This->lpVtbl->Commit(This);
+}
+/*** IFsrmQuotaBase methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaObject_get_QuotaLimit(IFsrmQuotaObject* This,VARIANT *quotaLimit) {
+    return This->lpVtbl->get_QuotaLimit(This,quotaLimit);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_put_QuotaLimit(IFsrmQuotaObject* This,VARIANT quotaLimit) {
+    return This->lpVtbl->put_QuotaLimit(This,quotaLimit);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_get_QuotaFlags(IFsrmQuotaObject* This,LONG *quotaFlags) {
+    return This->lpVtbl->get_QuotaFlags(This,quotaFlags);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_put_QuotaFlags(IFsrmQuotaObject* This,LONG quotaFlags) {
+    return This->lpVtbl->put_QuotaFlags(This,quotaFlags);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_get_Thresholds(IFsrmQuotaObject* This,SAFEARRAY **thresholds) {
+    return This->lpVtbl->get_Thresholds(This,thresholds);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_AddThreshold(IFsrmQuotaObject* This,FSRM_QUOTA_THRESHOLD threshold) {
+    return This->lpVtbl->AddThreshold(This,threshold);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_DeleteThreshold(IFsrmQuotaObject* This,FSRM_QUOTA_THRESHOLD threshold) {
+    return This->lpVtbl->DeleteThreshold(This,threshold);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_ModifyThreshold(IFsrmQuotaObject* This,FSRM_QUOTA_THRESHOLD threshold,FSRM_QUOTA_THRESHOLD newThreshold) {
+    return This->lpVtbl->ModifyThreshold(This,threshold,newThreshold);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_CreateThresholdAction(IFsrmQuotaObject* This,FSRM_QUOTA_THRESHOLD threshold,FsrmActionType actionType,IFsrmAction **action) {
+    return This->lpVtbl->CreateThresholdAction(This,threshold,actionType,action);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_EnumThresholdActions(IFsrmQuotaObject* This,FSRM_QUOTA_THRESHOLD threshold,IFsrmCollection **actions) {
+    return This->lpVtbl->EnumThresholdActions(This,threshold,actions);
+}
+/*** IFsrmQuotaObject methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaObject_get_Path(IFsrmQuotaObject* This,BSTR *path) {
+    return This->lpVtbl->get_Path(This,path);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_get_UserSid(IFsrmQuotaObject* This,BSTR *userSid) {
+    return This->lpVtbl->get_UserSid(This,userSid);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_get_UserAccount(IFsrmQuotaObject* This,BSTR *userAccount) {
+    return This->lpVtbl->get_UserAccount(This,userAccount);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_get_SourceTemplateName(IFsrmQuotaObject* This,BSTR *quotaTemplateName) {
+    return This->lpVtbl->get_SourceTemplateName(This,quotaTemplateName);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_get_MatchesSourceTemplate(IFsrmQuotaObject* This,VARIANT_BOOL *matches) {
+    return This->lpVtbl->get_MatchesSourceTemplate(This,matches);
+}
+static FORCEINLINE HRESULT IFsrmQuotaObject_ApplyTemplate(IFsrmQuotaObject* This,BSTR quotaTemplateName) {
+    return This->lpVtbl->ApplyTemplate(This,quotaTemplateName);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmQuotaObject_get_Path_Proxy(
+    IFsrmQuotaObject* This,
+    BSTR *path);
+void __RPC_STUB IFsrmQuotaObject_get_Path_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaObject_get_UserSid_Proxy(
+    IFsrmQuotaObject* This,
+    BSTR *userSid);
+void __RPC_STUB IFsrmQuotaObject_get_UserSid_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaObject_get_UserAccount_Proxy(
+    IFsrmQuotaObject* This,
+    BSTR *userAccount);
+void __RPC_STUB IFsrmQuotaObject_get_UserAccount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaObject_get_SourceTemplateName_Proxy(
+    IFsrmQuotaObject* This,
+    BSTR *quotaTemplateName);
+void __RPC_STUB IFsrmQuotaObject_get_SourceTemplateName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaObject_get_MatchesSourceTemplate_Proxy(
+    IFsrmQuotaObject* This,
+    VARIANT_BOOL *matches);
+void __RPC_STUB IFsrmQuotaObject_get_MatchesSourceTemplate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaObject_ApplyTemplate_Proxy(
+    IFsrmQuotaObject* This,
+    BSTR quotaTemplateName);
+void __RPC_STUB IFsrmQuotaObject_ApplyTemplate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmQuotaObject_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmQuotaTemplate interface
+ */
+#ifndef __IFsrmQuotaTemplate_INTERFACE_DEFINED__
+#define __IFsrmQuotaTemplate_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmQuotaTemplate, 0xa2efab31, 0x295e, 0x46bb, 0xb9,0x76, 0xe8,0x6d,0x58,0xb5,0x2e,0x8b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a2efab31-295e-46bb-b976-e86d58b52e8b")
+IFsrmQuotaTemplate : public IFsrmQuotaBase
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Name(
+        BSTR *name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Name(
+        BSTR name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CopyTemplate(
+        BSTR quotaTemplateName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CommitAndUpdateDerived(
+        FsrmCommitOptions commitOptions,
+        FsrmTemplateApplyOptions applyOptions,
+        IFsrmDerivedObjectsResult **derivedObjectsResult) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmQuotaTemplate, 0xa2efab31, 0x295e, 0x46bb, 0xb9,0x76, 0xe8,0x6d,0x58,0xb5,0x2e,0x8b)
+#endif
+#else
+typedef struct IFsrmQuotaTemplateVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmQuotaTemplate* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmQuotaTemplate* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmQuotaTemplate* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmQuotaTemplate* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmQuotaTemplate* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmQuotaTemplate* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmQuotaTemplate* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IFsrmQuotaTemplate* This,
+        FSRM_OBJECT_ID *id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IFsrmQuotaTemplate* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IFsrmQuotaTemplate* This,
+        BSTR description);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmQuotaTemplate* This);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IFsrmQuotaTemplate* This);
+
+    /*** IFsrmQuotaBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_QuotaLimit)(
+        IFsrmQuotaTemplate* This,
+        VARIANT *quotaLimit);
+
+    HRESULT (STDMETHODCALLTYPE *put_QuotaLimit)(
+        IFsrmQuotaTemplate* This,
+        VARIANT quotaLimit);
+
+    HRESULT (STDMETHODCALLTYPE *get_QuotaFlags)(
+        IFsrmQuotaTemplate* This,
+        LONG *quotaFlags);
+
+    HRESULT (STDMETHODCALLTYPE *put_QuotaFlags)(
+        IFsrmQuotaTemplate* This,
+        LONG quotaFlags);
+
+    HRESULT (STDMETHODCALLTYPE *get_Thresholds)(
+        IFsrmQuotaTemplate* This,
+        SAFEARRAY **thresholds);
+
+    HRESULT (STDMETHODCALLTYPE *AddThreshold)(
+        IFsrmQuotaTemplate* This,
+        FSRM_QUOTA_THRESHOLD threshold);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteThreshold)(
+        IFsrmQuotaTemplate* This,
+        FSRM_QUOTA_THRESHOLD threshold);
+
+    HRESULT (STDMETHODCALLTYPE *ModifyThreshold)(
+        IFsrmQuotaTemplate* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        FSRM_QUOTA_THRESHOLD newThreshold);
+
+    HRESULT (STDMETHODCALLTYPE *CreateThresholdAction)(
+        IFsrmQuotaTemplate* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        FsrmActionType actionType,
+        IFsrmAction **action);
+
+    HRESULT (STDMETHODCALLTYPE *EnumThresholdActions)(
+        IFsrmQuotaTemplate* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        IFsrmCollection **actions);
+
+    /*** IFsrmQuotaTemplate methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IFsrmQuotaTemplate* This,
+        BSTR *name);
+
+    HRESULT (STDMETHODCALLTYPE *put_Name)(
+        IFsrmQuotaTemplate* This,
+        BSTR name);
+
+    HRESULT (STDMETHODCALLTYPE *CopyTemplate)(
+        IFsrmQuotaTemplate* This,
+        BSTR quotaTemplateName);
+
+    HRESULT (STDMETHODCALLTYPE *CommitAndUpdateDerived)(
+        IFsrmQuotaTemplate* This,
+        FsrmCommitOptions commitOptions,
+        FsrmTemplateApplyOptions applyOptions,
+        IFsrmDerivedObjectsResult **derivedObjectsResult);
+
+    END_INTERFACE
+} IFsrmQuotaTemplateVtbl;
+interface IFsrmQuotaTemplate {
+    CONST_VTBL IFsrmQuotaTemplateVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmQuotaTemplate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmQuotaTemplate_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmQuotaTemplate_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmQuotaTemplate_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmQuotaTemplate_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmQuotaTemplate_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmQuotaTemplate_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmObject methods ***/
+#define IFsrmQuotaTemplate_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
+#define IFsrmQuotaTemplate_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
+#define IFsrmQuotaTemplate_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
+#define IFsrmQuotaTemplate_Delete(This) (This)->lpVtbl->Delete(This)
+#define IFsrmQuotaTemplate_Commit(This) (This)->lpVtbl->Commit(This)
+/*** IFsrmQuotaBase methods ***/
+#define IFsrmQuotaTemplate_get_QuotaLimit(This,quotaLimit) (This)->lpVtbl->get_QuotaLimit(This,quotaLimit)
+#define IFsrmQuotaTemplate_put_QuotaLimit(This,quotaLimit) (This)->lpVtbl->put_QuotaLimit(This,quotaLimit)
+#define IFsrmQuotaTemplate_get_QuotaFlags(This,quotaFlags) (This)->lpVtbl->get_QuotaFlags(This,quotaFlags)
+#define IFsrmQuotaTemplate_put_QuotaFlags(This,quotaFlags) (This)->lpVtbl->put_QuotaFlags(This,quotaFlags)
+#define IFsrmQuotaTemplate_get_Thresholds(This,thresholds) (This)->lpVtbl->get_Thresholds(This,thresholds)
+#define IFsrmQuotaTemplate_AddThreshold(This,threshold) (This)->lpVtbl->AddThreshold(This,threshold)
+#define IFsrmQuotaTemplate_DeleteThreshold(This,threshold) (This)->lpVtbl->DeleteThreshold(This,threshold)
+#define IFsrmQuotaTemplate_ModifyThreshold(This,threshold,newThreshold) (This)->lpVtbl->ModifyThreshold(This,threshold,newThreshold)
+#define IFsrmQuotaTemplate_CreateThresholdAction(This,threshold,actionType,action) (This)->lpVtbl->CreateThresholdAction(This,threshold,actionType,action)
+#define IFsrmQuotaTemplate_EnumThresholdActions(This,threshold,actions) (This)->lpVtbl->EnumThresholdActions(This,threshold,actions)
+/*** IFsrmQuotaTemplate methods ***/
+#define IFsrmQuotaTemplate_get_Name(This,name) (This)->lpVtbl->get_Name(This,name)
+#define IFsrmQuotaTemplate_put_Name(This,name) (This)->lpVtbl->put_Name(This,name)
+#define IFsrmQuotaTemplate_CopyTemplate(This,quotaTemplateName) (This)->lpVtbl->CopyTemplate(This,quotaTemplateName)
+#define IFsrmQuotaTemplate_CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult) (This)->lpVtbl->CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_QueryInterface(IFsrmQuotaTemplate* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmQuotaTemplate_AddRef(IFsrmQuotaTemplate* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmQuotaTemplate_Release(IFsrmQuotaTemplate* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_GetTypeInfoCount(IFsrmQuotaTemplate* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_GetTypeInfo(IFsrmQuotaTemplate* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_GetIDsOfNames(IFsrmQuotaTemplate* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_Invoke(IFsrmQuotaTemplate* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmObject methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_get_Id(IFsrmQuotaTemplate* This,FSRM_OBJECT_ID *id) {
+    return This->lpVtbl->get_Id(This,id);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_get_Description(IFsrmQuotaTemplate* This,BSTR *description) {
+    return This->lpVtbl->get_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_put_Description(IFsrmQuotaTemplate* This,BSTR description) {
+    return This->lpVtbl->put_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_Delete(IFsrmQuotaTemplate* This) {
+    return This->lpVtbl->Delete(This);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_Commit(IFsrmQuotaTemplate* This) {
+    return This->lpVtbl->Commit(This);
+}
+/*** IFsrmQuotaBase methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_get_QuotaLimit(IFsrmQuotaTemplate* This,VARIANT *quotaLimit) {
+    return This->lpVtbl->get_QuotaLimit(This,quotaLimit);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_put_QuotaLimit(IFsrmQuotaTemplate* This,VARIANT quotaLimit) {
+    return This->lpVtbl->put_QuotaLimit(This,quotaLimit);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_get_QuotaFlags(IFsrmQuotaTemplate* This,LONG *quotaFlags) {
+    return This->lpVtbl->get_QuotaFlags(This,quotaFlags);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_put_QuotaFlags(IFsrmQuotaTemplate* This,LONG quotaFlags) {
+    return This->lpVtbl->put_QuotaFlags(This,quotaFlags);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_get_Thresholds(IFsrmQuotaTemplate* This,SAFEARRAY **thresholds) {
+    return This->lpVtbl->get_Thresholds(This,thresholds);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_AddThreshold(IFsrmQuotaTemplate* This,FSRM_QUOTA_THRESHOLD threshold) {
+    return This->lpVtbl->AddThreshold(This,threshold);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_DeleteThreshold(IFsrmQuotaTemplate* This,FSRM_QUOTA_THRESHOLD threshold) {
+    return This->lpVtbl->DeleteThreshold(This,threshold);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_ModifyThreshold(IFsrmQuotaTemplate* This,FSRM_QUOTA_THRESHOLD threshold,FSRM_QUOTA_THRESHOLD newThreshold) {
+    return This->lpVtbl->ModifyThreshold(This,threshold,newThreshold);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_CreateThresholdAction(IFsrmQuotaTemplate* This,FSRM_QUOTA_THRESHOLD threshold,FsrmActionType actionType,IFsrmAction **action) {
+    return This->lpVtbl->CreateThresholdAction(This,threshold,actionType,action);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_EnumThresholdActions(IFsrmQuotaTemplate* This,FSRM_QUOTA_THRESHOLD threshold,IFsrmCollection **actions) {
+    return This->lpVtbl->EnumThresholdActions(This,threshold,actions);
+}
+/*** IFsrmQuotaTemplate methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_get_Name(IFsrmQuotaTemplate* This,BSTR *name) {
+    return This->lpVtbl->get_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_put_Name(IFsrmQuotaTemplate* This,BSTR name) {
+    return This->lpVtbl->put_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_CopyTemplate(IFsrmQuotaTemplate* This,BSTR quotaTemplateName) {
+    return This->lpVtbl->CopyTemplate(This,quotaTemplateName);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplate_CommitAndUpdateDerived(IFsrmQuotaTemplate* This,FsrmCommitOptions commitOptions,FsrmTemplateApplyOptions applyOptions,IFsrmDerivedObjectsResult **derivedObjectsResult) {
+    return This->lpVtbl->CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmQuotaTemplate_get_Name_Proxy(
+    IFsrmQuotaTemplate* This,
+    BSTR *name);
+void __RPC_STUB IFsrmQuotaTemplate_get_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaTemplate_put_Name_Proxy(
+    IFsrmQuotaTemplate* This,
+    BSTR name);
+void __RPC_STUB IFsrmQuotaTemplate_put_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaTemplate_CopyTemplate_Proxy(
+    IFsrmQuotaTemplate* This,
+    BSTR quotaTemplateName);
+void __RPC_STUB IFsrmQuotaTemplate_CopyTemplate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaTemplate_CommitAndUpdateDerived_Proxy(
+    IFsrmQuotaTemplate* This,
+    FsrmCommitOptions commitOptions,
+    FsrmTemplateApplyOptions applyOptions,
+    IFsrmDerivedObjectsResult **derivedObjectsResult);
+void __RPC_STUB IFsrmQuotaTemplate_CommitAndUpdateDerived_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmQuotaTemplate_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmQuota interface
+ */
+#ifndef __IFsrmQuota_INTERFACE_DEFINED__
+#define __IFsrmQuota_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmQuota, 0x377f739d, 0x9647, 0x4b8e, 0x97,0xd2, 0x5f,0xfc,0xe6,0xd7,0x59,0xcd);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("377f739d-9647-4b8e-97d2-5ffce6d759cd")
+IFsrmQuota : public IFsrmQuotaObject
+{
+    virtual HRESULT STDMETHODCALLTYPE get_QuotaUsed(
+        VARIANT *used) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_QuotaPeakUsage(
+        VARIANT *peakUsage) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_QuotaPeakUsageTime(
+        DATE *peakUsageDateTime) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ResetPeakUsage(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RefreshUsageProperties(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmQuota, 0x377f739d, 0x9647, 0x4b8e, 0x97,0xd2, 0x5f,0xfc,0xe6,0xd7,0x59,0xcd)
+#endif
+#else
+typedef struct IFsrmQuotaVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmQuota* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmQuota* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmQuota* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmQuota* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmQuota* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmQuota* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmQuota* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IFsrmQuota* This,
+        FSRM_OBJECT_ID *id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IFsrmQuota* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IFsrmQuota* This,
+        BSTR description);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmQuota* This);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IFsrmQuota* This);
+
+    /*** IFsrmQuotaBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_QuotaLimit)(
+        IFsrmQuota* This,
+        VARIANT *quotaLimit);
+
+    HRESULT (STDMETHODCALLTYPE *put_QuotaLimit)(
+        IFsrmQuota* This,
+        VARIANT quotaLimit);
+
+    HRESULT (STDMETHODCALLTYPE *get_QuotaFlags)(
+        IFsrmQuota* This,
+        LONG *quotaFlags);
+
+    HRESULT (STDMETHODCALLTYPE *put_QuotaFlags)(
+        IFsrmQuota* This,
+        LONG quotaFlags);
+
+    HRESULT (STDMETHODCALLTYPE *get_Thresholds)(
+        IFsrmQuota* This,
+        SAFEARRAY **thresholds);
+
+    HRESULT (STDMETHODCALLTYPE *AddThreshold)(
+        IFsrmQuota* This,
+        FSRM_QUOTA_THRESHOLD threshold);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteThreshold)(
+        IFsrmQuota* This,
+        FSRM_QUOTA_THRESHOLD threshold);
+
+    HRESULT (STDMETHODCALLTYPE *ModifyThreshold)(
+        IFsrmQuota* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        FSRM_QUOTA_THRESHOLD newThreshold);
+
+    HRESULT (STDMETHODCALLTYPE *CreateThresholdAction)(
+        IFsrmQuota* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        FsrmActionType actionType,
+        IFsrmAction **action);
+
+    HRESULT (STDMETHODCALLTYPE *EnumThresholdActions)(
+        IFsrmQuota* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        IFsrmCollection **actions);
+
+    /*** IFsrmQuotaObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Path)(
+        IFsrmQuota* This,
+        BSTR *path);
+
+    HRESULT (STDMETHODCALLTYPE *get_UserSid)(
+        IFsrmQuota* This,
+        BSTR *userSid);
+
+    HRESULT (STDMETHODCALLTYPE *get_UserAccount)(
+        IFsrmQuota* This,
+        BSTR *userAccount);
+
+    HRESULT (STDMETHODCALLTYPE *get_SourceTemplateName)(
+        IFsrmQuota* This,
+        BSTR *quotaTemplateName);
+
+    HRESULT (STDMETHODCALLTYPE *get_MatchesSourceTemplate)(
+        IFsrmQuota* This,
+        VARIANT_BOOL *matches);
+
+    HRESULT (STDMETHODCALLTYPE *ApplyTemplate)(
+        IFsrmQuota* This,
+        BSTR quotaTemplateName);
+
+    /*** IFsrmQuota methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_QuotaUsed)(
+        IFsrmQuota* This,
+        VARIANT *used);
+
+    HRESULT (STDMETHODCALLTYPE *get_QuotaPeakUsage)(
+        IFsrmQuota* This,
+        VARIANT *peakUsage);
+
+    HRESULT (STDMETHODCALLTYPE *get_QuotaPeakUsageTime)(
+        IFsrmQuota* This,
+        DATE *peakUsageDateTime);
+
+    HRESULT (STDMETHODCALLTYPE *ResetPeakUsage)(
+        IFsrmQuota* This);
+
+    HRESULT (STDMETHODCALLTYPE *RefreshUsageProperties)(
+        IFsrmQuota* This);
+
+    END_INTERFACE
+} IFsrmQuotaVtbl;
+interface IFsrmQuota {
+    CONST_VTBL IFsrmQuotaVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmQuota_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmQuota_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmQuota_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmQuota_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmQuota_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmQuota_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmQuota_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmObject methods ***/
+#define IFsrmQuota_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
+#define IFsrmQuota_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
+#define IFsrmQuota_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
+#define IFsrmQuota_Delete(This) (This)->lpVtbl->Delete(This)
+#define IFsrmQuota_Commit(This) (This)->lpVtbl->Commit(This)
+/*** IFsrmQuotaBase methods ***/
+#define IFsrmQuota_get_QuotaLimit(This,quotaLimit) (This)->lpVtbl->get_QuotaLimit(This,quotaLimit)
+#define IFsrmQuota_put_QuotaLimit(This,quotaLimit) (This)->lpVtbl->put_QuotaLimit(This,quotaLimit)
+#define IFsrmQuota_get_QuotaFlags(This,quotaFlags) (This)->lpVtbl->get_QuotaFlags(This,quotaFlags)
+#define IFsrmQuota_put_QuotaFlags(This,quotaFlags) (This)->lpVtbl->put_QuotaFlags(This,quotaFlags)
+#define IFsrmQuota_get_Thresholds(This,thresholds) (This)->lpVtbl->get_Thresholds(This,thresholds)
+#define IFsrmQuota_AddThreshold(This,threshold) (This)->lpVtbl->AddThreshold(This,threshold)
+#define IFsrmQuota_DeleteThreshold(This,threshold) (This)->lpVtbl->DeleteThreshold(This,threshold)
+#define IFsrmQuota_ModifyThreshold(This,threshold,newThreshold) (This)->lpVtbl->ModifyThreshold(This,threshold,newThreshold)
+#define IFsrmQuota_CreateThresholdAction(This,threshold,actionType,action) (This)->lpVtbl->CreateThresholdAction(This,threshold,actionType,action)
+#define IFsrmQuota_EnumThresholdActions(This,threshold,actions) (This)->lpVtbl->EnumThresholdActions(This,threshold,actions)
+/*** IFsrmQuotaObject methods ***/
+#define IFsrmQuota_get_Path(This,path) (This)->lpVtbl->get_Path(This,path)
+#define IFsrmQuota_get_UserSid(This,userSid) (This)->lpVtbl->get_UserSid(This,userSid)
+#define IFsrmQuota_get_UserAccount(This,userAccount) (This)->lpVtbl->get_UserAccount(This,userAccount)
+#define IFsrmQuota_get_SourceTemplateName(This,quotaTemplateName) (This)->lpVtbl->get_SourceTemplateName(This,quotaTemplateName)
+#define IFsrmQuota_get_MatchesSourceTemplate(This,matches) (This)->lpVtbl->get_MatchesSourceTemplate(This,matches)
+#define IFsrmQuota_ApplyTemplate(This,quotaTemplateName) (This)->lpVtbl->ApplyTemplate(This,quotaTemplateName)
+/*** IFsrmQuota methods ***/
+#define IFsrmQuota_get_QuotaUsed(This,used) (This)->lpVtbl->get_QuotaUsed(This,used)
+#define IFsrmQuota_get_QuotaPeakUsage(This,peakUsage) (This)->lpVtbl->get_QuotaPeakUsage(This,peakUsage)
+#define IFsrmQuota_get_QuotaPeakUsageTime(This,peakUsageDateTime) (This)->lpVtbl->get_QuotaPeakUsageTime(This,peakUsageDateTime)
+#define IFsrmQuota_ResetPeakUsage(This) (This)->lpVtbl->ResetPeakUsage(This)
+#define IFsrmQuota_RefreshUsageProperties(This) (This)->lpVtbl->RefreshUsageProperties(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmQuota_QueryInterface(IFsrmQuota* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmQuota_AddRef(IFsrmQuota* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmQuota_Release(IFsrmQuota* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmQuota_GetTypeInfoCount(IFsrmQuota* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmQuota_GetTypeInfo(IFsrmQuota* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmQuota_GetIDsOfNames(IFsrmQuota* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmQuota_Invoke(IFsrmQuota* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmObject methods ***/
+static FORCEINLINE HRESULT IFsrmQuota_get_Id(IFsrmQuota* This,FSRM_OBJECT_ID *id) {
+    return This->lpVtbl->get_Id(This,id);
+}
+static FORCEINLINE HRESULT IFsrmQuota_get_Description(IFsrmQuota* This,BSTR *description) {
+    return This->lpVtbl->get_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmQuota_put_Description(IFsrmQuota* This,BSTR description) {
+    return This->lpVtbl->put_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmQuota_Delete(IFsrmQuota* This) {
+    return This->lpVtbl->Delete(This);
+}
+static FORCEINLINE HRESULT IFsrmQuota_Commit(IFsrmQuota* This) {
+    return This->lpVtbl->Commit(This);
+}
+/*** IFsrmQuotaBase methods ***/
+static FORCEINLINE HRESULT IFsrmQuota_get_QuotaLimit(IFsrmQuota* This,VARIANT *quotaLimit) {
+    return This->lpVtbl->get_QuotaLimit(This,quotaLimit);
+}
+static FORCEINLINE HRESULT IFsrmQuota_put_QuotaLimit(IFsrmQuota* This,VARIANT quotaLimit) {
+    return This->lpVtbl->put_QuotaLimit(This,quotaLimit);
+}
+static FORCEINLINE HRESULT IFsrmQuota_get_QuotaFlags(IFsrmQuota* This,LONG *quotaFlags) {
+    return This->lpVtbl->get_QuotaFlags(This,quotaFlags);
+}
+static FORCEINLINE HRESULT IFsrmQuota_put_QuotaFlags(IFsrmQuota* This,LONG quotaFlags) {
+    return This->lpVtbl->put_QuotaFlags(This,quotaFlags);
+}
+static FORCEINLINE HRESULT IFsrmQuota_get_Thresholds(IFsrmQuota* This,SAFEARRAY **thresholds) {
+    return This->lpVtbl->get_Thresholds(This,thresholds);
+}
+static FORCEINLINE HRESULT IFsrmQuota_AddThreshold(IFsrmQuota* This,FSRM_QUOTA_THRESHOLD threshold) {
+    return This->lpVtbl->AddThreshold(This,threshold);
+}
+static FORCEINLINE HRESULT IFsrmQuota_DeleteThreshold(IFsrmQuota* This,FSRM_QUOTA_THRESHOLD threshold) {
+    return This->lpVtbl->DeleteThreshold(This,threshold);
+}
+static FORCEINLINE HRESULT IFsrmQuota_ModifyThreshold(IFsrmQuota* This,FSRM_QUOTA_THRESHOLD threshold,FSRM_QUOTA_THRESHOLD newThreshold) {
+    return This->lpVtbl->ModifyThreshold(This,threshold,newThreshold);
+}
+static FORCEINLINE HRESULT IFsrmQuota_CreateThresholdAction(IFsrmQuota* This,FSRM_QUOTA_THRESHOLD threshold,FsrmActionType actionType,IFsrmAction **action) {
+    return This->lpVtbl->CreateThresholdAction(This,threshold,actionType,action);
+}
+static FORCEINLINE HRESULT IFsrmQuota_EnumThresholdActions(IFsrmQuota* This,FSRM_QUOTA_THRESHOLD threshold,IFsrmCollection **actions) {
+    return This->lpVtbl->EnumThresholdActions(This,threshold,actions);
+}
+/*** IFsrmQuotaObject methods ***/
+static FORCEINLINE HRESULT IFsrmQuota_get_Path(IFsrmQuota* This,BSTR *path) {
+    return This->lpVtbl->get_Path(This,path);
+}
+static FORCEINLINE HRESULT IFsrmQuota_get_UserSid(IFsrmQuota* This,BSTR *userSid) {
+    return This->lpVtbl->get_UserSid(This,userSid);
+}
+static FORCEINLINE HRESULT IFsrmQuota_get_UserAccount(IFsrmQuota* This,BSTR *userAccount) {
+    return This->lpVtbl->get_UserAccount(This,userAccount);
+}
+static FORCEINLINE HRESULT IFsrmQuota_get_SourceTemplateName(IFsrmQuota* This,BSTR *quotaTemplateName) {
+    return This->lpVtbl->get_SourceTemplateName(This,quotaTemplateName);
+}
+static FORCEINLINE HRESULT IFsrmQuota_get_MatchesSourceTemplate(IFsrmQuota* This,VARIANT_BOOL *matches) {
+    return This->lpVtbl->get_MatchesSourceTemplate(This,matches);
+}
+static FORCEINLINE HRESULT IFsrmQuota_ApplyTemplate(IFsrmQuota* This,BSTR quotaTemplateName) {
+    return This->lpVtbl->ApplyTemplate(This,quotaTemplateName);
+}
+/*** IFsrmQuota methods ***/
+static FORCEINLINE HRESULT IFsrmQuota_get_QuotaUsed(IFsrmQuota* This,VARIANT *used) {
+    return This->lpVtbl->get_QuotaUsed(This,used);
+}
+static FORCEINLINE HRESULT IFsrmQuota_get_QuotaPeakUsage(IFsrmQuota* This,VARIANT *peakUsage) {
+    return This->lpVtbl->get_QuotaPeakUsage(This,peakUsage);
+}
+static FORCEINLINE HRESULT IFsrmQuota_get_QuotaPeakUsageTime(IFsrmQuota* This,DATE *peakUsageDateTime) {
+    return This->lpVtbl->get_QuotaPeakUsageTime(This,peakUsageDateTime);
+}
+static FORCEINLINE HRESULT IFsrmQuota_ResetPeakUsage(IFsrmQuota* This) {
+    return This->lpVtbl->ResetPeakUsage(This);
+}
+static FORCEINLINE HRESULT IFsrmQuota_RefreshUsageProperties(IFsrmQuota* This) {
+    return This->lpVtbl->RefreshUsageProperties(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmQuota_get_QuotaUsed_Proxy(
+    IFsrmQuota* This,
+    VARIANT *used);
+void __RPC_STUB IFsrmQuota_get_QuotaUsed_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuota_get_QuotaPeakUsage_Proxy(
+    IFsrmQuota* This,
+    VARIANT *peakUsage);
+void __RPC_STUB IFsrmQuota_get_QuotaPeakUsage_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuota_get_QuotaPeakUsageTime_Proxy(
+    IFsrmQuota* This,
+    DATE *peakUsageDateTime);
+void __RPC_STUB IFsrmQuota_get_QuotaPeakUsageTime_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuota_ResetPeakUsage_Proxy(
+    IFsrmQuota* This);
+void __RPC_STUB IFsrmQuota_ResetPeakUsage_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuota_RefreshUsageProperties_Proxy(
+    IFsrmQuota* This);
+void __RPC_STUB IFsrmQuota_RefreshUsageProperties_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmQuota_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmAutoApplyQuota interface
+ */
+#ifndef __IFsrmAutoApplyQuota_INTERFACE_DEFINED__
+#define __IFsrmAutoApplyQuota_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmAutoApplyQuota, 0xf82e5729, 0x6aba, 0x4740, 0xbf,0xc7, 0xc7,0xf5,0x8f,0x75,0xfb,0x7b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f82e5729-6aba-4740-bfc7-c7f58f75fb7b")
+IFsrmAutoApplyQuota : public IFsrmQuotaObject
+{
+    virtual HRESULT STDMETHODCALLTYPE get_ExcludeFolders(
+        SAFEARRAY **folders) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_ExcludeFolders(
+        SAFEARRAY *folders) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CommitAndUpdateDerived(
+        FsrmCommitOptions commitOptions,
+        FsrmTemplateApplyOptions applyOptions,
+        IFsrmDerivedObjectsResult **derivedObjectsResult) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmAutoApplyQuota, 0xf82e5729, 0x6aba, 0x4740, 0xbf,0xc7, 0xc7,0xf5,0x8f,0x75,0xfb,0x7b)
+#endif
+#else
+typedef struct IFsrmAutoApplyQuotaVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmAutoApplyQuota* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmAutoApplyQuota* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmAutoApplyQuota* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmAutoApplyQuota* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmAutoApplyQuota* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmAutoApplyQuota* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmAutoApplyQuota* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IFsrmAutoApplyQuota* This,
+        FSRM_OBJECT_ID *id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IFsrmAutoApplyQuota* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IFsrmAutoApplyQuota* This,
+        BSTR description);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmAutoApplyQuota* This);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IFsrmAutoApplyQuota* This);
+
+    /*** IFsrmQuotaBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_QuotaLimit)(
+        IFsrmAutoApplyQuota* This,
+        VARIANT *quotaLimit);
+
+    HRESULT (STDMETHODCALLTYPE *put_QuotaLimit)(
+        IFsrmAutoApplyQuota* This,
+        VARIANT quotaLimit);
+
+    HRESULT (STDMETHODCALLTYPE *get_QuotaFlags)(
+        IFsrmAutoApplyQuota* This,
+        LONG *quotaFlags);
+
+    HRESULT (STDMETHODCALLTYPE *put_QuotaFlags)(
+        IFsrmAutoApplyQuota* This,
+        LONG quotaFlags);
+
+    HRESULT (STDMETHODCALLTYPE *get_Thresholds)(
+        IFsrmAutoApplyQuota* This,
+        SAFEARRAY **thresholds);
+
+    HRESULT (STDMETHODCALLTYPE *AddThreshold)(
+        IFsrmAutoApplyQuota* This,
+        FSRM_QUOTA_THRESHOLD threshold);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteThreshold)(
+        IFsrmAutoApplyQuota* This,
+        FSRM_QUOTA_THRESHOLD threshold);
+
+    HRESULT (STDMETHODCALLTYPE *ModifyThreshold)(
+        IFsrmAutoApplyQuota* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        FSRM_QUOTA_THRESHOLD newThreshold);
+
+    HRESULT (STDMETHODCALLTYPE *CreateThresholdAction)(
+        IFsrmAutoApplyQuota* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        FsrmActionType actionType,
+        IFsrmAction **action);
+
+    HRESULT (STDMETHODCALLTYPE *EnumThresholdActions)(
+        IFsrmAutoApplyQuota* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        IFsrmCollection **actions);
+
+    /*** IFsrmQuotaObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Path)(
+        IFsrmAutoApplyQuota* This,
+        BSTR *path);
+
+    HRESULT (STDMETHODCALLTYPE *get_UserSid)(
+        IFsrmAutoApplyQuota* This,
+        BSTR *userSid);
+
+    HRESULT (STDMETHODCALLTYPE *get_UserAccount)(
+        IFsrmAutoApplyQuota* This,
+        BSTR *userAccount);
+
+    HRESULT (STDMETHODCALLTYPE *get_SourceTemplateName)(
+        IFsrmAutoApplyQuota* This,
+        BSTR *quotaTemplateName);
+
+    HRESULT (STDMETHODCALLTYPE *get_MatchesSourceTemplate)(
+        IFsrmAutoApplyQuota* This,
+        VARIANT_BOOL *matches);
+
+    HRESULT (STDMETHODCALLTYPE *ApplyTemplate)(
+        IFsrmAutoApplyQuota* This,
+        BSTR quotaTemplateName);
+
+    /*** IFsrmAutoApplyQuota methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_ExcludeFolders)(
+        IFsrmAutoApplyQuota* This,
+        SAFEARRAY **folders);
+
+    HRESULT (STDMETHODCALLTYPE *put_ExcludeFolders)(
+        IFsrmAutoApplyQuota* This,
+        SAFEARRAY *folders);
+
+    HRESULT (STDMETHODCALLTYPE *CommitAndUpdateDerived)(
+        IFsrmAutoApplyQuota* This,
+        FsrmCommitOptions commitOptions,
+        FsrmTemplateApplyOptions applyOptions,
+        IFsrmDerivedObjectsResult **derivedObjectsResult);
+
+    END_INTERFACE
+} IFsrmAutoApplyQuotaVtbl;
+interface IFsrmAutoApplyQuota {
+    CONST_VTBL IFsrmAutoApplyQuotaVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmAutoApplyQuota_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmAutoApplyQuota_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmAutoApplyQuota_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmAutoApplyQuota_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmAutoApplyQuota_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmAutoApplyQuota_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmAutoApplyQuota_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmObject methods ***/
+#define IFsrmAutoApplyQuota_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
+#define IFsrmAutoApplyQuota_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
+#define IFsrmAutoApplyQuota_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
+#define IFsrmAutoApplyQuota_Delete(This) (This)->lpVtbl->Delete(This)
+#define IFsrmAutoApplyQuota_Commit(This) (This)->lpVtbl->Commit(This)
+/*** IFsrmQuotaBase methods ***/
+#define IFsrmAutoApplyQuota_get_QuotaLimit(This,quotaLimit) (This)->lpVtbl->get_QuotaLimit(This,quotaLimit)
+#define IFsrmAutoApplyQuota_put_QuotaLimit(This,quotaLimit) (This)->lpVtbl->put_QuotaLimit(This,quotaLimit)
+#define IFsrmAutoApplyQuota_get_QuotaFlags(This,quotaFlags) (This)->lpVtbl->get_QuotaFlags(This,quotaFlags)
+#define IFsrmAutoApplyQuota_put_QuotaFlags(This,quotaFlags) (This)->lpVtbl->put_QuotaFlags(This,quotaFlags)
+#define IFsrmAutoApplyQuota_get_Thresholds(This,thresholds) (This)->lpVtbl->get_Thresholds(This,thresholds)
+#define IFsrmAutoApplyQuota_AddThreshold(This,threshold) (This)->lpVtbl->AddThreshold(This,threshold)
+#define IFsrmAutoApplyQuota_DeleteThreshold(This,threshold) (This)->lpVtbl->DeleteThreshold(This,threshold)
+#define IFsrmAutoApplyQuota_ModifyThreshold(This,threshold,newThreshold) (This)->lpVtbl->ModifyThreshold(This,threshold,newThreshold)
+#define IFsrmAutoApplyQuota_CreateThresholdAction(This,threshold,actionType,action) (This)->lpVtbl->CreateThresholdAction(This,threshold,actionType,action)
+#define IFsrmAutoApplyQuota_EnumThresholdActions(This,threshold,actions) (This)->lpVtbl->EnumThresholdActions(This,threshold,actions)
+/*** IFsrmQuotaObject methods ***/
+#define IFsrmAutoApplyQuota_get_Path(This,path) (This)->lpVtbl->get_Path(This,path)
+#define IFsrmAutoApplyQuota_get_UserSid(This,userSid) (This)->lpVtbl->get_UserSid(This,userSid)
+#define IFsrmAutoApplyQuota_get_UserAccount(This,userAccount) (This)->lpVtbl->get_UserAccount(This,userAccount)
+#define IFsrmAutoApplyQuota_get_SourceTemplateName(This,quotaTemplateName) (This)->lpVtbl->get_SourceTemplateName(This,quotaTemplateName)
+#define IFsrmAutoApplyQuota_get_MatchesSourceTemplate(This,matches) (This)->lpVtbl->get_MatchesSourceTemplate(This,matches)
+#define IFsrmAutoApplyQuota_ApplyTemplate(This,quotaTemplateName) (This)->lpVtbl->ApplyTemplate(This,quotaTemplateName)
+/*** IFsrmAutoApplyQuota methods ***/
+#define IFsrmAutoApplyQuota_get_ExcludeFolders(This,folders) (This)->lpVtbl->get_ExcludeFolders(This,folders)
+#define IFsrmAutoApplyQuota_put_ExcludeFolders(This,folders) (This)->lpVtbl->put_ExcludeFolders(This,folders)
+#define IFsrmAutoApplyQuota_CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult) (This)->lpVtbl->CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_QueryInterface(IFsrmAutoApplyQuota* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmAutoApplyQuota_AddRef(IFsrmAutoApplyQuota* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmAutoApplyQuota_Release(IFsrmAutoApplyQuota* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_GetTypeInfoCount(IFsrmAutoApplyQuota* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_GetTypeInfo(IFsrmAutoApplyQuota* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_GetIDsOfNames(IFsrmAutoApplyQuota* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_Invoke(IFsrmAutoApplyQuota* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmObject methods ***/
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_get_Id(IFsrmAutoApplyQuota* This,FSRM_OBJECT_ID *id) {
+    return This->lpVtbl->get_Id(This,id);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_get_Description(IFsrmAutoApplyQuota* This,BSTR *description) {
+    return This->lpVtbl->get_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_put_Description(IFsrmAutoApplyQuota* This,BSTR description) {
+    return This->lpVtbl->put_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_Delete(IFsrmAutoApplyQuota* This) {
+    return This->lpVtbl->Delete(This);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_Commit(IFsrmAutoApplyQuota* This) {
+    return This->lpVtbl->Commit(This);
+}
+/*** IFsrmQuotaBase methods ***/
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_get_QuotaLimit(IFsrmAutoApplyQuota* This,VARIANT *quotaLimit) {
+    return This->lpVtbl->get_QuotaLimit(This,quotaLimit);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_put_QuotaLimit(IFsrmAutoApplyQuota* This,VARIANT quotaLimit) {
+    return This->lpVtbl->put_QuotaLimit(This,quotaLimit);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_get_QuotaFlags(IFsrmAutoApplyQuota* This,LONG *quotaFlags) {
+    return This->lpVtbl->get_QuotaFlags(This,quotaFlags);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_put_QuotaFlags(IFsrmAutoApplyQuota* This,LONG quotaFlags) {
+    return This->lpVtbl->put_QuotaFlags(This,quotaFlags);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_get_Thresholds(IFsrmAutoApplyQuota* This,SAFEARRAY **thresholds) {
+    return This->lpVtbl->get_Thresholds(This,thresholds);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_AddThreshold(IFsrmAutoApplyQuota* This,FSRM_QUOTA_THRESHOLD threshold) {
+    return This->lpVtbl->AddThreshold(This,threshold);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_DeleteThreshold(IFsrmAutoApplyQuota* This,FSRM_QUOTA_THRESHOLD threshold) {
+    return This->lpVtbl->DeleteThreshold(This,threshold);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_ModifyThreshold(IFsrmAutoApplyQuota* This,FSRM_QUOTA_THRESHOLD threshold,FSRM_QUOTA_THRESHOLD newThreshold) {
+    return This->lpVtbl->ModifyThreshold(This,threshold,newThreshold);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_CreateThresholdAction(IFsrmAutoApplyQuota* This,FSRM_QUOTA_THRESHOLD threshold,FsrmActionType actionType,IFsrmAction **action) {
+    return This->lpVtbl->CreateThresholdAction(This,threshold,actionType,action);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_EnumThresholdActions(IFsrmAutoApplyQuota* This,FSRM_QUOTA_THRESHOLD threshold,IFsrmCollection **actions) {
+    return This->lpVtbl->EnumThresholdActions(This,threshold,actions);
+}
+/*** IFsrmQuotaObject methods ***/
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_get_Path(IFsrmAutoApplyQuota* This,BSTR *path) {
+    return This->lpVtbl->get_Path(This,path);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_get_UserSid(IFsrmAutoApplyQuota* This,BSTR *userSid) {
+    return This->lpVtbl->get_UserSid(This,userSid);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_get_UserAccount(IFsrmAutoApplyQuota* This,BSTR *userAccount) {
+    return This->lpVtbl->get_UserAccount(This,userAccount);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_get_SourceTemplateName(IFsrmAutoApplyQuota* This,BSTR *quotaTemplateName) {
+    return This->lpVtbl->get_SourceTemplateName(This,quotaTemplateName);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_get_MatchesSourceTemplate(IFsrmAutoApplyQuota* This,VARIANT_BOOL *matches) {
+    return This->lpVtbl->get_MatchesSourceTemplate(This,matches);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_ApplyTemplate(IFsrmAutoApplyQuota* This,BSTR quotaTemplateName) {
+    return This->lpVtbl->ApplyTemplate(This,quotaTemplateName);
+}
+/*** IFsrmAutoApplyQuota methods ***/
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_get_ExcludeFolders(IFsrmAutoApplyQuota* This,SAFEARRAY **folders) {
+    return This->lpVtbl->get_ExcludeFolders(This,folders);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_put_ExcludeFolders(IFsrmAutoApplyQuota* This,SAFEARRAY *folders) {
+    return This->lpVtbl->put_ExcludeFolders(This,folders);
+}
+static FORCEINLINE HRESULT IFsrmAutoApplyQuota_CommitAndUpdateDerived(IFsrmAutoApplyQuota* This,FsrmCommitOptions commitOptions,FsrmTemplateApplyOptions applyOptions,IFsrmDerivedObjectsResult **derivedObjectsResult) {
+    return This->lpVtbl->CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmAutoApplyQuota_get_ExcludeFolders_Proxy(
+    IFsrmAutoApplyQuota* This,
+    SAFEARRAY **folders);
+void __RPC_STUB IFsrmAutoApplyQuota_get_ExcludeFolders_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmAutoApplyQuota_put_ExcludeFolders_Proxy(
+    IFsrmAutoApplyQuota* This,
+    SAFEARRAY *folders);
+void __RPC_STUB IFsrmAutoApplyQuota_put_ExcludeFolders_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmAutoApplyQuota_CommitAndUpdateDerived_Proxy(
+    IFsrmAutoApplyQuota* This,
+    FsrmCommitOptions commitOptions,
+    FsrmTemplateApplyOptions applyOptions,
+    IFsrmDerivedObjectsResult **derivedObjectsResult);
+void __RPC_STUB IFsrmAutoApplyQuota_CommitAndUpdateDerived_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmAutoApplyQuota_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmQuotaManagerEx interface
+ */
+#ifndef __IFsrmQuotaManagerEx_INTERFACE_DEFINED__
+#define __IFsrmQuotaManagerEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmQuotaManagerEx, 0x4846cb01, 0xd430, 0x494f, 0xab,0xb4, 0xb1,0x05,0x49,0x99,0xfb,0x09);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("4846cb01-d430-494f-abb4-b1054999fb09")
+IFsrmQuotaManagerEx : public IFsrmQuotaManager
+{
+    virtual HRESULT STDMETHODCALLTYPE IsAffectedByQuota(
+        BSTR path,
+        FsrmEnumOptions options = FsrmEnumOptions_None,
+        VARIANT_BOOL *affected) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmQuotaManagerEx, 0x4846cb01, 0xd430, 0x494f, 0xab,0xb4, 0xb1,0x05,0x49,0x99,0xfb,0x09)
+#endif
+#else
+typedef struct IFsrmQuotaManagerExVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmQuotaManagerEx* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmQuotaManagerEx* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmQuotaManagerEx* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmQuotaManagerEx* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmQuotaManagerEx* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmQuotaManagerEx* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmQuotaManagerEx* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmQuotaManager methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_ActionVariables)(
+        IFsrmQuotaManagerEx* This,
+        SAFEARRAY **variables);
+
+    HRESULT (STDMETHODCALLTYPE *get_ActionVariableDescriptions)(
+        IFsrmQuotaManagerEx* This,
+        SAFEARRAY **descriptions);
+
+    HRESULT (STDMETHODCALLTYPE *CreateQuota)(
+        IFsrmQuotaManagerEx* This,
+        BSTR path,
+        IFsrmQuota **quota);
+
+    HRESULT (STDMETHODCALLTYPE *CreateAutoApplyQuota)(
+        IFsrmQuotaManagerEx* This,
+        BSTR quotaTemplateName,
+        BSTR path,
+        IFsrmAutoApplyQuota **quota);
+
+    HRESULT (STDMETHODCALLTYPE *GetQuota)(
+        IFsrmQuotaManagerEx* This,
+        BSTR path,
+        IFsrmQuota **quota);
+
+    HRESULT (STDMETHODCALLTYPE *GetAutoApplyQuota)(
+        IFsrmQuotaManagerEx* This,
+        BSTR path,
+        IFsrmAutoApplyQuota **quota);
+
+    HRESULT (STDMETHODCALLTYPE *GetRestrictiveQuota)(
+        IFsrmQuotaManagerEx* This,
+        BSTR path,
+        IFsrmQuota **quota);
+
+    HRESULT (STDMETHODCALLTYPE *EnumQuotas)(
+        IFsrmQuotaManagerEx* This,
+        BSTR path,
+        FsrmEnumOptions options,
+        IFsrmCommittableCollection **quotas);
+
+    HRESULT (STDMETHODCALLTYPE *EnumAutoApplyQuotas)(
+        IFsrmQuotaManagerEx* This,
+        BSTR path,
+        FsrmEnumOptions options,
+        IFsrmCommittableCollection **quotas);
+
+    HRESULT (STDMETHODCALLTYPE *EnumEffectiveQuotas)(
+        IFsrmQuotaManagerEx* This,
+        BSTR path,
+        FsrmEnumOptions options,
+        IFsrmCommittableCollection **quotas);
+
+    HRESULT (STDMETHODCALLTYPE *Scan)(
+        IFsrmQuotaManagerEx* This,
+        BSTR strPath);
+
+    HRESULT (STDMETHODCALLTYPE *CreateQuotaCollection)(
+        IFsrmQuotaManagerEx* This,
+        IFsrmCommittableCollection **collection);
+
+    /*** IFsrmQuotaManagerEx methods ***/
+    HRESULT (STDMETHODCALLTYPE *IsAffectedByQuota)(
+        IFsrmQuotaManagerEx* This,
+        BSTR path,
+        FsrmEnumOptions options,
+        VARIANT_BOOL *affected);
+
+    END_INTERFACE
+} IFsrmQuotaManagerExVtbl;
+interface IFsrmQuotaManagerEx {
+    CONST_VTBL IFsrmQuotaManagerExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IFsrmQuotaManagerEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IFsrmQuotaManagerEx_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IFsrmQuotaManagerEx_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define IFsrmQuotaManagerEx_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define IFsrmQuotaManagerEx_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define IFsrmQuotaManagerEx_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define IFsrmQuotaManagerEx_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmQuotaManager methods ***/
 #define IFsrmQuotaManagerEx_get_ActionVariables(This,variables) (This)->lpVtbl->get_ActionVariables(This,variables)
 #define IFsrmQuotaManagerEx_get_ActionVariableDescriptions(This,descriptions) (This)->lpVtbl->get_ActionVariableDescriptions(This,descriptions)
 #define IFsrmQuotaManagerEx_CreateQuota(This,path,quota) (This)->lpVtbl->CreateQuota(This,path,quota)
@@ -931,9 +2680,423 @@
 #define IFsrmQuotaManagerEx_EnumEffectiveQuotas(This,path,options,quotas) (This)->lpVtbl->EnumEffectiveQuotas(This,path,options,quotas)
 #define IFsrmQuotaManagerEx_Scan(This,strPath) (This)->lpVtbl->Scan(This,strPath)
 #define IFsrmQuotaManagerEx_CreateQuotaCollection(This,collection) (This)->lpVtbl->CreateQuotaCollection(This,collection)
+/*** IFsrmQuotaManagerEx methods ***/
 #define IFsrmQuotaManagerEx_IsAffectedByQuota(This,path,options,affected) (This)->lpVtbl->IsAffectedByQuota(This,path,options,affected)
-#endif /*COBJMACROS*/
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_QueryInterface(IFsrmQuotaManagerEx* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmQuotaManagerEx_AddRef(IFsrmQuotaManagerEx* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmQuotaManagerEx_Release(IFsrmQuotaManagerEx* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_GetTypeInfoCount(IFsrmQuotaManagerEx* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_GetTypeInfo(IFsrmQuotaManagerEx* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_GetIDsOfNames(IFsrmQuotaManagerEx* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_Invoke(IFsrmQuotaManagerEx* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmQuotaManager methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_get_ActionVariables(IFsrmQuotaManagerEx* This,SAFEARRAY **variables) {
+    return This->lpVtbl->get_ActionVariables(This,variables);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_get_ActionVariableDescriptions(IFsrmQuotaManagerEx* This,SAFEARRAY **descriptions) {
+    return This->lpVtbl->get_ActionVariableDescriptions(This,descriptions);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_CreateQuota(IFsrmQuotaManagerEx* This,BSTR path,IFsrmQuota **quota) {
+    return This->lpVtbl->CreateQuota(This,path,quota);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_CreateAutoApplyQuota(IFsrmQuotaManagerEx* This,BSTR quotaTemplateName,BSTR path,IFsrmAutoApplyQuota **quota) {
+    return This->lpVtbl->CreateAutoApplyQuota(This,quotaTemplateName,path,quota);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_GetQuota(IFsrmQuotaManagerEx* This,BSTR path,IFsrmQuota **quota) {
+    return This->lpVtbl->GetQuota(This,path,quota);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_GetAutoApplyQuota(IFsrmQuotaManagerEx* This,BSTR path,IFsrmAutoApplyQuota **quota) {
+    return This->lpVtbl->GetAutoApplyQuota(This,path,quota);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_GetRestrictiveQuota(IFsrmQuotaManagerEx* This,BSTR path,IFsrmQuota **quota) {
+    return This->lpVtbl->GetRestrictiveQuota(This,path,quota);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_EnumQuotas(IFsrmQuotaManagerEx* This,BSTR path,FsrmEnumOptions options,IFsrmCommittableCollection **quotas) {
+    return This->lpVtbl->EnumQuotas(This,path,options,quotas);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_EnumAutoApplyQuotas(IFsrmQuotaManagerEx* This,BSTR path,FsrmEnumOptions options,IFsrmCommittableCollection **quotas) {
+    return This->lpVtbl->EnumAutoApplyQuotas(This,path,options,quotas);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_EnumEffectiveQuotas(IFsrmQuotaManagerEx* This,BSTR path,FsrmEnumOptions options,IFsrmCommittableCollection **quotas) {
+    return This->lpVtbl->EnumEffectiveQuotas(This,path,options,quotas);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_Scan(IFsrmQuotaManagerEx* This,BSTR strPath) {
+    return This->lpVtbl->Scan(This,strPath);
+}
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_CreateQuotaCollection(IFsrmQuotaManagerEx* This,IFsrmCommittableCollection **collection) {
+    return This->lpVtbl->CreateQuotaCollection(This,collection);
+}
+/*** IFsrmQuotaManagerEx methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaManagerEx_IsAffectedByQuota(IFsrmQuotaManagerEx* This,BSTR path,FsrmEnumOptions options,VARIANT_BOOL *affected) {
+    return This->lpVtbl->IsAffectedByQuota(This,path,options,affected);
+}
+#endif
+#endif
 
-#endif /*(_WIN32_WINNT >= 0x0600)*/
-#include <fsrmscreen.h>
-#endif /*_INC_FSRMQUOTA*/
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmQuotaManagerEx_IsAffectedByQuota_Proxy(
+    IFsrmQuotaManagerEx* This,
+    BSTR path,
+    FsrmEnumOptions options,
+    VARIANT_BOOL *affected);
+void __RPC_STUB IFsrmQuotaManagerEx_IsAffectedByQuota_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmQuotaManagerEx_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmQuotaTemplateImported interface
+ */
+#ifndef __IFsrmQuotaTemplateImported_INTERFACE_DEFINED__
+#define __IFsrmQuotaTemplateImported_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmQuotaTemplateImported, 0x9a2bf113, 0xa329, 0x44cc, 0x80,0x9a, 0x5c,0x00,0xfc,0xe8,0xda,0x40);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("9a2bf113-a329-44cc-809a-5c00fce8da40")
+IFsrmQuotaTemplateImported : public IFsrmQuotaTemplate
+{
+    virtual HRESULT STDMETHODCALLTYPE get_OverwriteOnCommit(
+        VARIANT_BOOL *overwrite) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_OverwriteOnCommit(
+        VARIANT_BOOL overwrite) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmQuotaTemplateImported, 0x9a2bf113, 0xa329, 0x44cc, 0x80,0x9a, 0x5c,0x00,0xfc,0xe8,0xda,0x40)
+#endif
+#else
+typedef struct IFsrmQuotaTemplateImportedVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmQuotaTemplateImported* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmQuotaTemplateImported* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmQuotaTemplateImported* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmQuotaTemplateImported* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmQuotaTemplateImported* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmQuotaTemplateImported* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmQuotaTemplateImported* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IFsrmQuotaTemplateImported* This,
+        FSRM_OBJECT_ID *id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IFsrmQuotaTemplateImported* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IFsrmQuotaTemplateImported* This,
+        BSTR description);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmQuotaTemplateImported* This);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IFsrmQuotaTemplateImported* This);
+
+    /*** IFsrmQuotaBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_QuotaLimit)(
+        IFsrmQuotaTemplateImported* This,
+        VARIANT *quotaLimit);
+
+    HRESULT (STDMETHODCALLTYPE *put_QuotaLimit)(
+        IFsrmQuotaTemplateImported* This,
+        VARIANT quotaLimit);
+
+    HRESULT (STDMETHODCALLTYPE *get_QuotaFlags)(
+        IFsrmQuotaTemplateImported* This,
+        LONG *quotaFlags);
+
+    HRESULT (STDMETHODCALLTYPE *put_QuotaFlags)(
+        IFsrmQuotaTemplateImported* This,
+        LONG quotaFlags);
+
+    HRESULT (STDMETHODCALLTYPE *get_Thresholds)(
+        IFsrmQuotaTemplateImported* This,
+        SAFEARRAY **thresholds);
+
+    HRESULT (STDMETHODCALLTYPE *AddThreshold)(
+        IFsrmQuotaTemplateImported* This,
+        FSRM_QUOTA_THRESHOLD threshold);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteThreshold)(
+        IFsrmQuotaTemplateImported* This,
+        FSRM_QUOTA_THRESHOLD threshold);
+
+    HRESULT (STDMETHODCALLTYPE *ModifyThreshold)(
+        IFsrmQuotaTemplateImported* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        FSRM_QUOTA_THRESHOLD newThreshold);
+
+    HRESULT (STDMETHODCALLTYPE *CreateThresholdAction)(
+        IFsrmQuotaTemplateImported* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        FsrmActionType actionType,
+        IFsrmAction **action);
+
+    HRESULT (STDMETHODCALLTYPE *EnumThresholdActions)(
+        IFsrmQuotaTemplateImported* This,
+        FSRM_QUOTA_THRESHOLD threshold,
+        IFsrmCollection **actions);
+
+    /*** IFsrmQuotaTemplate methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IFsrmQuotaTemplateImported* This,
+        BSTR *name);
+
+    HRESULT (STDMETHODCALLTYPE *put_Name)(
+        IFsrmQuotaTemplateImported* This,
+        BSTR name);
+
+    HRESULT (STDMETHODCALLTYPE *CopyTemplate)(
+        IFsrmQuotaTemplateImported* This,
+        BSTR quotaTemplateName);
+
+    HRESULT (STDMETHODCALLTYPE *CommitAndUpdateDerived)(
+        IFsrmQuotaTemplateImported* This,
+        FsrmCommitOptions commitOptions,
+        FsrmTemplateApplyOptions applyOptions,
+        IFsrmDerivedObjectsResult **derivedObjectsResult);
+
+    /*** IFsrmQuotaTemplateImported methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_OverwriteOnCommit)(
+        IFsrmQuotaTemplateImported* This,
+        VARIANT_BOOL *overwrite);
+
+    HRESULT (STDMETHODCALLTYPE *put_OverwriteOnCommit)(
+        IFsrmQuotaTemplateImported* This,
+        VARIANT_BOOL overwrite);
+
+    END_INTERFACE
+} IFsrmQuotaTemplateImportedVtbl;
+interface IFsrmQuotaTemplateImported {
+    CONST_VTBL IFsrmQuotaTemplateImportedVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmQuotaTemplateImported_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmQuotaTemplateImported_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmQuotaTemplateImported_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmQuotaTemplateImported_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmQuotaTemplateImported_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmQuotaTemplateImported_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmQuotaTemplateImported_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmObject methods ***/
+#define IFsrmQuotaTemplateImported_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
+#define IFsrmQuotaTemplateImported_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
+#define IFsrmQuotaTemplateImported_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
+#define IFsrmQuotaTemplateImported_Delete(This) (This)->lpVtbl->Delete(This)
+#define IFsrmQuotaTemplateImported_Commit(This) (This)->lpVtbl->Commit(This)
+/*** IFsrmQuotaBase methods ***/
+#define IFsrmQuotaTemplateImported_get_QuotaLimit(This,quotaLimit) (This)->lpVtbl->get_QuotaLimit(This,quotaLimit)
+#define IFsrmQuotaTemplateImported_put_QuotaLimit(This,quotaLimit) (This)->lpVtbl->put_QuotaLimit(This,quotaLimit)
+#define IFsrmQuotaTemplateImported_get_QuotaFlags(This,quotaFlags) (This)->lpVtbl->get_QuotaFlags(This,quotaFlags)
+#define IFsrmQuotaTemplateImported_put_QuotaFlags(This,quotaFlags) (This)->lpVtbl->put_QuotaFlags(This,quotaFlags)
+#define IFsrmQuotaTemplateImported_get_Thresholds(This,thresholds) (This)->lpVtbl->get_Thresholds(This,thresholds)
+#define IFsrmQuotaTemplateImported_AddThreshold(This,threshold) (This)->lpVtbl->AddThreshold(This,threshold)
+#define IFsrmQuotaTemplateImported_DeleteThreshold(This,threshold) (This)->lpVtbl->DeleteThreshold(This,threshold)
+#define IFsrmQuotaTemplateImported_ModifyThreshold(This,threshold,newThreshold) (This)->lpVtbl->ModifyThreshold(This,threshold,newThreshold)
+#define IFsrmQuotaTemplateImported_CreateThresholdAction(This,threshold,actionType,action) (This)->lpVtbl->CreateThresholdAction(This,threshold,actionType,action)
+#define IFsrmQuotaTemplateImported_EnumThresholdActions(This,threshold,actions) (This)->lpVtbl->EnumThresholdActions(This,threshold,actions)
+/*** IFsrmQuotaTemplate methods ***/
+#define IFsrmQuotaTemplateImported_get_Name(This,name) (This)->lpVtbl->get_Name(This,name)
+#define IFsrmQuotaTemplateImported_put_Name(This,name) (This)->lpVtbl->put_Name(This,name)
+#define IFsrmQuotaTemplateImported_CopyTemplate(This,quotaTemplateName) (This)->lpVtbl->CopyTemplate(This,quotaTemplateName)
+#define IFsrmQuotaTemplateImported_CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult) (This)->lpVtbl->CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult)
+/*** IFsrmQuotaTemplateImported methods ***/
+#define IFsrmQuotaTemplateImported_get_OverwriteOnCommit(This,overwrite) (This)->lpVtbl->get_OverwriteOnCommit(This,overwrite)
+#define IFsrmQuotaTemplateImported_put_OverwriteOnCommit(This,overwrite) (This)->lpVtbl->put_OverwriteOnCommit(This,overwrite)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_QueryInterface(IFsrmQuotaTemplateImported* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmQuotaTemplateImported_AddRef(IFsrmQuotaTemplateImported* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmQuotaTemplateImported_Release(IFsrmQuotaTemplateImported* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_GetTypeInfoCount(IFsrmQuotaTemplateImported* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_GetTypeInfo(IFsrmQuotaTemplateImported* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_GetIDsOfNames(IFsrmQuotaTemplateImported* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_Invoke(IFsrmQuotaTemplateImported* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmObject methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_get_Id(IFsrmQuotaTemplateImported* This,FSRM_OBJECT_ID *id) {
+    return This->lpVtbl->get_Id(This,id);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_get_Description(IFsrmQuotaTemplateImported* This,BSTR *description) {
+    return This->lpVtbl->get_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_put_Description(IFsrmQuotaTemplateImported* This,BSTR description) {
+    return This->lpVtbl->put_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_Delete(IFsrmQuotaTemplateImported* This) {
+    return This->lpVtbl->Delete(This);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_Commit(IFsrmQuotaTemplateImported* This) {
+    return This->lpVtbl->Commit(This);
+}
+/*** IFsrmQuotaBase methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_get_QuotaLimit(IFsrmQuotaTemplateImported* This,VARIANT *quotaLimit) {
+    return This->lpVtbl->get_QuotaLimit(This,quotaLimit);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_put_QuotaLimit(IFsrmQuotaTemplateImported* This,VARIANT quotaLimit) {
+    return This->lpVtbl->put_QuotaLimit(This,quotaLimit);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_get_QuotaFlags(IFsrmQuotaTemplateImported* This,LONG *quotaFlags) {
+    return This->lpVtbl->get_QuotaFlags(This,quotaFlags);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_put_QuotaFlags(IFsrmQuotaTemplateImported* This,LONG quotaFlags) {
+    return This->lpVtbl->put_QuotaFlags(This,quotaFlags);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_get_Thresholds(IFsrmQuotaTemplateImported* This,SAFEARRAY **thresholds) {
+    return This->lpVtbl->get_Thresholds(This,thresholds);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_AddThreshold(IFsrmQuotaTemplateImported* This,FSRM_QUOTA_THRESHOLD threshold) {
+    return This->lpVtbl->AddThreshold(This,threshold);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_DeleteThreshold(IFsrmQuotaTemplateImported* This,FSRM_QUOTA_THRESHOLD threshold) {
+    return This->lpVtbl->DeleteThreshold(This,threshold);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_ModifyThreshold(IFsrmQuotaTemplateImported* This,FSRM_QUOTA_THRESHOLD threshold,FSRM_QUOTA_THRESHOLD newThreshold) {
+    return This->lpVtbl->ModifyThreshold(This,threshold,newThreshold);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_CreateThresholdAction(IFsrmQuotaTemplateImported* This,FSRM_QUOTA_THRESHOLD threshold,FsrmActionType actionType,IFsrmAction **action) {
+    return This->lpVtbl->CreateThresholdAction(This,threshold,actionType,action);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_EnumThresholdActions(IFsrmQuotaTemplateImported* This,FSRM_QUOTA_THRESHOLD threshold,IFsrmCollection **actions) {
+    return This->lpVtbl->EnumThresholdActions(This,threshold,actions);
+}
+/*** IFsrmQuotaTemplate methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_get_Name(IFsrmQuotaTemplateImported* This,BSTR *name) {
+    return This->lpVtbl->get_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_put_Name(IFsrmQuotaTemplateImported* This,BSTR name) {
+    return This->lpVtbl->put_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_CopyTemplate(IFsrmQuotaTemplateImported* This,BSTR quotaTemplateName) {
+    return This->lpVtbl->CopyTemplate(This,quotaTemplateName);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_CommitAndUpdateDerived(IFsrmQuotaTemplateImported* This,FsrmCommitOptions commitOptions,FsrmTemplateApplyOptions applyOptions,IFsrmDerivedObjectsResult **derivedObjectsResult) {
+    return This->lpVtbl->CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult);
+}
+/*** IFsrmQuotaTemplateImported methods ***/
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_get_OverwriteOnCommit(IFsrmQuotaTemplateImported* This,VARIANT_BOOL *overwrite) {
+    return This->lpVtbl->get_OverwriteOnCommit(This,overwrite);
+}
+static FORCEINLINE HRESULT IFsrmQuotaTemplateImported_put_OverwriteOnCommit(IFsrmQuotaTemplateImported* This,VARIANT_BOOL overwrite) {
+    return This->lpVtbl->put_OverwriteOnCommit(This,overwrite);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmQuotaTemplateImported_get_OverwriteOnCommit_Proxy(
+    IFsrmQuotaTemplateImported* This,
+    VARIANT_BOOL *overwrite);
+void __RPC_STUB IFsrmQuotaTemplateImported_get_OverwriteOnCommit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmQuotaTemplateImported_put_OverwriteOnCommit_Proxy(
+    IFsrmQuotaTemplateImported* This,
+    VARIANT_BOOL overwrite);
+void __RPC_STUB IFsrmQuotaTemplateImported_put_OverwriteOnCommit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmQuotaTemplateImported_INTERFACE_DEFINED__ */
+
+#endif
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
+void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);
+ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __fsrmquota_h__ */
diff --git a/mingw-w64-headers/include/fsrmquota.idl b/mingw-w64-headers/include/fsrmquota.idl
new file mode 100644
index 0000000..0e5ba7b
--- /dev/null
+++ b/mingw-w64-headers/include/fsrmquota.idl
@@ -0,0 +1,125 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+
+
+import "oaidl.idl";
+import "fsrmenums.idl";
+import "fsrm.idl";
+
+cpp_quote("#include <winapifamily.h>")
+cpp_quote("")
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
+
+interface IFsrmAutoApplyQuota;
+interface IFsrmQuota;
+interface IFsrmQuotaBase;
+interface IFsrmQuotaObject;
+interface IFsrmQuotaManager;
+interface IFsrmQuotaTemplate;
+interface IFsrmQuotaTemplateImported;
+interface IFsrmQuotaTemplateManager;
+
+typedef long FSRM_QUOTA_THRESHOLD;
+
+const DISPID FSRM_DISPID_QUOTA_BASE = FSRM_DISPID_FEATURE_QUOTA | 0x100000;
+const DISPID FSRM_DISPID_QUOTA_OBJECT = FSRM_DISPID_QUOTA_BASE | 0x010000;
+const DISPID FSRM_DISPID_QUOTA = FSRM_DISPID_QUOTA_OBJECT | 0x001000;
+const DISPID FSRM_DISPID_AUTOAPPLYQUOTA = FSRM_DISPID_QUOTA_OBJECT | 0x002000;
+const DISPID FSRM_DISPID_QUOTA_TEMPLATE = FSRM_DISPID_QUOTA_BASE | 0x020000;
+const DISPID FSRM_DISPID_QUOTA_TEMPLATE_IMPORTED = FSRM_DISPID_QUOTA_TEMPLATE | 0x001000;
+const DISPID FSRM_DISPID_QUOTA_MANAGER = FSRM_DISPID_FEATURE_QUOTA | 0x200000;
+const DISPID FSRM_DISPID_QUOTA_TEMPLATE_MANAGER = FSRM_DISPID_FEATURE_QUOTA | 0x300000;
+const DISPID FSRM_DISPID_QUOTA_MANAGER_EX = FSRM_DISPID_FEATURE_QUOTA | 0x400000;
+
+const ULONG FsrmMaxNumberThresholds = 16;
+const ULONG FsrmMinThresholdValue = 1;
+const ULONG FsrmMaxThresholdValue = 250;
+const ULONG FsrmMinQuotaLimit = 1024;
+const ULONG FsrmMaxExcludeFolders = 32;
+
+[object, uuid (8bb68c7d-19d8-4ffb-809e-be4fc1734014), dual, pointer_default (unique)]
+interface IFsrmQuotaManager : IDispatch {
+  [propget, id (FSRM_DISPID_QUOTA_MANAGER | 0x81)] HRESULT ActionVariables ([out, retval] SAFEARRAY (VARIANT) *variables);
+  [propget, id (FSRM_DISPID_QUOTA_MANAGER | 0x82)] HRESULT ActionVariableDescriptions ([out, retval] SAFEARRAY (VARIANT) *descriptions);
+  [id (FSRM_DISPID_QUOTA_MANAGER | 0x1)] HRESULT CreateQuota ([in] BSTR path,[out, retval] IFsrmQuota **quota);
+  [id (FSRM_DISPID_QUOTA_MANAGER | 0x2)] HRESULT CreateAutoApplyQuota ([in] BSTR quotaTemplateName,[in] BSTR path,[out, retval] IFsrmAutoApplyQuota **quota);
+  [id (FSRM_DISPID_QUOTA_MANAGER | 0x3)] HRESULT GetQuota ([in] BSTR path,[out, retval] IFsrmQuota **quota);
+  [id (FSRM_DISPID_QUOTA_MANAGER | 0x4)] HRESULT GetAutoApplyQuota ([in] BSTR path,[out, retval] IFsrmAutoApplyQuota **quota);
+  [id (FSRM_DISPID_QUOTA_MANAGER | 0x5)] HRESULT GetRestrictiveQuota ([in] BSTR path,[out, retval] IFsrmQuota **quota);
+  [id (FSRM_DISPID_QUOTA_MANAGER | 0x6)] HRESULT EnumQuotas ([in, defaultvalue (L"")] BSTR path,[in, defaultvalue (FsrmEnumOptions_None)] FsrmEnumOptions options,[out, retval] IFsrmCommittableCollection **quotas);
+  [id (FSRM_DISPID_QUOTA_MANAGER | 0x7)] HRESULT EnumAutoApplyQuotas ([in, defaultvalue (L"")] BSTR path,[in, defaultvalue (FsrmEnumOptions_None)] FsrmEnumOptions options,[out, retval] IFsrmCommittableCollection **quotas);
+  [id (FSRM_DISPID_QUOTA_MANAGER | 0x8)] HRESULT EnumEffectiveQuotas ([in] BSTR path,[in, defaultvalue (FsrmEnumOptions_None)] FsrmEnumOptions options,[out, retval] IFsrmCommittableCollection **quotas);
+  [id (FSRM_DISPID_QUOTA_MANAGER | 0x9)] HRESULT Scan ([in] BSTR strPath);
+  [id (FSRM_DISPID_QUOTA_MANAGER | 0xa)] HRESULT CreateQuotaCollection ([out, retval] IFsrmCommittableCollection **collection);
+};
+
+[object, uuid (4173ac41-172d-4d52-963c-fdc7e415f717), dual, pointer_default (unique)]
+interface IFsrmQuotaTemplateManager : IDispatch {
+  [id (FSRM_DISPID_QUOTA_TEMPLATE_MANAGER | 0x1)] HRESULT CreateTemplate ([out, retval] IFsrmQuotaTemplate **quotaTemplate);
+  [id (FSRM_DISPID_QUOTA_TEMPLATE_MANAGER | 0x2)] HRESULT GetTemplate ([in, defaultvalue (L"")] BSTR name,[out, retval] IFsrmQuotaTemplate **quotaTemplate);
+  [id (FSRM_DISPID_QUOTA_TEMPLATE_MANAGER | 0x3)] HRESULT EnumTemplates ([in, defaultvalue (FsrmEnumOptions_None)] FsrmEnumOptions options,[out, retval] IFsrmCommittableCollection **quotaTemplates);
+  [id (FSRM_DISPID_QUOTA_TEMPLATE_MANAGER | 0x4)] HRESULT ExportTemplates ([in, defaultvalue (NULL)] VARIANT *quotaTemplateNamesArray,[out, retval] BSTR *serializedQuotaTemplates);
+  [id (FSRM_DISPID_QUOTA_TEMPLATE_MANAGER | 0x5)] HRESULT ImportTemplates ([in] BSTR serializedQuotaTemplates,[in, defaultvalue (NULL)] VARIANT *quotaTemplateNamesArray,[out, retval] IFsrmCommittableCollection **quotaTemplates);
+};
+
+[object, uuid (1568a795-3924-4118-b74b-68d8f0fa5daf), dual, pointer_default (unique)]
+interface IFsrmQuotaBase : IFsrmObject {
+  [propget, id (FSRM_DISPID_QUOTA_BASE | 0x81)] HRESULT QuotaLimit ([out, retval] VARIANT *quotaLimit);
+  [propput, id (FSRM_DISPID_QUOTA_BASE | 0x81)] HRESULT QuotaLimit ([in] VARIANT quotaLimit);
+  [propget, id (FSRM_DISPID_QUOTA_BASE | 0x82)] HRESULT QuotaFlags ([out, retval] long *quotaFlags);
+  [propput, id (FSRM_DISPID_QUOTA_BASE | 0x82)] HRESULT QuotaFlags ([in] long quotaFlags);
+  [propget, id (FSRM_DISPID_QUOTA_BASE | 0x83)] HRESULT Thresholds ([out, retval] SAFEARRAY (VARIANT) *thresholds);
+  [id (FSRM_DISPID_QUOTA_BASE | 0x1)] HRESULT AddThreshold ([in] FSRM_QUOTA_THRESHOLD threshold);
+  [id (FSRM_DISPID_QUOTA_BASE | 0x2)] HRESULT DeleteThreshold ([in] FSRM_QUOTA_THRESHOLD threshold);
+  [id (FSRM_DISPID_QUOTA_BASE | 0x3)] HRESULT ModifyThreshold ([in] FSRM_QUOTA_THRESHOLD threshold,[in] FSRM_QUOTA_THRESHOLD newThreshold);
+  [id (FSRM_DISPID_QUOTA_BASE | 0x4)] HRESULT CreateThresholdAction ([in] FSRM_QUOTA_THRESHOLD threshold,[in] FsrmActionType actionType,[out, retval] IFsrmAction **action);
+  [id (FSRM_DISPID_QUOTA_BASE | 0x5)] HRESULT EnumThresholdActions ([in] FSRM_QUOTA_THRESHOLD threshold,[out, retval] IFsrmCollection **actions);
+}
+
+[object, uuid (42dc3511-61d5-48ae-b6dc-59fc00c0a8d6), dual, pointer_default (unique)]
+interface IFsrmQuotaObject : IFsrmQuotaBase {
+  [propget, id (FSRM_DISPID_QUOTA_OBJECT | 0x81)] HRESULT Path ([out, retval] BSTR *path);
+  [propget, id (FSRM_DISPID_QUOTA_OBJECT | 0x82)] HRESULT UserSid ([out, retval] BSTR *userSid);
+  [propget, id (FSRM_DISPID_QUOTA_OBJECT | 0x83)] HRESULT UserAccount ([out, retval] BSTR *userAccount);
+  [propget, id (FSRM_DISPID_QUOTA_OBJECT | 0x84)] HRESULT SourceTemplateName ([out, retval] BSTR *quotaTemplateName);
+  [propget, id (FSRM_DISPID_QUOTA_OBJECT | 0x85)] HRESULT MatchesSourceTemplate ([out, retval] VARIANT_BOOL *matches);
+  [id (FSRM_DISPID_QUOTA_OBJECT | 0x1)] HRESULT ApplyTemplate ([in] BSTR quotaTemplateName);
+};
+
+[object, uuid (a2efab31-295e-46bb-b976-e86d58b52e8b), dual, pointer_default (unique)]
+interface IFsrmQuotaTemplate : IFsrmQuotaBase {
+  [propget, id (FSRM_DISPID_QUOTA_TEMPLATE | 0x81)] HRESULT Name ([out, retval] BSTR *name);
+  [propput, id (FSRM_DISPID_QUOTA_TEMPLATE | 0x81)] HRESULT Name ([in] BSTR name);
+  [id (FSRM_DISPID_QUOTA_TEMPLATE | 0x1)] HRESULT CopyTemplate ([in] BSTR quotaTemplateName);
+  [id (FSRM_DISPID_QUOTA_TEMPLATE | 0x2)] HRESULT CommitAndUpdateDerived ([in] FsrmCommitOptions commitOptions,[in] FsrmTemplateApplyOptions applyOptions,[out, retval] IFsrmDerivedObjectsResult **derivedObjectsResult);
+};
+
+[object, uuid (377f739d-9647-4b8e-97d2-5ffce6d759cd), dual, pointer_default (unique)]
+interface IFsrmQuota : IFsrmQuotaObject {
+  [propget, id (FSRM_DISPID_QUOTA | 0x81)] HRESULT QuotaUsed ([out, retval] VARIANT *used);
+  [propget, id (FSRM_DISPID_QUOTA | 0x82)] HRESULT QuotaPeakUsage ([out, retval] VARIANT *peakUsage);
+  [propget, id (FSRM_DISPID_QUOTA | 0x83)] HRESULT QuotaPeakUsageTime ([out, retval] DATE *peakUsageDateTime);
+  [id (FSRM_DISPID_QUOTA | 0x1)] HRESULT ResetPeakUsage ();
+  [id (FSRM_DISPID_QUOTA | 0x2)] HRESULT RefreshUsageProperties ();
+};
+
+[object, uuid (f82e5729-6aba-4740-bfc7-c7f58f75fb7b), dual, pointer_default (unique)]
+interface IFsrmAutoApplyQuota : IFsrmQuotaObject {
+  [propget, id (FSRM_DISPID_AUTOAPPLYQUOTA | 0x81)] HRESULT ExcludeFolders ([out, retval] SAFEARRAY (VARIANT) *folders);
+  [propput, id (FSRM_DISPID_AUTOAPPLYQUOTA | 0x81)] HRESULT ExcludeFolders ([in] SAFEARRAY (VARIANT) folders);
+  [id (FSRM_DISPID_AUTOAPPLYQUOTA | 0x1)] HRESULT CommitAndUpdateDerived ([in] FsrmCommitOptions commitOptions,[in] FsrmTemplateApplyOptions applyOptions,[out, retval] IFsrmDerivedObjectsResult **derivedObjectsResult);
+};
+
+[object, uuid (4846cb01-d430-494f-abb4-b1054999fb09), dual, pointer_default (unique)]
+interface IFsrmQuotaManagerEx : IFsrmQuotaManager {
+  [id (FSRM_DISPID_QUOTA_MANAGER_EX | 0x1)] HRESULT IsAffectedByQuota ([in] BSTR path,[in, defaultvalue (FsrmEnumOptions_None)] FsrmEnumOptions options,[out, retval] VARIANT_BOOL *affected);
+};
+
+[object, uuid (9a2bf113-a329-44cc-809a-5c00fce8da40), dual, pointer_default (unique)]
+interface IFsrmQuotaTemplateImported : IFsrmQuotaTemplate {
+  [propget, id (FSRM_DISPID_QUOTA_TEMPLATE_IMPORTED | 0x81)] HRESULT OverwriteOnCommit ([out, retval] VARIANT_BOOL *overwrite);
+  [propput, id (FSRM_DISPID_QUOTA_TEMPLATE_IMPORTED | 0x81)] HRESULT OverwriteOnCommit ([in] VARIANT_BOOL overwrite);
+};
+cpp_quote("#endif")
diff --git a/mingw-w64-headers/include/fsrmreports.h b/mingw-w64-headers/include/fsrmreports.h
index 0f6da46..e05ce61 100644
--- a/mingw-w64-headers/include/fsrmreports.h
+++ b/mingw-w64-headers/include/fsrmreports.h
@@ -1,324 +1,278 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#include <fsrmenums.h>
-#include <fsrm.h>
-#include <fsrmquota.h>
-#include <fsrmscreen.h>
+/*** Autogenerated by WIDL 1.6 from fsrmreports.idl - Do not edit ***/
 
-#ifndef _INC_FSRMREPORTS
-#define _INC_FSRMREPORTS
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
 
-#if (_WIN32_WINNT >= 0x0600)
-#ifndef __IFsrmAction_FWD_DEFINED__
-#define __IFsrmAction_FWD_DEFINED__
-typedef struct IFsrmAction IFsrmAction;
-#endif /* __IFsrmAction_FWD_DEFINED__ */
+#include <rpc.h>
+#include <rpcndr.h>
 
-#ifndef __IFsrmActionCommand_FWD_DEFINED__
-#define __IFsrmActionCommand_FWD_DEFINED__
-typedef struct IFsrmActionCommand IFsrmActionCommand;
-#endif /* __IFsrmActionCommand_FWD_DEFINED__ */
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
 
-#ifndef __IFsrmActionEmail_FWD_DEFINED__
-#define __IFsrmActionEmail_FWD_DEFINED__
-typedef struct IFsrmActionEmail IFsrmActionEmail;
-#endif /* __IFsrmActionEmail_FWD_DEFINED__ */
+#ifndef __fsrmreports_h__
+#define __fsrmreports_h__
 
-#ifndef __IFsrmActionEmail2_FWD_DEFINED__
-#define __IFsrmActionEmail2_FWD_DEFINED__
-typedef struct IFsrmActionEmail2 IFsrmActionEmail2;
-#endif /* __IFsrmActionEmail2_FWD_DEFINED__ */
-
-#ifndef __IFsrmActionEventLog_FWD_DEFINED__
-#define __IFsrmActionEventLog_FWD_DEFINED__
-typedef struct IFsrmActionEventLog IFsrmActionEventLog;
-#endif /* __IFsrmActionEventLog_FWD_DEFINED__ */
-
-#ifndef __IFsrmActionReport_FWD_DEFINED__
-#define __IFsrmActionReport_FWD_DEFINED__
-typedef struct IFsrmActionReport IFsrmActionReport;
-#endif /* __IFsrmActionReport_FWD_DEFINED__ */
-
-#ifndef __IFsrmAutoApplyQuota_FWD_DEFINED__
-#define __IFsrmAutoApplyQuota_FWD_DEFINED__
-typedef struct IFsrmAutoApplyQuota IFsrmAutoApplyQuota;
-#endif /* __IFsrmAutoApplyQuota_FWD_DEFINED__ */
-
-#ifndef __IFsrmClassificationManager_FWD_DEFINED__
-#define __IFsrmClassificationManager_FWD_DEFINED__
-typedef struct IFsrmClassificationManager IFsrmClassificationManager;
-#endif /* __IFsrmClassificationManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmClassificationRule_FWD_DEFINED__
-#define __IFsrmClassificationRule_FWD_DEFINED__
-typedef struct IFsrmClassificationRule IFsrmClassificationRule;
-#endif /* __IFsrmClassificationRule_FWD_DEFINED__ */
-
-#ifndef __IFsrmClassifierModuleDefinition_FWD_DEFINED__
-#define __IFsrmClassifierModuleDefinition_FWD_DEFINED__
-typedef struct IFsrmClassifierModuleDefinition IFsrmClassifierModuleDefinition;
-#endif /* __IFsrmClassifierModuleDefinition_FWD_DEFINED__ */
-
-#ifndef __IFsrmClassifierModuleImplementation_FWD_DEFINED__
-#define __IFsrmClassifierModuleImplementation_FWD_DEFINED__
-typedef struct IFsrmClassifierModuleImplementation IFsrmClassifierModuleImplementation;
-#endif /* __IFsrmClassifierModuleImplementation_FWD_DEFINED__ */
-
-#ifndef __IFsrmCollection_FWD_DEFINED__
-#define __IFsrmCollection_FWD_DEFINED__
-typedef struct IFsrmCollection IFsrmCollection;
-#endif /* __IFsrmCollection_FWD_DEFINED__ */
-
-#ifndef __IFsrmCommittableCollection_FWD_DEFINED__
-#define __IFsrmCommittableCollection_FWD_DEFINED__
-typedef struct IFsrmCommittableCollection IFsrmCommittableCollection;
-#endif /* __IFsrmCommittableCollection_FWD_DEFINED__ */
-
-#ifndef __IFsrmDerivedObjectsResult_FWD_DEFINED__
-#define __IFsrmDerivedObjectsResult_FWD_DEFINED__
-typedef struct IFsrmDerivedObjectsResult IFsrmDerivedObjectsResult;
-#endif /* __IFsrmDerivedObjectsResult_FWD_DEFINED__ */
-
-#ifndef __IFsrmExportImport_FWD_DEFINED__
-#define __IFsrmExportImport_FWD_DEFINED__
-typedef struct IFsrmExportImport IFsrmExportImport;
-#endif /* __IFsrmExportImport_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileGroup_FWD_DEFINED__
-#define __IFsrmFileGroup_FWD_DEFINED__
-typedef struct IFsrmFileGroup IFsrmFileGroup;
-#endif /* __IFsrmFileGroup_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileGroupImported_FWD_DEFINED__
-#define __IFsrmFileGroupImported_FWD_DEFINED__
-typedef struct IFsrmFileGroupImported IFsrmFileGroupImported;
-#endif /* __IFsrmFileGroupImported_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileGroupManager_FWD_DEFINED__
-#define __IFsrmFileGroupManager_FWD_DEFINED__
-typedef struct IFsrmFileGroupManager IFsrmFileGroupManager;
-#endif /* __IFsrmFileGroupManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileManagementJob_FWD_DEFINED__
-#define __IFsrmFileManagementJob_FWD_DEFINED__
-typedef struct IFsrmFileManagementJob IFsrmFileManagementJob;
-#endif /* __IFsrmFileManagementJob_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileManagementJobManager_FWD_DEFINED__
-#define __IFsrmFileManagementJobManager_FWD_DEFINED__
-typedef struct IFsrmFileManagementJobManager IFsrmFileManagementJobManager;
-#endif /* __IFsrmFileManagementJobManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreen_FWD_DEFINED__
-#define __IFsrmFileScreen_FWD_DEFINED__
-typedef struct IFsrmFileScreen IFsrmFileScreen;
-#endif /* __IFsrmFileScreen_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreenBase_FWD_DEFINED__
-#define __IFsrmFileScreenBase_FWD_DEFINED__
-typedef struct IFsrmFileScreenBase IFsrmFileScreenBase;
-#endif /* __IFsrmFileScreenBase_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreenException_FWD_DEFINED__
-#define __IFsrmFileScreenException_FWD_DEFINED__
-typedef struct IFsrmFileScreenException IFsrmFileScreenException;
-#endif /* __IFsrmFileScreenException_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreenManager_FWD_DEFINED__
-#define __IFsrmFileScreenManager_FWD_DEFINED__
-typedef struct IFsrmFileScreenManager IFsrmFileScreenManager;
-#endif /* __IFsrmFileScreenManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreenTemplate_FWD_DEFINED__
-#define __IFsrmFileScreenTemplate_FWD_DEFINED__
-typedef struct IFsrmFileScreenTemplate IFsrmFileScreenTemplate;
-#endif /* __IFsrmFileScreenTemplate_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreenTemplateImported_FWD_DEFINED__
-#define __IFsrmFileScreenTemplateImported_FWD_DEFINED__
-typedef struct IFsrmFileScreenTemplateImported IFsrmFileScreenTemplateImported;
-#endif /* __IFsrmFileScreenTemplateImported_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreenTemplateManager_FWD_DEFINED__
-#define __IFsrmFileScreenTemplateManager_FWD_DEFINED__
-typedef struct IFsrmFileScreenTemplateManager IFsrmFileScreenTemplateManager;
-#endif /* __IFsrmFileScreenTemplateManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmMutableCollection_FWD_DEFINED__
-#define __IFsrmMutableCollection_FWD_DEFINED__
-typedef struct IFsrmMutableCollection IFsrmMutableCollection;
-#endif /* __IFsrmMutableCollection_FWD_DEFINED__ */
-
-#ifndef __IFsrmObject_FWD_DEFINED__
-#define __IFsrmObject_FWD_DEFINED__
-typedef struct IFsrmObject IFsrmObject;
-#endif /* __IFsrmObject_FWD_DEFINED__ */
-
-#ifndef __IFsrmPathMapper_FWD_DEFINED__
-#define __IFsrmPathMapper_FWD_DEFINED__
-typedef struct IFsrmPathMapper IFsrmPathMapper;
-#endif /* __IFsrmPathMapper_FWD_DEFINED__ */
-
-#ifndef __IFsrmPipelineModuleConnector_FWD_DEFINED__
-#define __IFsrmPipelineModuleConnector_FWD_DEFINED__
-typedef struct IFsrmPipelineModuleConnector IFsrmPipelineModuleConnector;
-#endif /* __IFsrmPipelineModuleConnector_FWD_DEFINED__ */
-
-#ifndef __IFsrmPipelineModuleDefinition_FWD_DEFINED__
-#define __IFsrmPipelineModuleDefinition_FWD_DEFINED__
-typedef struct IFsrmPipelineModuleDefinition IFsrmPipelineModuleDefinition;
-#endif /* __IFsrmPipelineModuleDefinition_FWD_DEFINED__ */
-
-#ifndef __IFsrmPipelineModuleImplementation_FWD_DEFINED__
-#define __IFsrmPipelineModuleImplementation_FWD_DEFINED__
-typedef struct IFsrmPipelineModuleImplementation IFsrmPipelineModuleImplementation;
-#endif /* __IFsrmPipelineModuleImplementation_FWD_DEFINED__ */
-
-#ifndef __IFsrmProperty_FWD_DEFINED__
-#define __IFsrmProperty_FWD_DEFINED__
-typedef struct IFsrmProperty IFsrmProperty;
-#endif /* __IFsrmProperty_FWD_DEFINED__ */
-
-#ifndef __IFsrmPropertyBag_FWD_DEFINED__
-#define __IFsrmPropertyBag_FWD_DEFINED__
-typedef struct IFsrmPropertyBag IFsrmPropertyBag;
-#endif /* __IFsrmPropertyBag_FWD_DEFINED__ */
-
-#ifndef __IFsrmPropertyCondition_FWD_DEFINED__
-#define __IFsrmPropertyCondition_FWD_DEFINED__
-typedef struct IFsrmPropertyCondition IFsrmPropertyCondition;
-#endif /* __IFsrmPropertyCondition_FWD_DEFINED__ */
-
-#ifndef __IFsrmPropertyDefinition_FWD_DEFINED__
-#define __IFsrmPropertyDefinition_FWD_DEFINED__
-typedef struct IFsrmPropertyDefinition IFsrmPropertyDefinition;
-#endif /* __IFsrmPropertyDefinition_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuota_FWD_DEFINED__
-#define __IFsrmQuota_FWD_DEFINED__
-typedef struct IFsrmQuota IFsrmQuota;
-#endif /* __IFsrmQuota_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaBase_FWD_DEFINED__
-#define __IFsrmQuotaBase_FWD_DEFINED__
-typedef struct IFsrmQuotaBase IFsrmQuotaBase;
-#endif /* __IFsrmQuotaBase_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaManager_FWD_DEFINED__
-#define __IFsrmQuotaManager_FWD_DEFINED__
-typedef struct IFsrmQuotaManager IFsrmQuotaManager;
-#endif /* __IFsrmQuotaManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaManagerEx_FWD_DEFINED__
-#define __IFsrmQuotaManagerEx_FWD_DEFINED__
-typedef struct IFsrmQuotaManagerEx IFsrmQuotaManagerEx;
-#endif /* __IFsrmQuotaManagerEx_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaObject_FWD_DEFINED__
-#define __IFsrmQuotaObject_FWD_DEFINED__
-typedef struct IFsrmQuotaObject IFsrmQuotaObject;
-#endif /* __IFsrmQuotaObject_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaTemplate_FWD_DEFINED__
-#define __IFsrmQuotaTemplate_FWD_DEFINED__
-typedef struct IFsrmQuotaTemplate IFsrmQuotaTemplate;
-#endif /* __IFsrmQuotaTemplate_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaTemplateImported_FWD_DEFINED__
-#define __IFsrmQuotaTemplateImported_FWD_DEFINED__
-typedef struct IFsrmQuotaTemplateImported IFsrmQuotaTemplateImported;
-#endif /* __IFsrmQuotaTemplateImported_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaTemplateManager_FWD_DEFINED__
-#define __IFsrmQuotaTemplateManager_FWD_DEFINED__
-typedef struct IFsrmQuotaTemplateManager IFsrmQuotaTemplateManager;
-#endif /* __IFsrmQuotaTemplateManager_FWD_DEFINED__ */
+/* Forward declarations */
 
 #ifndef __IFsrmReport_FWD_DEFINED__
 #define __IFsrmReport_FWD_DEFINED__
-typedef struct IFsrmReport IFsrmReport;
-#endif /* __IFsrmReport_FWD_DEFINED__ */
-
-#ifndef __IFsrmReportJob_FWD_DEFINED__
-#define __IFsrmReportJob_FWD_DEFINED__
-typedef struct IFsrmReportJob IFsrmReportJob;
-#endif /* __IFsrmReportJob_FWD_DEFINED__ */
-
-#ifndef __IFsrmReportManager_FWD_DEFINED__
-#define __IFsrmReportManager_FWD_DEFINED__
-typedef struct IFsrmReportManager IFsrmReportManager;
-#endif /* __IFsrmReportManager_FWD_DEFINED__ */
+typedef interface IFsrmReport IFsrmReport;
+#endif
 
 #ifndef __IFsrmReportScheduler_FWD_DEFINED__
 #define __IFsrmReportScheduler_FWD_DEFINED__
-typedef struct IFsrmReportScheduler IFsrmReportScheduler;
-#endif /* __IFsrmReportScheduler_FWD_DEFINED__ */
-
-#ifndef __IFsrmRule_FWD_DEFINED__
-#define __IFsrmRule_FWD_DEFINED__
-typedef struct IFsrmRule IFsrmRule;
-#endif /* __IFsrmRule_FWD_DEFINED__ */
-
-#ifndef __IFsrmSetting_FWD_DEFINED__
-#define __IFsrmSetting_FWD_DEFINED__
-typedef struct IFsrmSetting IFsrmSetting;
-#endif /* __IFsrmSetting_FWD_DEFINED__ */
-
-#ifndef __IFsrmStorageModuleDefinition_FWD_DEFINED__
-#define __IFsrmStorageModuleDefinition_FWD_DEFINED__
-typedef struct IFsrmStorageModuleDefinition IFsrmStorageModuleDefinition;
-#endif /* __IFsrmStorageModuleDefinition_FWD_DEFINED__ */
-
-#ifndef __IFsrmStorageModuleImplementation_FWD_DEFINED__
-#define __IFsrmStorageModuleImplementation_FWD_DEFINED__
-typedef struct IFsrmStorageModuleImplementation IFsrmStorageModuleImplementation;
-#endif /* __IFsrmStorageModuleImplementation_FWD_DEFINED__ */
-
-#undef  INTERFACE
-#define INTERFACE IFsrmReport
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+typedef interface IFsrmReportScheduler IFsrmReportScheduler;
 #endif
-DECLARE_INTERFACE_(IFsrmReport,IDispatch)
+
+#ifndef __IFsrmFileManagementJobManager_FWD_DEFINED__
+#define __IFsrmFileManagementJobManager_FWD_DEFINED__
+typedef interface IFsrmFileManagementJobManager IFsrmFileManagementJobManager;
+#endif
+
+#ifndef __IFsrmPropertyCondition_FWD_DEFINED__
+#define __IFsrmPropertyCondition_FWD_DEFINED__
+typedef interface IFsrmPropertyCondition IFsrmPropertyCondition;
+#endif
+
+#ifndef __IFsrmReportManager_FWD_DEFINED__
+#define __IFsrmReportManager_FWD_DEFINED__
+typedef interface IFsrmReportManager IFsrmReportManager;
+#endif
+
+#ifndef __IFsrmReportJob_FWD_DEFINED__
+#define __IFsrmReportJob_FWD_DEFINED__
+typedef interface IFsrmReportJob IFsrmReportJob;
+#endif
+
+#ifndef __IFsrmFileManagementJob_FWD_DEFINED__
+#define __IFsrmFileManagementJob_FWD_DEFINED__
+typedef interface IFsrmFileManagementJob IFsrmFileManagementJob;
+#endif
+
+#ifndef __IFsrmFileCondition_FWD_DEFINED__
+#define __IFsrmFileCondition_FWD_DEFINED__
+typedef interface IFsrmFileCondition IFsrmFileCondition;
+#endif
+
+#ifndef __IFsrmFileConditionProperty_FWD_DEFINED__
+#define __IFsrmFileConditionProperty_FWD_DEFINED__
+typedef interface IFsrmFileConditionProperty IFsrmFileConditionProperty;
+#endif
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <fsrmenums.h>
+#include <fsrm.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+#ifndef __IFsrmFileManagementJob_FWD_DEFINED__
+#define __IFsrmFileManagementJob_FWD_DEFINED__
+typedef interface IFsrmFileManagementJob IFsrmFileManagementJob;
+#endif
+
+#ifndef __IFsrmFileManagementJobManager_FWD_DEFINED__
+#define __IFsrmFileManagementJobManager_FWD_DEFINED__
+typedef interface IFsrmFileManagementJobManager IFsrmFileManagementJobManager;
+#endif
+
+#ifndef __IFsrmPropertyCondition_FWD_DEFINED__
+#define __IFsrmPropertyCondition_FWD_DEFINED__
+typedef interface IFsrmPropertyCondition IFsrmPropertyCondition;
+#endif
+
+#ifndef __IFsrmReport_FWD_DEFINED__
+#define __IFsrmReport_FWD_DEFINED__
+typedef interface IFsrmReport IFsrmReport;
+#endif
+
+#ifndef __IFsrmReportJob_FWD_DEFINED__
+#define __IFsrmReportJob_FWD_DEFINED__
+typedef interface IFsrmReportJob IFsrmReportJob;
+#endif
+
+#ifndef __IFsrmReportManager_FWD_DEFINED__
+#define __IFsrmReportManager_FWD_DEFINED__
+typedef interface IFsrmReportManager IFsrmReportManager;
+#endif
+
+#define FSRM_DISPID_REPORT_MANAGER (FSRM_DISPID_FEATURE_REPORTS | 0x100000)
+
+#define FSRM_DISPID_REPORT_JOB (FSRM_DISPID_FEATURE_REPORTS | 0x200000)
+
+#define FSRM_DISPID_REPORT (FSRM_DISPID_FEATURE_REPORTS | 0x300000)
+
+#define FSRM_DISPID_REPORT_SCHEDULER (FSRM_DISPID_FEATURE_REPORTS | 0x400000)
+
+#define FSRM_DISPID_FILE_MANAGEMENT_JOB_MANAGER (FSRM_DISPID_FEATURE_REPORTS | 0x500000)
+
+#define FSRM_DISPID_FILE_MANAGEMENT_JOB (FSRM_DISPID_FEATURE_REPORTS | 0x600000)
+
+#define FSRM_DISPID_FILE_MANAGEMENT_NOTIFICATION (FSRM_DISPID_FEATURE_REPORTS | 0x700000)
+
+#define FSRM_DISPID_PROPERTY_CONDITION (FSRM_DISPID_FEATURE_REPORTS | 0x800000)
+
+#define FSRM_DISPID_FILE_CONDITION (FSRM_DISPID_FEATURE_REPORTS | 0x900000)
+
+#define FSRM_DISPID_FILE_CONDITION_PROPERTY (FSRM_DISPID_FEATURE_REPORTS | 0xa00000)
+
+#define FSRM_DISPID_FILE_MANAGEMENT_JOB_2 (FSRM_DISPID_FEATURE_REPORTS | 0xb00000)
+
+/*****************************************************************************
+ * IFsrmReport interface
+ */
+#ifndef __IFsrmReport_INTERFACE_DEFINED__
+#define __IFsrmReport_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmReport, 0xd8cc81d9, 0x46b8, 0x4fa4, 0xbf,0xa5, 0x4a,0xa9,0xde,0xc9,0xb6,0x38);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d8cc81d9-46b8-4fa4-bfa5-4aa9dec9b638")
+IFsrmReport : public IDispatch
 {
+    virtual HRESULT STDMETHODCALLTYPE get_Type(
+        FsrmReportType *reportType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Name(
+        BSTR *name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Name(
+        BSTR name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Description(
+        BSTR *description) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Description(
+        BSTR description) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LastGeneratedFileNamePrefix(
+        BSTR *prefix) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFilter(
+        FsrmReportFilter filter,
+        VARIANT *filterValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFilter(
+        FsrmReportFilter filter,
+        VARIANT filterValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Delete(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmReport, 0xd8cc81d9, 0x46b8, 0x4fa4, 0xbf,0xa5, 0x4a,0xa9,0xde,0xc9,0xb6,0x38)
+#endif
+#else
+typedef struct IFsrmReportVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmReport* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmReport* This);
 
-    /* IFsrmReport methods */
-    STDMETHOD_(HRESULT,get_Type)(THIS_ FsrmReportType *reportType) PURE;
-    STDMETHOD_(HRESULT,get_Name)(THIS_ BSTR *name) PURE;
-    STDMETHOD_(HRESULT,put_Name)(THIS_ BSTR name) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *description) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR description) PURE;
-    STDMETHOD_(HRESULT,get_LastGeneratedFileNamePrefix)(THIS_ BSTR *prefix) PURE;
-    STDMETHOD_(HRESULT,GetFilter)(THIS_ FsrmReportFilter filter,VARIANT *filterValue) PURE;
-    STDMETHOD_(HRESULT,Delete)(THIS) PURE;
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmReport* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmReport* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmReport* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmReport* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmReport* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmReport methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Type)(
+        IFsrmReport* This,
+        FsrmReportType *reportType);
+
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IFsrmReport* This,
+        BSTR *name);
+
+    HRESULT (STDMETHODCALLTYPE *put_Name)(
+        IFsrmReport* This,
+        BSTR name);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IFsrmReport* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IFsrmReport* This,
+        BSTR description);
+
+    HRESULT (STDMETHODCALLTYPE *get_LastGeneratedFileNamePrefix)(
+        IFsrmReport* This,
+        BSTR *prefix);
+
+    HRESULT (STDMETHODCALLTYPE *GetFilter)(
+        IFsrmReport* This,
+        FsrmReportFilter filter,
+        VARIANT *filterValue);
+
+    HRESULT (STDMETHODCALLTYPE *SetFilter)(
+        IFsrmReport* This,
+        FsrmReportFilter filter,
+        VARIANT filterValue);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmReport* This);
 
     END_INTERFACE
+} IFsrmReportVtbl;
+interface IFsrmReport {
+    CONST_VTBL IFsrmReportVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IFsrmReport_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IFsrmReport_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IFsrmReport_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define IFsrmReport_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define IFsrmReport_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define IFsrmReport_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define IFsrmReport_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmReport methods ***/
 #define IFsrmReport_get_Type(This,reportType) (This)->lpVtbl->get_Type(This,reportType)
 #define IFsrmReport_get_Name(This,name) (This)->lpVtbl->get_Name(This,name)
 #define IFsrmReport_put_Name(This,name) (This)->lpVtbl->put_Name(This,name)
@@ -326,72 +280,1366 @@
 #define IFsrmReport_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
 #define IFsrmReport_get_LastGeneratedFileNamePrefix(This,prefix) (This)->lpVtbl->get_LastGeneratedFileNamePrefix(This,prefix)
 #define IFsrmReport_GetFilter(This,filter,filterValue) (This)->lpVtbl->GetFilter(This,filter,filterValue)
-#define IFsrmReport_Delete() (This)->lpVtbl->Delete(This)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmReportJob
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#define IFsrmReport_SetFilter(This,filter,filterValue) (This)->lpVtbl->SetFilter(This,filter,filterValue)
+#define IFsrmReport_Delete(This) (This)->lpVtbl->Delete(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmReport_QueryInterface(IFsrmReport* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmReport_AddRef(IFsrmReport* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmReport_Release(IFsrmReport* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmReport_GetTypeInfoCount(IFsrmReport* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmReport_GetTypeInfo(IFsrmReport* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmReport_GetIDsOfNames(IFsrmReport* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmReport_Invoke(IFsrmReport* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmReport methods ***/
+static FORCEINLINE HRESULT IFsrmReport_get_Type(IFsrmReport* This,FsrmReportType *reportType) {
+    return This->lpVtbl->get_Type(This,reportType);
+}
+static FORCEINLINE HRESULT IFsrmReport_get_Name(IFsrmReport* This,BSTR *name) {
+    return This->lpVtbl->get_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmReport_put_Name(IFsrmReport* This,BSTR name) {
+    return This->lpVtbl->put_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmReport_get_Description(IFsrmReport* This,BSTR *description) {
+    return This->lpVtbl->get_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmReport_put_Description(IFsrmReport* This,BSTR description) {
+    return This->lpVtbl->put_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmReport_get_LastGeneratedFileNamePrefix(IFsrmReport* This,BSTR *prefix) {
+    return This->lpVtbl->get_LastGeneratedFileNamePrefix(This,prefix);
+}
+static FORCEINLINE HRESULT IFsrmReport_GetFilter(IFsrmReport* This,FsrmReportFilter filter,VARIANT *filterValue) {
+    return This->lpVtbl->GetFilter(This,filter,filterValue);
+}
+static FORCEINLINE HRESULT IFsrmReport_SetFilter(IFsrmReport* This,FsrmReportFilter filter,VARIANT filterValue) {
+    return This->lpVtbl->SetFilter(This,filter,filterValue);
+}
+static FORCEINLINE HRESULT IFsrmReport_Delete(IFsrmReport* This) {
+    return This->lpVtbl->Delete(This);
+}
 #endif
-DECLARE_INTERFACE_(IFsrmReportJob,IFsrmObject)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmReport_get_Type_Proxy(
+    IFsrmReport* This,
+    FsrmReportType *reportType);
+void __RPC_STUB IFsrmReport_get_Type_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReport_get_Name_Proxy(
+    IFsrmReport* This,
+    BSTR *name);
+void __RPC_STUB IFsrmReport_get_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReport_put_Name_Proxy(
+    IFsrmReport* This,
+    BSTR name);
+void __RPC_STUB IFsrmReport_put_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReport_get_Description_Proxy(
+    IFsrmReport* This,
+    BSTR *description);
+void __RPC_STUB IFsrmReport_get_Description_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReport_put_Description_Proxy(
+    IFsrmReport* This,
+    BSTR description);
+void __RPC_STUB IFsrmReport_put_Description_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReport_get_LastGeneratedFileNamePrefix_Proxy(
+    IFsrmReport* This,
+    BSTR *prefix);
+void __RPC_STUB IFsrmReport_get_LastGeneratedFileNamePrefix_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReport_GetFilter_Proxy(
+    IFsrmReport* This,
+    FsrmReportFilter filter,
+    VARIANT *filterValue);
+void __RPC_STUB IFsrmReport_GetFilter_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReport_SetFilter_Proxy(
+    IFsrmReport* This,
+    FsrmReportFilter filter,
+    VARIANT filterValue);
+void __RPC_STUB IFsrmReport_SetFilter_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReport_Delete_Proxy(
+    IFsrmReport* This);
+void __RPC_STUB IFsrmReport_Delete_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmReport_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmReportScheduler interface
+ */
+#ifndef __IFsrmReportScheduler_INTERFACE_DEFINED__
+#define __IFsrmReportScheduler_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmReportScheduler, 0x6879caf9, 0x6617, 0x4484, 0x87,0x19, 0x71,0xc3,0xd8,0x64,0x5f,0x94);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("6879caf9-6617-4484-8719-71c3d8645f94")
+IFsrmReportScheduler : public IDispatch
 {
+    virtual HRESULT STDMETHODCALLTYPE VerifyNamespaces(
+        VARIANT *namespacesSafeArray) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateScheduleTask(
+        BSTR taskName,
+        VARIANT *namespacesSafeArray,
+        BSTR serializedTask) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ModifyScheduleTask(
+        BSTR taskName,
+        VARIANT *namespacesSafeArray,
+        BSTR serializedTask) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeleteScheduleTask(
+        BSTR taskName) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmReportScheduler, 0x6879caf9, 0x6617, 0x4484, 0x87,0x19, 0x71,0xc3,0xd8,0x64,0x5f,0x94)
+#endif
+#else
+typedef struct IFsrmReportSchedulerVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmReportScheduler* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmReportScheduler* This);
 
-    /* IFsrmObject methods */
-    STDMETHOD_(HRESULT,get_Id)(THIS_ FSRM_OBJECT_ID *id) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *description) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR description) PURE;
-    STDMETHOD_(HRESULT,Delete)(THIS) PURE;
-    STDMETHOD_(HRESULT,Commit)(THIS) PURE;
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmReportScheduler* This);
 
-    /* IFsrmReportJob methods */
-    STDMETHOD_(HRESULT,get_Task)(THIS_ BSTR *taskName) PURE;
-    STDMETHOD_(HRESULT,put_Task)(THIS_ BSTR taskName) PURE;
-    STDMETHOD_(HRESULT,get_NamespaceRoots)(THIS_ SAFEARRAY *namespaceRoots) PURE;
-    STDMETHOD_(HRESULT,put_NamespaceRoots)(THIS_ SAFEARRAY namespaceRoots) PURE;
-    STDMETHOD_(HRESULT,get_Formats)(THIS_ SAFEARRAY *formats) PURE;
-    STDMETHOD_(HRESULT,put_Formats)(THIS_ SAFEARRAY formats) PURE;
-    STDMETHOD_(HRESULT,get_MailTo)(THIS_ BSTR *mailTo) PURE;
-    STDMETHOD_(HRESULT,put_MailTo)(THIS_ BSTR mailTo) PURE;
-    STDMETHOD_(HRESULT,get_RunningStatus)(THIS_ FsrmReportRunningStatus *runningStatus) PURE;
-    STDMETHOD_(HRESULT,get_LastRun)(THIS_ DATE *lastRun) PURE;
-    STDMETHOD_(HRESULT,get_LastError)(THIS_ BSTR *lastError) PURE;
-    STDMETHOD_(HRESULT,get_LastGeneratedInDirectory)(THIS_ BSTR *path) PURE;
-    STDMETHOD_(HRESULT,EnumReports)(THIS_ IFsrmCollection **reports) PURE;
-    STDMETHOD_(HRESULT,CreateReport)(THIS_ FsrmReportType reportType,IFsrmReport **report) PURE;
-    STDMETHOD_(HRESULT,Run)(THIS_ FsrmReportGenerationContext context) PURE;
-    STDMETHOD_(HRESULT,WaitForCompletion)(THIS_ __LONG32 waitSeconds,VARIANT_BOOL *completed) PURE;
-    STDMETHOD_(HRESULT,Cancel)(THIS) PURE;
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmReportScheduler* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmReportScheduler* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmReportScheduler* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmReportScheduler* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmReportScheduler methods ***/
+    HRESULT (STDMETHODCALLTYPE *VerifyNamespaces)(
+        IFsrmReportScheduler* This,
+        VARIANT *namespacesSafeArray);
+
+    HRESULT (STDMETHODCALLTYPE *CreateScheduleTask)(
+        IFsrmReportScheduler* This,
+        BSTR taskName,
+        VARIANT *namespacesSafeArray,
+        BSTR serializedTask);
+
+    HRESULT (STDMETHODCALLTYPE *ModifyScheduleTask)(
+        IFsrmReportScheduler* This,
+        BSTR taskName,
+        VARIANT *namespacesSafeArray,
+        BSTR serializedTask);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteScheduleTask)(
+        IFsrmReportScheduler* This,
+        BSTR taskName);
 
     END_INTERFACE
+} IFsrmReportSchedulerVtbl;
+interface IFsrmReportScheduler {
+    CONST_VTBL IFsrmReportSchedulerVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmReportScheduler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmReportScheduler_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmReportScheduler_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmReportScheduler_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmReportScheduler_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmReportScheduler_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmReportScheduler_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmReportScheduler methods ***/
+#define IFsrmReportScheduler_VerifyNamespaces(This,namespacesSafeArray) (This)->lpVtbl->VerifyNamespaces(This,namespacesSafeArray)
+#define IFsrmReportScheduler_CreateScheduleTask(This,taskName,namespacesSafeArray,serializedTask) (This)->lpVtbl->CreateScheduleTask(This,taskName,namespacesSafeArray,serializedTask)
+#define IFsrmReportScheduler_ModifyScheduleTask(This,taskName,namespacesSafeArray,serializedTask) (This)->lpVtbl->ModifyScheduleTask(This,taskName,namespacesSafeArray,serializedTask)
+#define IFsrmReportScheduler_DeleteScheduleTask(This,taskName) (This)->lpVtbl->DeleteScheduleTask(This,taskName)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmReportScheduler_QueryInterface(IFsrmReportScheduler* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmReportScheduler_AddRef(IFsrmReportScheduler* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmReportScheduler_Release(IFsrmReportScheduler* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmReportScheduler_GetTypeInfoCount(IFsrmReportScheduler* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmReportScheduler_GetTypeInfo(IFsrmReportScheduler* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmReportScheduler_GetIDsOfNames(IFsrmReportScheduler* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmReportScheduler_Invoke(IFsrmReportScheduler* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmReportScheduler methods ***/
+static FORCEINLINE HRESULT IFsrmReportScheduler_VerifyNamespaces(IFsrmReportScheduler* This,VARIANT *namespacesSafeArray) {
+    return This->lpVtbl->VerifyNamespaces(This,namespacesSafeArray);
+}
+static FORCEINLINE HRESULT IFsrmReportScheduler_CreateScheduleTask(IFsrmReportScheduler* This,BSTR taskName,VARIANT *namespacesSafeArray,BSTR serializedTask) {
+    return This->lpVtbl->CreateScheduleTask(This,taskName,namespacesSafeArray,serializedTask);
+}
+static FORCEINLINE HRESULT IFsrmReportScheduler_ModifyScheduleTask(IFsrmReportScheduler* This,BSTR taskName,VARIANT *namespacesSafeArray,BSTR serializedTask) {
+    return This->lpVtbl->ModifyScheduleTask(This,taskName,namespacesSafeArray,serializedTask);
+}
+static FORCEINLINE HRESULT IFsrmReportScheduler_DeleteScheduleTask(IFsrmReportScheduler* This,BSTR taskName) {
+    return This->lpVtbl->DeleteScheduleTask(This,taskName);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmReportScheduler_VerifyNamespaces_Proxy(
+    IFsrmReportScheduler* This,
+    VARIANT *namespacesSafeArray);
+void __RPC_STUB IFsrmReportScheduler_VerifyNamespaces_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportScheduler_CreateScheduleTask_Proxy(
+    IFsrmReportScheduler* This,
+    BSTR taskName,
+    VARIANT *namespacesSafeArray,
+    BSTR serializedTask);
+void __RPC_STUB IFsrmReportScheduler_CreateScheduleTask_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportScheduler_ModifyScheduleTask_Proxy(
+    IFsrmReportScheduler* This,
+    BSTR taskName,
+    VARIANT *namespacesSafeArray,
+    BSTR serializedTask);
+void __RPC_STUB IFsrmReportScheduler_ModifyScheduleTask_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportScheduler_DeleteScheduleTask_Proxy(
+    IFsrmReportScheduler* This,
+    BSTR taskName);
+void __RPC_STUB IFsrmReportScheduler_DeleteScheduleTask_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmReportScheduler_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmFileManagementJobManager interface
+ */
+#ifndef __IFsrmFileManagementJobManager_INTERFACE_DEFINED__
+#define __IFsrmFileManagementJobManager_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmFileManagementJobManager, 0xee321ecb, 0xd95e, 0x48e9, 0x90,0x7c, 0xc7,0x68,0x5a,0x01,0x32,0x35);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ee321ecb-d95e-48e9-907c-c7685a013235")
+IFsrmFileManagementJobManager : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_ActionVariables(
+        SAFEARRAY **variables) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ActionVariableDescriptions(
+        SAFEARRAY **descriptions) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumFileManagementJobs(
+        FsrmEnumOptions options = FsrmEnumOptions_None,
+        IFsrmCollection **fileManagementJobs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateFileManagementJob(
+        IFsrmFileManagementJob **fileManagementJob) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFileManagementJob(
+        BSTR name,
+        IFsrmFileManagementJob **fileManagementJob) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmFileManagementJobManager, 0xee321ecb, 0xd95e, 0x48e9, 0x90,0x7c, 0xc7,0x68,0x5a,0x01,0x32,0x35)
+#endif
+#else
+typedef struct IFsrmFileManagementJobManagerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmFileManagementJobManager* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmFileManagementJobManager* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmFileManagementJobManager* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmFileManagementJobManager* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmFileManagementJobManager* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmFileManagementJobManager* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmFileManagementJobManager* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmFileManagementJobManager methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_ActionVariables)(
+        IFsrmFileManagementJobManager* This,
+        SAFEARRAY **variables);
+
+    HRESULT (STDMETHODCALLTYPE *get_ActionVariableDescriptions)(
+        IFsrmFileManagementJobManager* This,
+        SAFEARRAY **descriptions);
+
+    HRESULT (STDMETHODCALLTYPE *EnumFileManagementJobs)(
+        IFsrmFileManagementJobManager* This,
+        FsrmEnumOptions options,
+        IFsrmCollection **fileManagementJobs);
+
+    HRESULT (STDMETHODCALLTYPE *CreateFileManagementJob)(
+        IFsrmFileManagementJobManager* This,
+        IFsrmFileManagementJob **fileManagementJob);
+
+    HRESULT (STDMETHODCALLTYPE *GetFileManagementJob)(
+        IFsrmFileManagementJobManager* This,
+        BSTR name,
+        IFsrmFileManagementJob **fileManagementJob);
+
+    END_INTERFACE
+} IFsrmFileManagementJobManagerVtbl;
+interface IFsrmFileManagementJobManager {
+    CONST_VTBL IFsrmFileManagementJobManagerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmFileManagementJobManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmFileManagementJobManager_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmFileManagementJobManager_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmFileManagementJobManager_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmFileManagementJobManager_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmFileManagementJobManager_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmFileManagementJobManager_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmFileManagementJobManager methods ***/
+#define IFsrmFileManagementJobManager_get_ActionVariables(This,variables) (This)->lpVtbl->get_ActionVariables(This,variables)
+#define IFsrmFileManagementJobManager_get_ActionVariableDescriptions(This,descriptions) (This)->lpVtbl->get_ActionVariableDescriptions(This,descriptions)
+#define IFsrmFileManagementJobManager_EnumFileManagementJobs(This,options,fileManagementJobs) (This)->lpVtbl->EnumFileManagementJobs(This,options,fileManagementJobs)
+#define IFsrmFileManagementJobManager_CreateFileManagementJob(This,fileManagementJob) (This)->lpVtbl->CreateFileManagementJob(This,fileManagementJob)
+#define IFsrmFileManagementJobManager_GetFileManagementJob(This,name,fileManagementJob) (This)->lpVtbl->GetFileManagementJob(This,name,fileManagementJob)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmFileManagementJobManager_QueryInterface(IFsrmFileManagementJobManager* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmFileManagementJobManager_AddRef(IFsrmFileManagementJobManager* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmFileManagementJobManager_Release(IFsrmFileManagementJobManager* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmFileManagementJobManager_GetTypeInfoCount(IFsrmFileManagementJobManager* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJobManager_GetTypeInfo(IFsrmFileManagementJobManager* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJobManager_GetIDsOfNames(IFsrmFileManagementJobManager* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJobManager_Invoke(IFsrmFileManagementJobManager* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmFileManagementJobManager methods ***/
+static FORCEINLINE HRESULT IFsrmFileManagementJobManager_get_ActionVariables(IFsrmFileManagementJobManager* This,SAFEARRAY **variables) {
+    return This->lpVtbl->get_ActionVariables(This,variables);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJobManager_get_ActionVariableDescriptions(IFsrmFileManagementJobManager* This,SAFEARRAY **descriptions) {
+    return This->lpVtbl->get_ActionVariableDescriptions(This,descriptions);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJobManager_EnumFileManagementJobs(IFsrmFileManagementJobManager* This,FsrmEnumOptions options,IFsrmCollection **fileManagementJobs) {
+    return This->lpVtbl->EnumFileManagementJobs(This,options,fileManagementJobs);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJobManager_CreateFileManagementJob(IFsrmFileManagementJobManager* This,IFsrmFileManagementJob **fileManagementJob) {
+    return This->lpVtbl->CreateFileManagementJob(This,fileManagementJob);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJobManager_GetFileManagementJob(IFsrmFileManagementJobManager* This,BSTR name,IFsrmFileManagementJob **fileManagementJob) {
+    return This->lpVtbl->GetFileManagementJob(This,name,fileManagementJob);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJobManager_get_ActionVariables_Proxy(
+    IFsrmFileManagementJobManager* This,
+    SAFEARRAY **variables);
+void __RPC_STUB IFsrmFileManagementJobManager_get_ActionVariables_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJobManager_get_ActionVariableDescriptions_Proxy(
+    IFsrmFileManagementJobManager* This,
+    SAFEARRAY **descriptions);
+void __RPC_STUB IFsrmFileManagementJobManager_get_ActionVariableDescriptions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJobManager_EnumFileManagementJobs_Proxy(
+    IFsrmFileManagementJobManager* This,
+    FsrmEnumOptions options,
+    IFsrmCollection **fileManagementJobs);
+void __RPC_STUB IFsrmFileManagementJobManager_EnumFileManagementJobs_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJobManager_CreateFileManagementJob_Proxy(
+    IFsrmFileManagementJobManager* This,
+    IFsrmFileManagementJob **fileManagementJob);
+void __RPC_STUB IFsrmFileManagementJobManager_CreateFileManagementJob_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJobManager_GetFileManagementJob_Proxy(
+    IFsrmFileManagementJobManager* This,
+    BSTR name,
+    IFsrmFileManagementJob **fileManagementJob);
+void __RPC_STUB IFsrmFileManagementJobManager_GetFileManagementJob_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmFileManagementJobManager_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmPropertyCondition interface
+ */
+#ifndef __IFsrmPropertyCondition_INTERFACE_DEFINED__
+#define __IFsrmPropertyCondition_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmPropertyCondition, 0x326af66f, 0x2ac0, 0x4f68, 0xbf,0x8c, 0x47,0x59,0xf0,0x54,0xfa,0x29);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("326af66f-2ac0-4f68-bf8c-4759f054fa29")
+IFsrmPropertyCondition : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Name(
+        BSTR *name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Name(
+        BSTR name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Type(
+        FsrmPropertyConditionType *type) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Type(
+        FsrmPropertyConditionType type) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Value(
+        BSTR *value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Value(
+        BSTR value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Delete(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmPropertyCondition, 0x326af66f, 0x2ac0, 0x4f68, 0xbf,0x8c, 0x47,0x59,0xf0,0x54,0xfa,0x29)
+#endif
+#else
+typedef struct IFsrmPropertyConditionVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmPropertyCondition* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmPropertyCondition* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmPropertyCondition* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmPropertyCondition* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmPropertyCondition* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmPropertyCondition* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmPropertyCondition* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmPropertyCondition methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IFsrmPropertyCondition* This,
+        BSTR *name);
+
+    HRESULT (STDMETHODCALLTYPE *put_Name)(
+        IFsrmPropertyCondition* This,
+        BSTR name);
+
+    HRESULT (STDMETHODCALLTYPE *get_Type)(
+        IFsrmPropertyCondition* This,
+        FsrmPropertyConditionType *type);
+
+    HRESULT (STDMETHODCALLTYPE *put_Type)(
+        IFsrmPropertyCondition* This,
+        FsrmPropertyConditionType type);
+
+    HRESULT (STDMETHODCALLTYPE *get_Value)(
+        IFsrmPropertyCondition* This,
+        BSTR *value);
+
+    HRESULT (STDMETHODCALLTYPE *put_Value)(
+        IFsrmPropertyCondition* This,
+        BSTR value);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmPropertyCondition* This);
+
+    END_INTERFACE
+} IFsrmPropertyConditionVtbl;
+interface IFsrmPropertyCondition {
+    CONST_VTBL IFsrmPropertyConditionVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmPropertyCondition_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmPropertyCondition_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmPropertyCondition_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmPropertyCondition_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmPropertyCondition_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmPropertyCondition_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmPropertyCondition_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmPropertyCondition methods ***/
+#define IFsrmPropertyCondition_get_Name(This,name) (This)->lpVtbl->get_Name(This,name)
+#define IFsrmPropertyCondition_put_Name(This,name) (This)->lpVtbl->put_Name(This,name)
+#define IFsrmPropertyCondition_get_Type(This,type) (This)->lpVtbl->get_Type(This,type)
+#define IFsrmPropertyCondition_put_Type(This,type) (This)->lpVtbl->put_Type(This,type)
+#define IFsrmPropertyCondition_get_Value(This,value) (This)->lpVtbl->get_Value(This,value)
+#define IFsrmPropertyCondition_put_Value(This,value) (This)->lpVtbl->put_Value(This,value)
+#define IFsrmPropertyCondition_Delete(This) (This)->lpVtbl->Delete(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmPropertyCondition_QueryInterface(IFsrmPropertyCondition* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmPropertyCondition_AddRef(IFsrmPropertyCondition* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmPropertyCondition_Release(IFsrmPropertyCondition* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmPropertyCondition_GetTypeInfoCount(IFsrmPropertyCondition* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmPropertyCondition_GetTypeInfo(IFsrmPropertyCondition* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmPropertyCondition_GetIDsOfNames(IFsrmPropertyCondition* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmPropertyCondition_Invoke(IFsrmPropertyCondition* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmPropertyCondition methods ***/
+static FORCEINLINE HRESULT IFsrmPropertyCondition_get_Name(IFsrmPropertyCondition* This,BSTR *name) {
+    return This->lpVtbl->get_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmPropertyCondition_put_Name(IFsrmPropertyCondition* This,BSTR name) {
+    return This->lpVtbl->put_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmPropertyCondition_get_Type(IFsrmPropertyCondition* This,FsrmPropertyConditionType *type) {
+    return This->lpVtbl->get_Type(This,type);
+}
+static FORCEINLINE HRESULT IFsrmPropertyCondition_put_Type(IFsrmPropertyCondition* This,FsrmPropertyConditionType type) {
+    return This->lpVtbl->put_Type(This,type);
+}
+static FORCEINLINE HRESULT IFsrmPropertyCondition_get_Value(IFsrmPropertyCondition* This,BSTR *value) {
+    return This->lpVtbl->get_Value(This,value);
+}
+static FORCEINLINE HRESULT IFsrmPropertyCondition_put_Value(IFsrmPropertyCondition* This,BSTR value) {
+    return This->lpVtbl->put_Value(This,value);
+}
+static FORCEINLINE HRESULT IFsrmPropertyCondition_Delete(IFsrmPropertyCondition* This) {
+    return This->lpVtbl->Delete(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmPropertyCondition_get_Name_Proxy(
+    IFsrmPropertyCondition* This,
+    BSTR *name);
+void __RPC_STUB IFsrmPropertyCondition_get_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmPropertyCondition_put_Name_Proxy(
+    IFsrmPropertyCondition* This,
+    BSTR name);
+void __RPC_STUB IFsrmPropertyCondition_put_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmPropertyCondition_get_Type_Proxy(
+    IFsrmPropertyCondition* This,
+    FsrmPropertyConditionType *type);
+void __RPC_STUB IFsrmPropertyCondition_get_Type_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmPropertyCondition_put_Type_Proxy(
+    IFsrmPropertyCondition* This,
+    FsrmPropertyConditionType type);
+void __RPC_STUB IFsrmPropertyCondition_put_Type_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmPropertyCondition_get_Value_Proxy(
+    IFsrmPropertyCondition* This,
+    BSTR *value);
+void __RPC_STUB IFsrmPropertyCondition_get_Value_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmPropertyCondition_put_Value_Proxy(
+    IFsrmPropertyCondition* This,
+    BSTR value);
+void __RPC_STUB IFsrmPropertyCondition_put_Value_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmPropertyCondition_Delete_Proxy(
+    IFsrmPropertyCondition* This);
+void __RPC_STUB IFsrmPropertyCondition_Delete_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmPropertyCondition_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmReportManager interface
+ */
+#ifndef __IFsrmReportManager_INTERFACE_DEFINED__
+#define __IFsrmReportManager_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmReportManager, 0x27b899fe, 0x6ffa, 0x4481, 0xa1,0x84, 0xd3,0xda,0xad,0xe8,0xa0,0x2b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("27b899fe-6ffa-4481-a184-d3daade8a02b")
+IFsrmReportManager : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE EnumReportJobs(
+        FsrmEnumOptions options = FsrmEnumOptions_None,
+        IFsrmCollection **reportJobs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateReportJob(
+        IFsrmReportJob **reportJob) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetReportJob(
+        BSTR taskName,
+        IFsrmReportJob **reportJob) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetOutputDirectory(
+        FsrmReportGenerationContext context,
+        BSTR *path) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetOutputDirectory(
+        FsrmReportGenerationContext context,
+        BSTR path) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsFilterValidForReportType(
+        FsrmReportType reportType,
+        FsrmReportFilter filter,
+        VARIANT_BOOL *valid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDefaultFilter(
+        FsrmReportType reportType,
+        FsrmReportFilter filter,
+        VARIANT *filterValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDefaultFilter(
+        FsrmReportType reportType,
+        FsrmReportFilter filter,
+        VARIANT filterValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetReportSizeLimit(
+        FsrmReportLimit limit,
+        VARIANT *limitValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetReportSizeLimit(
+        FsrmReportLimit limit,
+        VARIANT limitValue) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmReportManager, 0x27b899fe, 0x6ffa, 0x4481, 0xa1,0x84, 0xd3,0xda,0xad,0xe8,0xa0,0x2b)
+#endif
+#else
+typedef struct IFsrmReportManagerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmReportManager* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmReportManager* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmReportManager* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmReportManager* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmReportManager* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmReportManager* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmReportManager* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmReportManager methods ***/
+    HRESULT (STDMETHODCALLTYPE *EnumReportJobs)(
+        IFsrmReportManager* This,
+        FsrmEnumOptions options,
+        IFsrmCollection **reportJobs);
+
+    HRESULT (STDMETHODCALLTYPE *CreateReportJob)(
+        IFsrmReportManager* This,
+        IFsrmReportJob **reportJob);
+
+    HRESULT (STDMETHODCALLTYPE *GetReportJob)(
+        IFsrmReportManager* This,
+        BSTR taskName,
+        IFsrmReportJob **reportJob);
+
+    HRESULT (STDMETHODCALLTYPE *GetOutputDirectory)(
+        IFsrmReportManager* This,
+        FsrmReportGenerationContext context,
+        BSTR *path);
+
+    HRESULT (STDMETHODCALLTYPE *SetOutputDirectory)(
+        IFsrmReportManager* This,
+        FsrmReportGenerationContext context,
+        BSTR path);
+
+    HRESULT (STDMETHODCALLTYPE *IsFilterValidForReportType)(
+        IFsrmReportManager* This,
+        FsrmReportType reportType,
+        FsrmReportFilter filter,
+        VARIANT_BOOL *valid);
+
+    HRESULT (STDMETHODCALLTYPE *GetDefaultFilter)(
+        IFsrmReportManager* This,
+        FsrmReportType reportType,
+        FsrmReportFilter filter,
+        VARIANT *filterValue);
+
+    HRESULT (STDMETHODCALLTYPE *SetDefaultFilter)(
+        IFsrmReportManager* This,
+        FsrmReportType reportType,
+        FsrmReportFilter filter,
+        VARIANT filterValue);
+
+    HRESULT (STDMETHODCALLTYPE *GetReportSizeLimit)(
+        IFsrmReportManager* This,
+        FsrmReportLimit limit,
+        VARIANT *limitValue);
+
+    HRESULT (STDMETHODCALLTYPE *SetReportSizeLimit)(
+        IFsrmReportManager* This,
+        FsrmReportLimit limit,
+        VARIANT limitValue);
+
+    END_INTERFACE
+} IFsrmReportManagerVtbl;
+interface IFsrmReportManager {
+    CONST_VTBL IFsrmReportManagerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmReportManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmReportManager_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmReportManager_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmReportManager_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmReportManager_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmReportManager_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmReportManager_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmReportManager methods ***/
+#define IFsrmReportManager_EnumReportJobs(This,options,reportJobs) (This)->lpVtbl->EnumReportJobs(This,options,reportJobs)
+#define IFsrmReportManager_CreateReportJob(This,reportJob) (This)->lpVtbl->CreateReportJob(This,reportJob)
+#define IFsrmReportManager_GetReportJob(This,taskName,reportJob) (This)->lpVtbl->GetReportJob(This,taskName,reportJob)
+#define IFsrmReportManager_GetOutputDirectory(This,context,path) (This)->lpVtbl->GetOutputDirectory(This,context,path)
+#define IFsrmReportManager_SetOutputDirectory(This,context,path) (This)->lpVtbl->SetOutputDirectory(This,context,path)
+#define IFsrmReportManager_IsFilterValidForReportType(This,reportType,filter,valid) (This)->lpVtbl->IsFilterValidForReportType(This,reportType,filter,valid)
+#define IFsrmReportManager_GetDefaultFilter(This,reportType,filter,filterValue) (This)->lpVtbl->GetDefaultFilter(This,reportType,filter,filterValue)
+#define IFsrmReportManager_SetDefaultFilter(This,reportType,filter,filterValue) (This)->lpVtbl->SetDefaultFilter(This,reportType,filter,filterValue)
+#define IFsrmReportManager_GetReportSizeLimit(This,limit,limitValue) (This)->lpVtbl->GetReportSizeLimit(This,limit,limitValue)
+#define IFsrmReportManager_SetReportSizeLimit(This,limit,limitValue) (This)->lpVtbl->SetReportSizeLimit(This,limit,limitValue)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmReportManager_QueryInterface(IFsrmReportManager* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmReportManager_AddRef(IFsrmReportManager* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmReportManager_Release(IFsrmReportManager* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmReportManager_GetTypeInfoCount(IFsrmReportManager* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmReportManager_GetTypeInfo(IFsrmReportManager* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmReportManager_GetIDsOfNames(IFsrmReportManager* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmReportManager_Invoke(IFsrmReportManager* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmReportManager methods ***/
+static FORCEINLINE HRESULT IFsrmReportManager_EnumReportJobs(IFsrmReportManager* This,FsrmEnumOptions options,IFsrmCollection **reportJobs) {
+    return This->lpVtbl->EnumReportJobs(This,options,reportJobs);
+}
+static FORCEINLINE HRESULT IFsrmReportManager_CreateReportJob(IFsrmReportManager* This,IFsrmReportJob **reportJob) {
+    return This->lpVtbl->CreateReportJob(This,reportJob);
+}
+static FORCEINLINE HRESULT IFsrmReportManager_GetReportJob(IFsrmReportManager* This,BSTR taskName,IFsrmReportJob **reportJob) {
+    return This->lpVtbl->GetReportJob(This,taskName,reportJob);
+}
+static FORCEINLINE HRESULT IFsrmReportManager_GetOutputDirectory(IFsrmReportManager* This,FsrmReportGenerationContext context,BSTR *path) {
+    return This->lpVtbl->GetOutputDirectory(This,context,path);
+}
+static FORCEINLINE HRESULT IFsrmReportManager_SetOutputDirectory(IFsrmReportManager* This,FsrmReportGenerationContext context,BSTR path) {
+    return This->lpVtbl->SetOutputDirectory(This,context,path);
+}
+static FORCEINLINE HRESULT IFsrmReportManager_IsFilterValidForReportType(IFsrmReportManager* This,FsrmReportType reportType,FsrmReportFilter filter,VARIANT_BOOL *valid) {
+    return This->lpVtbl->IsFilterValidForReportType(This,reportType,filter,valid);
+}
+static FORCEINLINE HRESULT IFsrmReportManager_GetDefaultFilter(IFsrmReportManager* This,FsrmReportType reportType,FsrmReportFilter filter,VARIANT *filterValue) {
+    return This->lpVtbl->GetDefaultFilter(This,reportType,filter,filterValue);
+}
+static FORCEINLINE HRESULT IFsrmReportManager_SetDefaultFilter(IFsrmReportManager* This,FsrmReportType reportType,FsrmReportFilter filter,VARIANT filterValue) {
+    return This->lpVtbl->SetDefaultFilter(This,reportType,filter,filterValue);
+}
+static FORCEINLINE HRESULT IFsrmReportManager_GetReportSizeLimit(IFsrmReportManager* This,FsrmReportLimit limit,VARIANT *limitValue) {
+    return This->lpVtbl->GetReportSizeLimit(This,limit,limitValue);
+}
+static FORCEINLINE HRESULT IFsrmReportManager_SetReportSizeLimit(IFsrmReportManager* This,FsrmReportLimit limit,VARIANT limitValue) {
+    return This->lpVtbl->SetReportSizeLimit(This,limit,limitValue);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmReportManager_EnumReportJobs_Proxy(
+    IFsrmReportManager* This,
+    FsrmEnumOptions options,
+    IFsrmCollection **reportJobs);
+void __RPC_STUB IFsrmReportManager_EnumReportJobs_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportManager_CreateReportJob_Proxy(
+    IFsrmReportManager* This,
+    IFsrmReportJob **reportJob);
+void __RPC_STUB IFsrmReportManager_CreateReportJob_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportManager_GetReportJob_Proxy(
+    IFsrmReportManager* This,
+    BSTR taskName,
+    IFsrmReportJob **reportJob);
+void __RPC_STUB IFsrmReportManager_GetReportJob_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportManager_GetOutputDirectory_Proxy(
+    IFsrmReportManager* This,
+    FsrmReportGenerationContext context,
+    BSTR *path);
+void __RPC_STUB IFsrmReportManager_GetOutputDirectory_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportManager_SetOutputDirectory_Proxy(
+    IFsrmReportManager* This,
+    FsrmReportGenerationContext context,
+    BSTR path);
+void __RPC_STUB IFsrmReportManager_SetOutputDirectory_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportManager_IsFilterValidForReportType_Proxy(
+    IFsrmReportManager* This,
+    FsrmReportType reportType,
+    FsrmReportFilter filter,
+    VARIANT_BOOL *valid);
+void __RPC_STUB IFsrmReportManager_IsFilterValidForReportType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportManager_GetDefaultFilter_Proxy(
+    IFsrmReportManager* This,
+    FsrmReportType reportType,
+    FsrmReportFilter filter,
+    VARIANT *filterValue);
+void __RPC_STUB IFsrmReportManager_GetDefaultFilter_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportManager_SetDefaultFilter_Proxy(
+    IFsrmReportManager* This,
+    FsrmReportType reportType,
+    FsrmReportFilter filter,
+    VARIANT filterValue);
+void __RPC_STUB IFsrmReportManager_SetDefaultFilter_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportManager_GetReportSizeLimit_Proxy(
+    IFsrmReportManager* This,
+    FsrmReportLimit limit,
+    VARIANT *limitValue);
+void __RPC_STUB IFsrmReportManager_GetReportSizeLimit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportManager_SetReportSizeLimit_Proxy(
+    IFsrmReportManager* This,
+    FsrmReportLimit limit,
+    VARIANT limitValue);
+void __RPC_STUB IFsrmReportManager_SetReportSizeLimit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmReportManager_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmReportJob interface
+ */
+#ifndef __IFsrmReportJob_INTERFACE_DEFINED__
+#define __IFsrmReportJob_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmReportJob, 0x38e87280, 0x715c, 0x4c7d, 0xa2,0x80, 0xea,0x16,0x51,0xa1,0x9f,0xef);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("38e87280-715c-4c7d-a280-ea1651a19fef")
+IFsrmReportJob : public IFsrmObject
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Task(
+        BSTR *taskName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Task(
+        BSTR taskName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_NamespaceRoots(
+        SAFEARRAY **namespaceRoots) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_NamespaceRoots(
+        SAFEARRAY *namespaceRoots) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Formats(
+        SAFEARRAY **formats) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Formats(
+        SAFEARRAY *formats) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MailTo(
+        BSTR *mailTo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MailTo(
+        BSTR mailTo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_RunningStatus(
+        FsrmReportRunningStatus *runningStatus) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LastRun(
+        DATE *lastRun) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LastError(
+        BSTR *lastError) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LastGeneratedInDirectory(
+        BSTR *path) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumReports(
+        IFsrmCollection **reports) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateReport(
+        FsrmReportType reportType,
+        IFsrmReport **report) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Run(
+        FsrmReportGenerationContext context) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WaitForCompletion(
+        LONG waitSeconds,
+        VARIANT_BOOL *completed) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Cancel(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmReportJob, 0x38e87280, 0x715c, 0x4c7d, 0xa2,0x80, 0xea,0x16,0x51,0xa1,0x9f,0xef)
+#endif
+#else
+typedef struct IFsrmReportJobVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmReportJob* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmReportJob* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmReportJob* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmReportJob* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmReportJob* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmReportJob* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmReportJob* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IFsrmReportJob* This,
+        FSRM_OBJECT_ID *id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IFsrmReportJob* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IFsrmReportJob* This,
+        BSTR description);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmReportJob* This);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IFsrmReportJob* This);
+
+    /*** IFsrmReportJob methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Task)(
+        IFsrmReportJob* This,
+        BSTR *taskName);
+
+    HRESULT (STDMETHODCALLTYPE *put_Task)(
+        IFsrmReportJob* This,
+        BSTR taskName);
+
+    HRESULT (STDMETHODCALLTYPE *get_NamespaceRoots)(
+        IFsrmReportJob* This,
+        SAFEARRAY **namespaceRoots);
+
+    HRESULT (STDMETHODCALLTYPE *put_NamespaceRoots)(
+        IFsrmReportJob* This,
+        SAFEARRAY *namespaceRoots);
+
+    HRESULT (STDMETHODCALLTYPE *get_Formats)(
+        IFsrmReportJob* This,
+        SAFEARRAY **formats);
+
+    HRESULT (STDMETHODCALLTYPE *put_Formats)(
+        IFsrmReportJob* This,
+        SAFEARRAY *formats);
+
+    HRESULT (STDMETHODCALLTYPE *get_MailTo)(
+        IFsrmReportJob* This,
+        BSTR *mailTo);
+
+    HRESULT (STDMETHODCALLTYPE *put_MailTo)(
+        IFsrmReportJob* This,
+        BSTR mailTo);
+
+    HRESULT (STDMETHODCALLTYPE *get_RunningStatus)(
+        IFsrmReportJob* This,
+        FsrmReportRunningStatus *runningStatus);
+
+    HRESULT (STDMETHODCALLTYPE *get_LastRun)(
+        IFsrmReportJob* This,
+        DATE *lastRun);
+
+    HRESULT (STDMETHODCALLTYPE *get_LastError)(
+        IFsrmReportJob* This,
+        BSTR *lastError);
+
+    HRESULT (STDMETHODCALLTYPE *get_LastGeneratedInDirectory)(
+        IFsrmReportJob* This,
+        BSTR *path);
+
+    HRESULT (STDMETHODCALLTYPE *EnumReports)(
+        IFsrmReportJob* This,
+        IFsrmCollection **reports);
+
+    HRESULT (STDMETHODCALLTYPE *CreateReport)(
+        IFsrmReportJob* This,
+        FsrmReportType reportType,
+        IFsrmReport **report);
+
+    HRESULT (STDMETHODCALLTYPE *Run)(
+        IFsrmReportJob* This,
+        FsrmReportGenerationContext context);
+
+    HRESULT (STDMETHODCALLTYPE *WaitForCompletion)(
+        IFsrmReportJob* This,
+        LONG waitSeconds,
+        VARIANT_BOOL *completed);
+
+    HRESULT (STDMETHODCALLTYPE *Cancel)(
+        IFsrmReportJob* This);
+
+    END_INTERFACE
+} IFsrmReportJobVtbl;
+interface IFsrmReportJob {
+    CONST_VTBL IFsrmReportJobVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IFsrmReportJob_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IFsrmReportJob_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IFsrmReportJob_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define IFsrmReportJob_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define IFsrmReportJob_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define IFsrmReportJob_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define IFsrmReportJob_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmObject methods ***/
 #define IFsrmReportJob_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
 #define IFsrmReportJob_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
 #define IFsrmReportJob_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
-#define IFsrmReportJob_Delete() (This)->lpVtbl->Delete(This)
-#define IFsrmReportJob_Commit() (This)->lpVtbl->Commit(This)
+#define IFsrmReportJob_Delete(This) (This)->lpVtbl->Delete(This)
+#define IFsrmReportJob_Commit(This) (This)->lpVtbl->Commit(This)
+/*** IFsrmReportJob methods ***/
 #define IFsrmReportJob_get_Task(This,taskName) (This)->lpVtbl->get_Task(This,taskName)
 #define IFsrmReportJob_put_Task(This,taskName) (This)->lpVtbl->put_Task(This,taskName)
 #define IFsrmReportJob_get_NamespaceRoots(This,namespaceRoots) (This)->lpVtbl->get_NamespaceRoots(This,namespaceRoots)
@@ -408,141 +1656,1835 @@
 #define IFsrmReportJob_CreateReport(This,reportType,report) (This)->lpVtbl->CreateReport(This,reportType,report)
 #define IFsrmReportJob_Run(This,context) (This)->lpVtbl->Run(This,context)
 #define IFsrmReportJob_WaitForCompletion(This,waitSeconds,completed) (This)->lpVtbl->WaitForCompletion(This,waitSeconds,completed)
-#define IFsrmReportJob_Cancel() (This)->lpVtbl->Cancel(This)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmReportManager
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#define IFsrmReportJob_Cancel(This) (This)->lpVtbl->Cancel(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmReportJob_QueryInterface(IFsrmReportJob* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmReportJob_AddRef(IFsrmReportJob* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmReportJob_Release(IFsrmReportJob* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmReportJob_GetTypeInfoCount(IFsrmReportJob* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_GetTypeInfo(IFsrmReportJob* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_GetIDsOfNames(IFsrmReportJob* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_Invoke(IFsrmReportJob* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmObject methods ***/
+static FORCEINLINE HRESULT IFsrmReportJob_get_Id(IFsrmReportJob* This,FSRM_OBJECT_ID *id) {
+    return This->lpVtbl->get_Id(This,id);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_get_Description(IFsrmReportJob* This,BSTR *description) {
+    return This->lpVtbl->get_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_put_Description(IFsrmReportJob* This,BSTR description) {
+    return This->lpVtbl->put_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_Delete(IFsrmReportJob* This) {
+    return This->lpVtbl->Delete(This);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_Commit(IFsrmReportJob* This) {
+    return This->lpVtbl->Commit(This);
+}
+/*** IFsrmReportJob methods ***/
+static FORCEINLINE HRESULT IFsrmReportJob_get_Task(IFsrmReportJob* This,BSTR *taskName) {
+    return This->lpVtbl->get_Task(This,taskName);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_put_Task(IFsrmReportJob* This,BSTR taskName) {
+    return This->lpVtbl->put_Task(This,taskName);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_get_NamespaceRoots(IFsrmReportJob* This,SAFEARRAY **namespaceRoots) {
+    return This->lpVtbl->get_NamespaceRoots(This,namespaceRoots);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_put_NamespaceRoots(IFsrmReportJob* This,SAFEARRAY *namespaceRoots) {
+    return This->lpVtbl->put_NamespaceRoots(This,namespaceRoots);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_get_Formats(IFsrmReportJob* This,SAFEARRAY **formats) {
+    return This->lpVtbl->get_Formats(This,formats);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_put_Formats(IFsrmReportJob* This,SAFEARRAY *formats) {
+    return This->lpVtbl->put_Formats(This,formats);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_get_MailTo(IFsrmReportJob* This,BSTR *mailTo) {
+    return This->lpVtbl->get_MailTo(This,mailTo);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_put_MailTo(IFsrmReportJob* This,BSTR mailTo) {
+    return This->lpVtbl->put_MailTo(This,mailTo);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_get_RunningStatus(IFsrmReportJob* This,FsrmReportRunningStatus *runningStatus) {
+    return This->lpVtbl->get_RunningStatus(This,runningStatus);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_get_LastRun(IFsrmReportJob* This,DATE *lastRun) {
+    return This->lpVtbl->get_LastRun(This,lastRun);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_get_LastError(IFsrmReportJob* This,BSTR *lastError) {
+    return This->lpVtbl->get_LastError(This,lastError);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_get_LastGeneratedInDirectory(IFsrmReportJob* This,BSTR *path) {
+    return This->lpVtbl->get_LastGeneratedInDirectory(This,path);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_EnumReports(IFsrmReportJob* This,IFsrmCollection **reports) {
+    return This->lpVtbl->EnumReports(This,reports);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_CreateReport(IFsrmReportJob* This,FsrmReportType reportType,IFsrmReport **report) {
+    return This->lpVtbl->CreateReport(This,reportType,report);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_Run(IFsrmReportJob* This,FsrmReportGenerationContext context) {
+    return This->lpVtbl->Run(This,context);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_WaitForCompletion(IFsrmReportJob* This,LONG waitSeconds,VARIANT_BOOL *completed) {
+    return This->lpVtbl->WaitForCompletion(This,waitSeconds,completed);
+}
+static FORCEINLINE HRESULT IFsrmReportJob_Cancel(IFsrmReportJob* This) {
+    return This->lpVtbl->Cancel(This);
+}
 #endif
-DECLARE_INTERFACE_(IFsrmReportManager,IDispatch)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
-
-    /* IFsrmReportManager methods */
-    STDMETHOD_(HRESULT,EnumReportJobs)(THIS_ FsrmEnumOptions options,IFsrmCollection **reportJobs) PURE;
-    STDMETHOD_(HRESULT,CreateReportJob)(THIS_ IFsrmReportJob **reportJob) PURE;
-    STDMETHOD_(HRESULT,GetReportJob)(THIS_ BSTR taskName,IFsrmReportJob **reportJob) PURE;
-    STDMETHOD_(HRESULT,GetOutputDirectory)(THIS_ FsrmReportGenerationContext context,BSTR *path) PURE;
-    STDMETHOD_(HRESULT,SetOutputDirectory)(THIS_ FsrmReportGenerationContext context,BSTR path) PURE;
-    STDMETHOD_(HRESULT,IsFilterValidForReportType)(THIS_ FsrmReportType reportType,FsrmReportFilter filter,VARIANT_BOOL *valid) PURE;
-    STDMETHOD_(HRESULT,GetDefaultFilter)(THIS_ FsrmReportType reportType,FsrmReportFilter filter,VARIANT *filterValue) PURE;
-    STDMETHOD_(HRESULT,SetDefaultFilter)(THIS_ FsrmReportType reportType,FsrmReportFilter filter,VARIANT filterValue) PURE;
-    STDMETHOD_(HRESULT,GetReportSizeLimit)(THIS_ FsrmReportLimit limit,VARIANT *limitValue) PURE;
-    STDMETHOD_(HRESULT,SetReportSizeLimit)(THIS_ FsrmReportLimit limit,VARIANT limitValue) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IFsrmReportManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IFsrmReportManager_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IFsrmReportManager_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmReportManager_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IFsrmReportManager_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IFsrmReportManager_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IFsrmReportManager_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IFsrmReportManager_EnumReportJobs(This,options,reportJobs) (This)->lpVtbl->EnumReportJobs(This,options,reportJobs)
-#define IFsrmReportManager_CreateReportJob(This,reportJob) (This)->lpVtbl->CreateReportJob(This,reportJob)
-#define IFsrmReportManager_GetReportJob(This,taskName,reportJob) (This)->lpVtbl->GetReportJob(This,taskName,reportJob)
-#define IFsrmReportManager_GetOutputDirectory(This,context,path) (This)->lpVtbl->GetOutputDirectory(This,context,path)
-#define IFsrmReportManager_SetOutputDirectory(This,context,path) (This)->lpVtbl->SetOutputDirectory(This,context,path)
-#define IFsrmReportManager_IsFilterValidForReportType(This,reportType,filter,valid) (This)->lpVtbl->IsFilterValidForReportType(This,reportType,filter,valid)
-#define IFsrmReportManager_GetDefaultFilter(This,reportType,filter,filterValue) (This)->lpVtbl->GetDefaultFilter(This,reportType,filter,filterValue)
-#define IFsrmReportManager_SetDefaultFilter(This,reportType,filter,filterValue) (This)->lpVtbl->SetDefaultFilter(This,reportType,filter,filterValue)
-#define IFsrmReportManager_GetReportSizeLimit(This,limit,limitValue) (This)->lpVtbl->GetReportSizeLimit(This,limit,limitValue)
-#define IFsrmReportManager_SetReportSizeLimit(This,limit,limitValue) (This)->lpVtbl->SetReportSizeLimit(This,limit,limitValue)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmReportScheduler
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
 #endif
-DECLARE_INTERFACE_(IFsrmReportScheduler,IDispatch)
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_get_Task_Proxy(
+    IFsrmReportJob* This,
+    BSTR *taskName);
+void __RPC_STUB IFsrmReportJob_get_Task_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_put_Task_Proxy(
+    IFsrmReportJob* This,
+    BSTR taskName);
+void __RPC_STUB IFsrmReportJob_put_Task_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_get_NamespaceRoots_Proxy(
+    IFsrmReportJob* This,
+    SAFEARRAY **namespaceRoots);
+void __RPC_STUB IFsrmReportJob_get_NamespaceRoots_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_put_NamespaceRoots_Proxy(
+    IFsrmReportJob* This,
+    SAFEARRAY *namespaceRoots);
+void __RPC_STUB IFsrmReportJob_put_NamespaceRoots_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_get_Formats_Proxy(
+    IFsrmReportJob* This,
+    SAFEARRAY **formats);
+void __RPC_STUB IFsrmReportJob_get_Formats_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_put_Formats_Proxy(
+    IFsrmReportJob* This,
+    SAFEARRAY *formats);
+void __RPC_STUB IFsrmReportJob_put_Formats_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_get_MailTo_Proxy(
+    IFsrmReportJob* This,
+    BSTR *mailTo);
+void __RPC_STUB IFsrmReportJob_get_MailTo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_put_MailTo_Proxy(
+    IFsrmReportJob* This,
+    BSTR mailTo);
+void __RPC_STUB IFsrmReportJob_put_MailTo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_get_RunningStatus_Proxy(
+    IFsrmReportJob* This,
+    FsrmReportRunningStatus *runningStatus);
+void __RPC_STUB IFsrmReportJob_get_RunningStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_get_LastRun_Proxy(
+    IFsrmReportJob* This,
+    DATE *lastRun);
+void __RPC_STUB IFsrmReportJob_get_LastRun_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_get_LastError_Proxy(
+    IFsrmReportJob* This,
+    BSTR *lastError);
+void __RPC_STUB IFsrmReportJob_get_LastError_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_get_LastGeneratedInDirectory_Proxy(
+    IFsrmReportJob* This,
+    BSTR *path);
+void __RPC_STUB IFsrmReportJob_get_LastGeneratedInDirectory_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_EnumReports_Proxy(
+    IFsrmReportJob* This,
+    IFsrmCollection **reports);
+void __RPC_STUB IFsrmReportJob_EnumReports_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_CreateReport_Proxy(
+    IFsrmReportJob* This,
+    FsrmReportType reportType,
+    IFsrmReport **report);
+void __RPC_STUB IFsrmReportJob_CreateReport_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_Run_Proxy(
+    IFsrmReportJob* This,
+    FsrmReportGenerationContext context);
+void __RPC_STUB IFsrmReportJob_Run_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_WaitForCompletion_Proxy(
+    IFsrmReportJob* This,
+    LONG waitSeconds,
+    VARIANT_BOOL *completed);
+void __RPC_STUB IFsrmReportJob_WaitForCompletion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmReportJob_Cancel_Proxy(
+    IFsrmReportJob* This);
+void __RPC_STUB IFsrmReportJob_Cancel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmReportJob_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmFileManagementJob interface
+ */
+#ifndef __IFsrmFileManagementJob_INTERFACE_DEFINED__
+#define __IFsrmFileManagementJob_INTERFACE_DEFINED__
+
+#define FsrmDaysNotSpecified (-1)
+
+#define FsrmDateNotSpecified ((DATE)-1)
+
+DEFINE_GUID(IID_IFsrmFileManagementJob, 0x0770687e, 0x9f36, 0x4d6f, 0x87,0x78, 0x59,0x9d,0x18,0x84,0x61,0xc9);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("0770687e-9f36-4d6f-8778-599d188461c9")
+IFsrmFileManagementJob : public IFsrmObject
 {
+    virtual HRESULT STDMETHODCALLTYPE get_Name(
+        BSTR *name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Name(
+        BSTR name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_NamespaceRoots(
+        SAFEARRAY **namespaceRoots) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_NamespaceRoots(
+        SAFEARRAY *namespaceRoots) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Enabled(
+        VARIANT_BOOL *enabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Enabled(
+        VARIANT_BOOL enabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_OperationType(
+        FsrmFileManagementType *operationType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_OperationType(
+        FsrmFileManagementType operationType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ExpirationDirectory(
+        BSTR *expirationDirectory) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_ExpirationDirectory(
+        BSTR expirationDirectory) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_CustomAction(
+        IFsrmActionCommand **action) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Notifications(
+        SAFEARRAY **notifications) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Logging(
+        LONG *loggingFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Logging(
+        LONG loggingFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ReportEnabled(
+        VARIANT_BOOL *reportEnabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_ReportEnabled(
+        VARIANT_BOOL reportEnabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Formats(
+        SAFEARRAY **formats) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Formats(
+        SAFEARRAY *formats) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MailTo(
+        BSTR *mailTo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MailTo(
+        BSTR mailTo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DaysSinceFileCreated(
+        LONG *daysSinceCreation) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_DaysSinceFileCreated(
+        LONG daysSinceCreation) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DaysSinceFileLastAccessed(
+        LONG *daysSinceAccess) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_DaysSinceFileLastAccessed(
+        LONG daysSinceAccess) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DaysSinceFileLastModified(
+        LONG *daysSinceModify) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_DaysSinceFileLastModified(
+        LONG daysSinceModify) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PropertyConditions(
+        IFsrmCollection **propertyConditions) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_FromDate(
+        DATE *fromDate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_FromDate(
+        DATE fromDate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Task(
+        BSTR *taskName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Task(
+        BSTR taskName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Parameters(
+        SAFEARRAY **parameters) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Parameters(
+        SAFEARRAY *parameters) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_RunningStatus(
+        FsrmReportRunningStatus *runningStatus) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LastError(
+        BSTR *lastError) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LastReportPathWithoutExtension(
+        BSTR *path) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LastRun(
+        DATE *lastRun) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_FileNamePattern(
+        BSTR *fileNamePattern) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_FileNamePattern(
+        BSTR fileNamePattern) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Run(
+        FsrmReportGenerationContext context) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WaitForCompletion(
+        LONG waitSeconds,
+        VARIANT_BOOL *completed) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Cancel(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddNotification(
+        LONG days) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeleteNotification(
+        LONG days) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ModifyNotification(
+        LONG days,
+        LONG newDays) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateNotificationAction(
+        LONG days,
+        FsrmActionType actionType,
+        IFsrmAction **action) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumNotificationActions(
+        LONG days,
+        IFsrmCollection **actions) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreatePropertyCondition(
+        BSTR name,
+        IFsrmPropertyCondition **propertyCondition) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateCustomAction(
+        IFsrmActionCommand **customAction) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmFileManagementJob, 0x0770687e, 0x9f36, 0x4d6f, 0x87,0x78, 0x59,0x9d,0x18,0x84,0x61,0xc9)
+#endif
+#else
+typedef struct IFsrmFileManagementJobVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmFileManagementJob* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmFileManagementJob* This);
 
-    /* IFsrmReportScheduler methods */
-    STDMETHOD_(HRESULT,VerifyNamespaces)(THIS_ VARIANT *namespacesSafeArray) PURE;
-    STDMETHOD_(HRESULT,CreateScheduleTask)(THIS_ BSTR taskName,VARIANT *namespacesSafeArray,BSTR serializedTask) PURE;
-    STDMETHOD_(HRESULT,ModifyScheduleTask)(THIS_ BSTR taskName,VARIANT *namespacesSafeArray,BSTR serializedTask) PURE;
-    STDMETHOD_(HRESULT,DeleteScheduleTask)(THIS_ BSTR taskName) PURE;
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmFileManagementJob* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmFileManagementJob* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmFileManagementJob* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmFileManagementJob* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmFileManagementJob* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IFsrmFileManagementJob* This,
+        FSRM_OBJECT_ID *id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IFsrmFileManagementJob* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IFsrmFileManagementJob* This,
+        BSTR description);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmFileManagementJob* This);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IFsrmFileManagementJob* This);
+
+    /*** IFsrmFileManagementJob methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IFsrmFileManagementJob* This,
+        BSTR *name);
+
+    HRESULT (STDMETHODCALLTYPE *put_Name)(
+        IFsrmFileManagementJob* This,
+        BSTR name);
+
+    HRESULT (STDMETHODCALLTYPE *get_NamespaceRoots)(
+        IFsrmFileManagementJob* This,
+        SAFEARRAY **namespaceRoots);
+
+    HRESULT (STDMETHODCALLTYPE *put_NamespaceRoots)(
+        IFsrmFileManagementJob* This,
+        SAFEARRAY *namespaceRoots);
+
+    HRESULT (STDMETHODCALLTYPE *get_Enabled)(
+        IFsrmFileManagementJob* This,
+        VARIANT_BOOL *enabled);
+
+    HRESULT (STDMETHODCALLTYPE *put_Enabled)(
+        IFsrmFileManagementJob* This,
+        VARIANT_BOOL enabled);
+
+    HRESULT (STDMETHODCALLTYPE *get_OperationType)(
+        IFsrmFileManagementJob* This,
+        FsrmFileManagementType *operationType);
+
+    HRESULT (STDMETHODCALLTYPE *put_OperationType)(
+        IFsrmFileManagementJob* This,
+        FsrmFileManagementType operationType);
+
+    HRESULT (STDMETHODCALLTYPE *get_ExpirationDirectory)(
+        IFsrmFileManagementJob* This,
+        BSTR *expirationDirectory);
+
+    HRESULT (STDMETHODCALLTYPE *put_ExpirationDirectory)(
+        IFsrmFileManagementJob* This,
+        BSTR expirationDirectory);
+
+    HRESULT (STDMETHODCALLTYPE *get_CustomAction)(
+        IFsrmFileManagementJob* This,
+        IFsrmActionCommand **action);
+
+    HRESULT (STDMETHODCALLTYPE *get_Notifications)(
+        IFsrmFileManagementJob* This,
+        SAFEARRAY **notifications);
+
+    HRESULT (STDMETHODCALLTYPE *get_Logging)(
+        IFsrmFileManagementJob* This,
+        LONG *loggingFlags);
+
+    HRESULT (STDMETHODCALLTYPE *put_Logging)(
+        IFsrmFileManagementJob* This,
+        LONG loggingFlags);
+
+    HRESULT (STDMETHODCALLTYPE *get_ReportEnabled)(
+        IFsrmFileManagementJob* This,
+        VARIANT_BOOL *reportEnabled);
+
+    HRESULT (STDMETHODCALLTYPE *put_ReportEnabled)(
+        IFsrmFileManagementJob* This,
+        VARIANT_BOOL reportEnabled);
+
+    HRESULT (STDMETHODCALLTYPE *get_Formats)(
+        IFsrmFileManagementJob* This,
+        SAFEARRAY **formats);
+
+    HRESULT (STDMETHODCALLTYPE *put_Formats)(
+        IFsrmFileManagementJob* This,
+        SAFEARRAY *formats);
+
+    HRESULT (STDMETHODCALLTYPE *get_MailTo)(
+        IFsrmFileManagementJob* This,
+        BSTR *mailTo);
+
+    HRESULT (STDMETHODCALLTYPE *put_MailTo)(
+        IFsrmFileManagementJob* This,
+        BSTR mailTo);
+
+    HRESULT (STDMETHODCALLTYPE *get_DaysSinceFileCreated)(
+        IFsrmFileManagementJob* This,
+        LONG *daysSinceCreation);
+
+    HRESULT (STDMETHODCALLTYPE *put_DaysSinceFileCreated)(
+        IFsrmFileManagementJob* This,
+        LONG daysSinceCreation);
+
+    HRESULT (STDMETHODCALLTYPE *get_DaysSinceFileLastAccessed)(
+        IFsrmFileManagementJob* This,
+        LONG *daysSinceAccess);
+
+    HRESULT (STDMETHODCALLTYPE *put_DaysSinceFileLastAccessed)(
+        IFsrmFileManagementJob* This,
+        LONG daysSinceAccess);
+
+    HRESULT (STDMETHODCALLTYPE *get_DaysSinceFileLastModified)(
+        IFsrmFileManagementJob* This,
+        LONG *daysSinceModify);
+
+    HRESULT (STDMETHODCALLTYPE *put_DaysSinceFileLastModified)(
+        IFsrmFileManagementJob* This,
+        LONG daysSinceModify);
+
+    HRESULT (STDMETHODCALLTYPE *get_PropertyConditions)(
+        IFsrmFileManagementJob* This,
+        IFsrmCollection **propertyConditions);
+
+    HRESULT (STDMETHODCALLTYPE *get_FromDate)(
+        IFsrmFileManagementJob* This,
+        DATE *fromDate);
+
+    HRESULT (STDMETHODCALLTYPE *put_FromDate)(
+        IFsrmFileManagementJob* This,
+        DATE fromDate);
+
+    HRESULT (STDMETHODCALLTYPE *get_Task)(
+        IFsrmFileManagementJob* This,
+        BSTR *taskName);
+
+    HRESULT (STDMETHODCALLTYPE *put_Task)(
+        IFsrmFileManagementJob* This,
+        BSTR taskName);
+
+    HRESULT (STDMETHODCALLTYPE *get_Parameters)(
+        IFsrmFileManagementJob* This,
+        SAFEARRAY **parameters);
+
+    HRESULT (STDMETHODCALLTYPE *put_Parameters)(
+        IFsrmFileManagementJob* This,
+        SAFEARRAY *parameters);
+
+    HRESULT (STDMETHODCALLTYPE *get_RunningStatus)(
+        IFsrmFileManagementJob* This,
+        FsrmReportRunningStatus *runningStatus);
+
+    HRESULT (STDMETHODCALLTYPE *get_LastError)(
+        IFsrmFileManagementJob* This,
+        BSTR *lastError);
+
+    HRESULT (STDMETHODCALLTYPE *get_LastReportPathWithoutExtension)(
+        IFsrmFileManagementJob* This,
+        BSTR *path);
+
+    HRESULT (STDMETHODCALLTYPE *get_LastRun)(
+        IFsrmFileManagementJob* This,
+        DATE *lastRun);
+
+    HRESULT (STDMETHODCALLTYPE *get_FileNamePattern)(
+        IFsrmFileManagementJob* This,
+        BSTR *fileNamePattern);
+
+    HRESULT (STDMETHODCALLTYPE *put_FileNamePattern)(
+        IFsrmFileManagementJob* This,
+        BSTR fileNamePattern);
+
+    HRESULT (STDMETHODCALLTYPE *Run)(
+        IFsrmFileManagementJob* This,
+        FsrmReportGenerationContext context);
+
+    HRESULT (STDMETHODCALLTYPE *WaitForCompletion)(
+        IFsrmFileManagementJob* This,
+        LONG waitSeconds,
+        VARIANT_BOOL *completed);
+
+    HRESULT (STDMETHODCALLTYPE *Cancel)(
+        IFsrmFileManagementJob* This);
+
+    HRESULT (STDMETHODCALLTYPE *AddNotification)(
+        IFsrmFileManagementJob* This,
+        LONG days);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteNotification)(
+        IFsrmFileManagementJob* This,
+        LONG days);
+
+    HRESULT (STDMETHODCALLTYPE *ModifyNotification)(
+        IFsrmFileManagementJob* This,
+        LONG days,
+        LONG newDays);
+
+    HRESULT (STDMETHODCALLTYPE *CreateNotificationAction)(
+        IFsrmFileManagementJob* This,
+        LONG days,
+        FsrmActionType actionType,
+        IFsrmAction **action);
+
+    HRESULT (STDMETHODCALLTYPE *EnumNotificationActions)(
+        IFsrmFileManagementJob* This,
+        LONG days,
+        IFsrmCollection **actions);
+
+    HRESULT (STDMETHODCALLTYPE *CreatePropertyCondition)(
+        IFsrmFileManagementJob* This,
+        BSTR name,
+        IFsrmPropertyCondition **propertyCondition);
+
+    HRESULT (STDMETHODCALLTYPE *CreateCustomAction)(
+        IFsrmFileManagementJob* This,
+        IFsrmActionCommand **customAction);
 
     END_INTERFACE
+} IFsrmFileManagementJobVtbl;
+interface IFsrmFileManagementJob {
+    CONST_VTBL IFsrmFileManagementJobVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
-#define IFsrmReportScheduler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IFsrmReportScheduler_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IFsrmReportScheduler_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmReportScheduler_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IFsrmReportScheduler_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IFsrmReportScheduler_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IFsrmReportScheduler_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IFsrmReportScheduler_VerifyNamespaces(This,namespacesSafeArray) (This)->lpVtbl->VerifyNamespaces(This,namespacesSafeArray)
-#define IFsrmReportScheduler_CreateScheduleTask(This,taskName,namespacesSafeArray,serializedTask) (This)->lpVtbl->CreateScheduleTask(This,taskName,namespacesSafeArray,serializedTask)
-#define IFsrmReportScheduler_ModifyScheduleTask(This,taskName,namespacesSafeArray,serializedTask) (This)->lpVtbl->ModifyScheduleTask(This,taskName,namespacesSafeArray,serializedTask)
-#define IFsrmReportScheduler_DeleteScheduleTask(This,taskName) (This)->lpVtbl->DeleteScheduleTask(This,taskName)
-#endif /*COBJMACROS*/
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmFileManagementJob_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmFileManagementJob_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmFileManagementJob_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmFileManagementJob_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmFileManagementJob_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmFileManagementJob_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmFileManagementJob_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmObject methods ***/
+#define IFsrmFileManagementJob_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
+#define IFsrmFileManagementJob_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
+#define IFsrmFileManagementJob_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
+#define IFsrmFileManagementJob_Delete(This) (This)->lpVtbl->Delete(This)
+#define IFsrmFileManagementJob_Commit(This) (This)->lpVtbl->Commit(This)
+/*** IFsrmFileManagementJob methods ***/
+#define IFsrmFileManagementJob_get_Name(This,name) (This)->lpVtbl->get_Name(This,name)
+#define IFsrmFileManagementJob_put_Name(This,name) (This)->lpVtbl->put_Name(This,name)
+#define IFsrmFileManagementJob_get_NamespaceRoots(This,namespaceRoots) (This)->lpVtbl->get_NamespaceRoots(This,namespaceRoots)
+#define IFsrmFileManagementJob_put_NamespaceRoots(This,namespaceRoots) (This)->lpVtbl->put_NamespaceRoots(This,namespaceRoots)
+#define IFsrmFileManagementJob_get_Enabled(This,enabled) (This)->lpVtbl->get_Enabled(This,enabled)
+#define IFsrmFileManagementJob_put_Enabled(This,enabled) (This)->lpVtbl->put_Enabled(This,enabled)
+#define IFsrmFileManagementJob_get_OperationType(This,operationType) (This)->lpVtbl->get_OperationType(This,operationType)
+#define IFsrmFileManagementJob_put_OperationType(This,operationType) (This)->lpVtbl->put_OperationType(This,operationType)
+#define IFsrmFileManagementJob_get_ExpirationDirectory(This,expirationDirectory) (This)->lpVtbl->get_ExpirationDirectory(This,expirationDirectory)
+#define IFsrmFileManagementJob_put_ExpirationDirectory(This,expirationDirectory) (This)->lpVtbl->put_ExpirationDirectory(This,expirationDirectory)
+#define IFsrmFileManagementJob_get_CustomAction(This,action) (This)->lpVtbl->get_CustomAction(This,action)
+#define IFsrmFileManagementJob_get_Notifications(This,notifications) (This)->lpVtbl->get_Notifications(This,notifications)
+#define IFsrmFileManagementJob_get_Logging(This,loggingFlags) (This)->lpVtbl->get_Logging(This,loggingFlags)
+#define IFsrmFileManagementJob_put_Logging(This,loggingFlags) (This)->lpVtbl->put_Logging(This,loggingFlags)
+#define IFsrmFileManagementJob_get_ReportEnabled(This,reportEnabled) (This)->lpVtbl->get_ReportEnabled(This,reportEnabled)
+#define IFsrmFileManagementJob_put_ReportEnabled(This,reportEnabled) (This)->lpVtbl->put_ReportEnabled(This,reportEnabled)
+#define IFsrmFileManagementJob_get_Formats(This,formats) (This)->lpVtbl->get_Formats(This,formats)
+#define IFsrmFileManagementJob_put_Formats(This,formats) (This)->lpVtbl->put_Formats(This,formats)
+#define IFsrmFileManagementJob_get_MailTo(This,mailTo) (This)->lpVtbl->get_MailTo(This,mailTo)
+#define IFsrmFileManagementJob_put_MailTo(This,mailTo) (This)->lpVtbl->put_MailTo(This,mailTo)
+#define IFsrmFileManagementJob_get_DaysSinceFileCreated(This,daysSinceCreation) (This)->lpVtbl->get_DaysSinceFileCreated(This,daysSinceCreation)
+#define IFsrmFileManagementJob_put_DaysSinceFileCreated(This,daysSinceCreation) (This)->lpVtbl->put_DaysSinceFileCreated(This,daysSinceCreation)
+#define IFsrmFileManagementJob_get_DaysSinceFileLastAccessed(This,daysSinceAccess) (This)->lpVtbl->get_DaysSinceFileLastAccessed(This,daysSinceAccess)
+#define IFsrmFileManagementJob_put_DaysSinceFileLastAccessed(This,daysSinceAccess) (This)->lpVtbl->put_DaysSinceFileLastAccessed(This,daysSinceAccess)
+#define IFsrmFileManagementJob_get_DaysSinceFileLastModified(This,daysSinceModify) (This)->lpVtbl->get_DaysSinceFileLastModified(This,daysSinceModify)
+#define IFsrmFileManagementJob_put_DaysSinceFileLastModified(This,daysSinceModify) (This)->lpVtbl->put_DaysSinceFileLastModified(This,daysSinceModify)
+#define IFsrmFileManagementJob_get_PropertyConditions(This,propertyConditions) (This)->lpVtbl->get_PropertyConditions(This,propertyConditions)
+#define IFsrmFileManagementJob_get_FromDate(This,fromDate) (This)->lpVtbl->get_FromDate(This,fromDate)
+#define IFsrmFileManagementJob_put_FromDate(This,fromDate) (This)->lpVtbl->put_FromDate(This,fromDate)
+#define IFsrmFileManagementJob_get_Task(This,taskName) (This)->lpVtbl->get_Task(This,taskName)
+#define IFsrmFileManagementJob_put_Task(This,taskName) (This)->lpVtbl->put_Task(This,taskName)
+#define IFsrmFileManagementJob_get_Parameters(This,parameters) (This)->lpVtbl->get_Parameters(This,parameters)
+#define IFsrmFileManagementJob_put_Parameters(This,parameters) (This)->lpVtbl->put_Parameters(This,parameters)
+#define IFsrmFileManagementJob_get_RunningStatus(This,runningStatus) (This)->lpVtbl->get_RunningStatus(This,runningStatus)
+#define IFsrmFileManagementJob_get_LastError(This,lastError) (This)->lpVtbl->get_LastError(This,lastError)
+#define IFsrmFileManagementJob_get_LastReportPathWithoutExtension(This,path) (This)->lpVtbl->get_LastReportPathWithoutExtension(This,path)
+#define IFsrmFileManagementJob_get_LastRun(This,lastRun) (This)->lpVtbl->get_LastRun(This,lastRun)
+#define IFsrmFileManagementJob_get_FileNamePattern(This,fileNamePattern) (This)->lpVtbl->get_FileNamePattern(This,fileNamePattern)
+#define IFsrmFileManagementJob_put_FileNamePattern(This,fileNamePattern) (This)->lpVtbl->put_FileNamePattern(This,fileNamePattern)
+#define IFsrmFileManagementJob_Run(This,context) (This)->lpVtbl->Run(This,context)
+#define IFsrmFileManagementJob_WaitForCompletion(This,waitSeconds,completed) (This)->lpVtbl->WaitForCompletion(This,waitSeconds,completed)
+#define IFsrmFileManagementJob_Cancel(This) (This)->lpVtbl->Cancel(This)
+#define IFsrmFileManagementJob_AddNotification(This,days) (This)->lpVtbl->AddNotification(This,days)
+#define IFsrmFileManagementJob_DeleteNotification(This,days) (This)->lpVtbl->DeleteNotification(This,days)
+#define IFsrmFileManagementJob_ModifyNotification(This,days,newDays) (This)->lpVtbl->ModifyNotification(This,days,newDays)
+#define IFsrmFileManagementJob_CreateNotificationAction(This,days,actionType,action) (This)->lpVtbl->CreateNotificationAction(This,days,actionType,action)
+#define IFsrmFileManagementJob_EnumNotificationActions(This,days,actions) (This)->lpVtbl->EnumNotificationActions(This,days,actions)
+#define IFsrmFileManagementJob_CreatePropertyCondition(This,name,propertyCondition) (This)->lpVtbl->CreatePropertyCondition(This,name,propertyCondition)
+#define IFsrmFileManagementJob_CreateCustomAction(This,customAction) (This)->lpVtbl->CreateCustomAction(This,customAction)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmFileManagementJob_QueryInterface(IFsrmFileManagementJob* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmFileManagementJob_AddRef(IFsrmFileManagementJob* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmFileManagementJob_Release(IFsrmFileManagementJob* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmFileManagementJob_GetTypeInfoCount(IFsrmFileManagementJob* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_GetTypeInfo(IFsrmFileManagementJob* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_GetIDsOfNames(IFsrmFileManagementJob* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_Invoke(IFsrmFileManagementJob* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmObject methods ***/
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_Id(IFsrmFileManagementJob* This,FSRM_OBJECT_ID *id) {
+    return This->lpVtbl->get_Id(This,id);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_Description(IFsrmFileManagementJob* This,BSTR *description) {
+    return This->lpVtbl->get_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_Description(IFsrmFileManagementJob* This,BSTR description) {
+    return This->lpVtbl->put_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_Delete(IFsrmFileManagementJob* This) {
+    return This->lpVtbl->Delete(This);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_Commit(IFsrmFileManagementJob* This) {
+    return This->lpVtbl->Commit(This);
+}
+/*** IFsrmFileManagementJob methods ***/
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_Name(IFsrmFileManagementJob* This,BSTR *name) {
+    return This->lpVtbl->get_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_Name(IFsrmFileManagementJob* This,BSTR name) {
+    return This->lpVtbl->put_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_NamespaceRoots(IFsrmFileManagementJob* This,SAFEARRAY **namespaceRoots) {
+    return This->lpVtbl->get_NamespaceRoots(This,namespaceRoots);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_NamespaceRoots(IFsrmFileManagementJob* This,SAFEARRAY *namespaceRoots) {
+    return This->lpVtbl->put_NamespaceRoots(This,namespaceRoots);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_Enabled(IFsrmFileManagementJob* This,VARIANT_BOOL *enabled) {
+    return This->lpVtbl->get_Enabled(This,enabled);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_Enabled(IFsrmFileManagementJob* This,VARIANT_BOOL enabled) {
+    return This->lpVtbl->put_Enabled(This,enabled);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_OperationType(IFsrmFileManagementJob* This,FsrmFileManagementType *operationType) {
+    return This->lpVtbl->get_OperationType(This,operationType);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_OperationType(IFsrmFileManagementJob* This,FsrmFileManagementType operationType) {
+    return This->lpVtbl->put_OperationType(This,operationType);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_ExpirationDirectory(IFsrmFileManagementJob* This,BSTR *expirationDirectory) {
+    return This->lpVtbl->get_ExpirationDirectory(This,expirationDirectory);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_ExpirationDirectory(IFsrmFileManagementJob* This,BSTR expirationDirectory) {
+    return This->lpVtbl->put_ExpirationDirectory(This,expirationDirectory);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_CustomAction(IFsrmFileManagementJob* This,IFsrmActionCommand **action) {
+    return This->lpVtbl->get_CustomAction(This,action);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_Notifications(IFsrmFileManagementJob* This,SAFEARRAY **notifications) {
+    return This->lpVtbl->get_Notifications(This,notifications);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_Logging(IFsrmFileManagementJob* This,LONG *loggingFlags) {
+    return This->lpVtbl->get_Logging(This,loggingFlags);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_Logging(IFsrmFileManagementJob* This,LONG loggingFlags) {
+    return This->lpVtbl->put_Logging(This,loggingFlags);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_ReportEnabled(IFsrmFileManagementJob* This,VARIANT_BOOL *reportEnabled) {
+    return This->lpVtbl->get_ReportEnabled(This,reportEnabled);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_ReportEnabled(IFsrmFileManagementJob* This,VARIANT_BOOL reportEnabled) {
+    return This->lpVtbl->put_ReportEnabled(This,reportEnabled);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_Formats(IFsrmFileManagementJob* This,SAFEARRAY **formats) {
+    return This->lpVtbl->get_Formats(This,formats);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_Formats(IFsrmFileManagementJob* This,SAFEARRAY *formats) {
+    return This->lpVtbl->put_Formats(This,formats);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_MailTo(IFsrmFileManagementJob* This,BSTR *mailTo) {
+    return This->lpVtbl->get_MailTo(This,mailTo);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_MailTo(IFsrmFileManagementJob* This,BSTR mailTo) {
+    return This->lpVtbl->put_MailTo(This,mailTo);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_DaysSinceFileCreated(IFsrmFileManagementJob* This,LONG *daysSinceCreation) {
+    return This->lpVtbl->get_DaysSinceFileCreated(This,daysSinceCreation);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_DaysSinceFileCreated(IFsrmFileManagementJob* This,LONG daysSinceCreation) {
+    return This->lpVtbl->put_DaysSinceFileCreated(This,daysSinceCreation);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_DaysSinceFileLastAccessed(IFsrmFileManagementJob* This,LONG *daysSinceAccess) {
+    return This->lpVtbl->get_DaysSinceFileLastAccessed(This,daysSinceAccess);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_DaysSinceFileLastAccessed(IFsrmFileManagementJob* This,LONG daysSinceAccess) {
+    return This->lpVtbl->put_DaysSinceFileLastAccessed(This,daysSinceAccess);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_DaysSinceFileLastModified(IFsrmFileManagementJob* This,LONG *daysSinceModify) {
+    return This->lpVtbl->get_DaysSinceFileLastModified(This,daysSinceModify);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_DaysSinceFileLastModified(IFsrmFileManagementJob* This,LONG daysSinceModify) {
+    return This->lpVtbl->put_DaysSinceFileLastModified(This,daysSinceModify);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_PropertyConditions(IFsrmFileManagementJob* This,IFsrmCollection **propertyConditions) {
+    return This->lpVtbl->get_PropertyConditions(This,propertyConditions);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_FromDate(IFsrmFileManagementJob* This,DATE *fromDate) {
+    return This->lpVtbl->get_FromDate(This,fromDate);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_FromDate(IFsrmFileManagementJob* This,DATE fromDate) {
+    return This->lpVtbl->put_FromDate(This,fromDate);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_Task(IFsrmFileManagementJob* This,BSTR *taskName) {
+    return This->lpVtbl->get_Task(This,taskName);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_Task(IFsrmFileManagementJob* This,BSTR taskName) {
+    return This->lpVtbl->put_Task(This,taskName);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_Parameters(IFsrmFileManagementJob* This,SAFEARRAY **parameters) {
+    return This->lpVtbl->get_Parameters(This,parameters);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_Parameters(IFsrmFileManagementJob* This,SAFEARRAY *parameters) {
+    return This->lpVtbl->put_Parameters(This,parameters);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_RunningStatus(IFsrmFileManagementJob* This,FsrmReportRunningStatus *runningStatus) {
+    return This->lpVtbl->get_RunningStatus(This,runningStatus);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_LastError(IFsrmFileManagementJob* This,BSTR *lastError) {
+    return This->lpVtbl->get_LastError(This,lastError);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_LastReportPathWithoutExtension(IFsrmFileManagementJob* This,BSTR *path) {
+    return This->lpVtbl->get_LastReportPathWithoutExtension(This,path);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_LastRun(IFsrmFileManagementJob* This,DATE *lastRun) {
+    return This->lpVtbl->get_LastRun(This,lastRun);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_get_FileNamePattern(IFsrmFileManagementJob* This,BSTR *fileNamePattern) {
+    return This->lpVtbl->get_FileNamePattern(This,fileNamePattern);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_put_FileNamePattern(IFsrmFileManagementJob* This,BSTR fileNamePattern) {
+    return This->lpVtbl->put_FileNamePattern(This,fileNamePattern);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_Run(IFsrmFileManagementJob* This,FsrmReportGenerationContext context) {
+    return This->lpVtbl->Run(This,context);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_WaitForCompletion(IFsrmFileManagementJob* This,LONG waitSeconds,VARIANT_BOOL *completed) {
+    return This->lpVtbl->WaitForCompletion(This,waitSeconds,completed);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_Cancel(IFsrmFileManagementJob* This) {
+    return This->lpVtbl->Cancel(This);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_AddNotification(IFsrmFileManagementJob* This,LONG days) {
+    return This->lpVtbl->AddNotification(This,days);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_DeleteNotification(IFsrmFileManagementJob* This,LONG days) {
+    return This->lpVtbl->DeleteNotification(This,days);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_ModifyNotification(IFsrmFileManagementJob* This,LONG days,LONG newDays) {
+    return This->lpVtbl->ModifyNotification(This,days,newDays);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_CreateNotificationAction(IFsrmFileManagementJob* This,LONG days,FsrmActionType actionType,IFsrmAction **action) {
+    return This->lpVtbl->CreateNotificationAction(This,days,actionType,action);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_EnumNotificationActions(IFsrmFileManagementJob* This,LONG days,IFsrmCollection **actions) {
+    return This->lpVtbl->EnumNotificationActions(This,days,actions);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_CreatePropertyCondition(IFsrmFileManagementJob* This,BSTR name,IFsrmPropertyCondition **propertyCondition) {
+    return This->lpVtbl->CreatePropertyCondition(This,name,propertyCondition);
+}
+static FORCEINLINE HRESULT IFsrmFileManagementJob_CreateCustomAction(IFsrmFileManagementJob* This,IFsrmActionCommand **customAction) {
+    return This->lpVtbl->CreateCustomAction(This,customAction);
+}
+#endif
+#endif
 
-#endif /* (_WIN32_WINNT >= 0x0600) */
-#if (_WIN32_WINNT >= 0x0601)
+#endif
 
-#undef  INTERFACE
-#define INTERFACE IFsrmFileManagementJobManager
-DECLARE_INTERFACE_(IFsrmFileManagementJobManager,IDispatch)
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_Name_Proxy(
+    IFsrmFileManagementJob* This,
+    BSTR *name);
+void __RPC_STUB IFsrmFileManagementJob_get_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_put_Name_Proxy(
+    IFsrmFileManagementJob* This,
+    BSTR name);
+void __RPC_STUB IFsrmFileManagementJob_put_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_NamespaceRoots_Proxy(
+    IFsrmFileManagementJob* This,
+    SAFEARRAY **namespaceRoots);
+void __RPC_STUB IFsrmFileManagementJob_get_NamespaceRoots_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_put_NamespaceRoots_Proxy(
+    IFsrmFileManagementJob* This,
+    SAFEARRAY *namespaceRoots);
+void __RPC_STUB IFsrmFileManagementJob_put_NamespaceRoots_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_Enabled_Proxy(
+    IFsrmFileManagementJob* This,
+    VARIANT_BOOL *enabled);
+void __RPC_STUB IFsrmFileManagementJob_get_Enabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_put_Enabled_Proxy(
+    IFsrmFileManagementJob* This,
+    VARIANT_BOOL enabled);
+void __RPC_STUB IFsrmFileManagementJob_put_Enabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_OperationType_Proxy(
+    IFsrmFileManagementJob* This,
+    FsrmFileManagementType *operationType);
+void __RPC_STUB IFsrmFileManagementJob_get_OperationType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_put_OperationType_Proxy(
+    IFsrmFileManagementJob* This,
+    FsrmFileManagementType operationType);
+void __RPC_STUB IFsrmFileManagementJob_put_OperationType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_ExpirationDirectory_Proxy(
+    IFsrmFileManagementJob* This,
+    BSTR *expirationDirectory);
+void __RPC_STUB IFsrmFileManagementJob_get_ExpirationDirectory_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_put_ExpirationDirectory_Proxy(
+    IFsrmFileManagementJob* This,
+    BSTR expirationDirectory);
+void __RPC_STUB IFsrmFileManagementJob_put_ExpirationDirectory_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_CustomAction_Proxy(
+    IFsrmFileManagementJob* This,
+    IFsrmActionCommand **action);
+void __RPC_STUB IFsrmFileManagementJob_get_CustomAction_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_Notifications_Proxy(
+    IFsrmFileManagementJob* This,
+    SAFEARRAY **notifications);
+void __RPC_STUB IFsrmFileManagementJob_get_Notifications_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_Logging_Proxy(
+    IFsrmFileManagementJob* This,
+    LONG *loggingFlags);
+void __RPC_STUB IFsrmFileManagementJob_get_Logging_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_put_Logging_Proxy(
+    IFsrmFileManagementJob* This,
+    LONG loggingFlags);
+void __RPC_STUB IFsrmFileManagementJob_put_Logging_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_ReportEnabled_Proxy(
+    IFsrmFileManagementJob* This,
+    VARIANT_BOOL *reportEnabled);
+void __RPC_STUB IFsrmFileManagementJob_get_ReportEnabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_put_ReportEnabled_Proxy(
+    IFsrmFileManagementJob* This,
+    VARIANT_BOOL reportEnabled);
+void __RPC_STUB IFsrmFileManagementJob_put_ReportEnabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_Formats_Proxy(
+    IFsrmFileManagementJob* This,
+    SAFEARRAY **formats);
+void __RPC_STUB IFsrmFileManagementJob_get_Formats_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_put_Formats_Proxy(
+    IFsrmFileManagementJob* This,
+    SAFEARRAY *formats);
+void __RPC_STUB IFsrmFileManagementJob_put_Formats_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_MailTo_Proxy(
+    IFsrmFileManagementJob* This,
+    BSTR *mailTo);
+void __RPC_STUB IFsrmFileManagementJob_get_MailTo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_put_MailTo_Proxy(
+    IFsrmFileManagementJob* This,
+    BSTR mailTo);
+void __RPC_STUB IFsrmFileManagementJob_put_MailTo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_DaysSinceFileCreated_Proxy(
+    IFsrmFileManagementJob* This,
+    LONG *daysSinceCreation);
+void __RPC_STUB IFsrmFileManagementJob_get_DaysSinceFileCreated_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_put_DaysSinceFileCreated_Proxy(
+    IFsrmFileManagementJob* This,
+    LONG daysSinceCreation);
+void __RPC_STUB IFsrmFileManagementJob_put_DaysSinceFileCreated_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_DaysSinceFileLastAccessed_Proxy(
+    IFsrmFileManagementJob* This,
+    LONG *daysSinceAccess);
+void __RPC_STUB IFsrmFileManagementJob_get_DaysSinceFileLastAccessed_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_put_DaysSinceFileLastAccessed_Proxy(
+    IFsrmFileManagementJob* This,
+    LONG daysSinceAccess);
+void __RPC_STUB IFsrmFileManagementJob_put_DaysSinceFileLastAccessed_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_DaysSinceFileLastModified_Proxy(
+    IFsrmFileManagementJob* This,
+    LONG *daysSinceModify);
+void __RPC_STUB IFsrmFileManagementJob_get_DaysSinceFileLastModified_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_put_DaysSinceFileLastModified_Proxy(
+    IFsrmFileManagementJob* This,
+    LONG daysSinceModify);
+void __RPC_STUB IFsrmFileManagementJob_put_DaysSinceFileLastModified_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_PropertyConditions_Proxy(
+    IFsrmFileManagementJob* This,
+    IFsrmCollection **propertyConditions);
+void __RPC_STUB IFsrmFileManagementJob_get_PropertyConditions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_FromDate_Proxy(
+    IFsrmFileManagementJob* This,
+    DATE *fromDate);
+void __RPC_STUB IFsrmFileManagementJob_get_FromDate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_put_FromDate_Proxy(
+    IFsrmFileManagementJob* This,
+    DATE fromDate);
+void __RPC_STUB IFsrmFileManagementJob_put_FromDate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_Task_Proxy(
+    IFsrmFileManagementJob* This,
+    BSTR *taskName);
+void __RPC_STUB IFsrmFileManagementJob_get_Task_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_put_Task_Proxy(
+    IFsrmFileManagementJob* This,
+    BSTR taskName);
+void __RPC_STUB IFsrmFileManagementJob_put_Task_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_Parameters_Proxy(
+    IFsrmFileManagementJob* This,
+    SAFEARRAY **parameters);
+void __RPC_STUB IFsrmFileManagementJob_get_Parameters_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_put_Parameters_Proxy(
+    IFsrmFileManagementJob* This,
+    SAFEARRAY *parameters);
+void __RPC_STUB IFsrmFileManagementJob_put_Parameters_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_RunningStatus_Proxy(
+    IFsrmFileManagementJob* This,
+    FsrmReportRunningStatus *runningStatus);
+void __RPC_STUB IFsrmFileManagementJob_get_RunningStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_LastError_Proxy(
+    IFsrmFileManagementJob* This,
+    BSTR *lastError);
+void __RPC_STUB IFsrmFileManagementJob_get_LastError_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_LastReportPathWithoutExtension_Proxy(
+    IFsrmFileManagementJob* This,
+    BSTR *path);
+void __RPC_STUB IFsrmFileManagementJob_get_LastReportPathWithoutExtension_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_LastRun_Proxy(
+    IFsrmFileManagementJob* This,
+    DATE *lastRun);
+void __RPC_STUB IFsrmFileManagementJob_get_LastRun_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_get_FileNamePattern_Proxy(
+    IFsrmFileManagementJob* This,
+    BSTR *fileNamePattern);
+void __RPC_STUB IFsrmFileManagementJob_get_FileNamePattern_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_put_FileNamePattern_Proxy(
+    IFsrmFileManagementJob* This,
+    BSTR fileNamePattern);
+void __RPC_STUB IFsrmFileManagementJob_put_FileNamePattern_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_Run_Proxy(
+    IFsrmFileManagementJob* This,
+    FsrmReportGenerationContext context);
+void __RPC_STUB IFsrmFileManagementJob_Run_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_WaitForCompletion_Proxy(
+    IFsrmFileManagementJob* This,
+    LONG waitSeconds,
+    VARIANT_BOOL *completed);
+void __RPC_STUB IFsrmFileManagementJob_WaitForCompletion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_Cancel_Proxy(
+    IFsrmFileManagementJob* This);
+void __RPC_STUB IFsrmFileManagementJob_Cancel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_AddNotification_Proxy(
+    IFsrmFileManagementJob* This,
+    LONG days);
+void __RPC_STUB IFsrmFileManagementJob_AddNotification_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_DeleteNotification_Proxy(
+    IFsrmFileManagementJob* This,
+    LONG days);
+void __RPC_STUB IFsrmFileManagementJob_DeleteNotification_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_ModifyNotification_Proxy(
+    IFsrmFileManagementJob* This,
+    LONG days,
+    LONG newDays);
+void __RPC_STUB IFsrmFileManagementJob_ModifyNotification_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_CreateNotificationAction_Proxy(
+    IFsrmFileManagementJob* This,
+    LONG days,
+    FsrmActionType actionType,
+    IFsrmAction **action);
+void __RPC_STUB IFsrmFileManagementJob_CreateNotificationAction_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_EnumNotificationActions_Proxy(
+    IFsrmFileManagementJob* This,
+    LONG days,
+    IFsrmCollection **actions);
+void __RPC_STUB IFsrmFileManagementJob_EnumNotificationActions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_CreatePropertyCondition_Proxy(
+    IFsrmFileManagementJob* This,
+    BSTR name,
+    IFsrmPropertyCondition **propertyCondition);
+void __RPC_STUB IFsrmFileManagementJob_CreatePropertyCondition_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileManagementJob_CreateCustomAction_Proxy(
+    IFsrmFileManagementJob* This,
+    IFsrmActionCommand **customAction);
+void __RPC_STUB IFsrmFileManagementJob_CreateCustomAction_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmFileManagementJob_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmFileCondition interface
+ */
+#ifndef __IFsrmFileCondition_INTERFACE_DEFINED__
+#define __IFsrmFileCondition_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmFileCondition, 0x70684ffc, 0x691a, 0x4a1a, 0xb9,0x22, 0x97,0x75,0x2e,0x13,0x8c,0xc1);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("70684ffc-691a-4a1a-b922-97752e138cc1")
+IFsrmFileCondition : public IDispatch
 {
+    virtual HRESULT STDMETHODCALLTYPE get_Type(
+        FsrmFileConditionType *pVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Delete(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmFileCondition, 0x70684ffc, 0x691a, 0x4a1a, 0xb9,0x22, 0x97,0x75,0x2e,0x13,0x8c,0xc1)
+#endif
+#else
+typedef struct IFsrmFileConditionVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmFileCondition* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IFsrmFileManagementJobManager methods */
-    STDMETHOD_(HRESULT,get_ActionVariables)(THIS_ SAFEARRAY *variables) PURE;
-    STDMETHOD_(HRESULT,get_ActionVariableDescriptions)(THIS_ SAFEARRAY *descriptions) PURE;
-    STDMETHOD_(HRESULT,EnumFileManagementJobs)(THIS_ FsrmEnumOptions options,IFsrmCollection **fileManagementJobs) PURE;
-    STDMETHOD_(HRESULT,CreateFileManagementJob)(THIS_ IFsrmFileManagementJob **fileManagementJob) PURE;
-    STDMETHOD_(HRESULT,GetFileManagementJob)(THIS_ BSTR name,IFsrmFileManagementJob **fileManagementJob) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmFileCondition* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmFileCondition* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmFileCondition* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmFileCondition* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmFileCondition* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmFileCondition* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmFileCondition methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Type)(
+        IFsrmFileCondition* This,
+        FsrmFileConditionType *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmFileCondition* This);
 
     END_INTERFACE
+} IFsrmFileConditionVtbl;
+interface IFsrmFileCondition {
+    CONST_VTBL IFsrmFileConditionVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
-#define IFsrmFileManagementJobManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IFsrmFileManagementJobManager_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IFsrmFileManagementJobManager_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmFileManagementJobManager_get_ActionVariables(This,variables) (This)->lpVtbl->get_ActionVariables(This,variables)
-#define IFsrmFileManagementJobManager_get_ActionVariableDescriptions(This,descriptions) (This)->lpVtbl->get_ActionVariableDescriptions(This,descriptions)
-#define IFsrmFileManagementJobManager_EnumFileManagementJobs(This,options,fileManagementJobs) (This)->lpVtbl->EnumFileManagementJobs(This,options,fileManagementJobs)
-#define IFsrmFileManagementJobManager_CreateFileManagementJob(This,fileManagementJob) (This)->lpVtbl->CreateFileManagementJob(This,fileManagementJob)
-#define IFsrmFileManagementJobManager_GetFileManagementJob(This,name,fileManagementJob) (This)->lpVtbl->GetFileManagementJob(This,name,fileManagementJob)
-#endif /*COBJMACROS*/
-#endif /*(_WIN32_WINNT >= 0x0601)*/
-#endif /*_INC_FSRMREPORTS*/
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmFileCondition_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmFileCondition_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmFileCondition_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmFileCondition_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmFileCondition_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmFileCondition_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmFileCondition_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmFileCondition methods ***/
+#define IFsrmFileCondition_get_Type(This,pVal) (This)->lpVtbl->get_Type(This,pVal)
+#define IFsrmFileCondition_Delete(This) (This)->lpVtbl->Delete(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmFileCondition_QueryInterface(IFsrmFileCondition* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmFileCondition_AddRef(IFsrmFileCondition* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmFileCondition_Release(IFsrmFileCondition* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmFileCondition_GetTypeInfoCount(IFsrmFileCondition* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmFileCondition_GetTypeInfo(IFsrmFileCondition* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmFileCondition_GetIDsOfNames(IFsrmFileCondition* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmFileCondition_Invoke(IFsrmFileCondition* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmFileCondition methods ***/
+static FORCEINLINE HRESULT IFsrmFileCondition_get_Type(IFsrmFileCondition* This,FsrmFileConditionType *pVal) {
+    return This->lpVtbl->get_Type(This,pVal);
+}
+static FORCEINLINE HRESULT IFsrmFileCondition_Delete(IFsrmFileCondition* This) {
+    return This->lpVtbl->Delete(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmFileCondition_get_Type_Proxy(
+    IFsrmFileCondition* This,
+    FsrmFileConditionType *pVal);
+void __RPC_STUB IFsrmFileCondition_get_Type_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileCondition_Delete_Proxy(
+    IFsrmFileCondition* This);
+void __RPC_STUB IFsrmFileCondition_Delete_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmFileCondition_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmFileConditionProperty interface
+ */
+#ifndef __IFsrmFileConditionProperty_INTERFACE_DEFINED__
+#define __IFsrmFileConditionProperty_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmFileConditionProperty, 0x81926775, 0xb981, 0x4479, 0x98,0x8f, 0xda,0x17,0x1d,0x62,0x73,0x60);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("81926775-b981-4479-988f-da171d627360")
+IFsrmFileConditionProperty : public IFsrmFileCondition
+{
+    virtual HRESULT STDMETHODCALLTYPE get_PropertyName(
+        BSTR *pVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_PropertyName(
+        BSTR newVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PropertyId(
+        FsrmFileSystemPropertyId *pVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_PropertyId(
+        FsrmFileSystemPropertyId newVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Operator(
+        FsrmPropertyConditionType *pVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Operator(
+        FsrmPropertyConditionType newVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ValueType(
+        FsrmPropertyValueType *pVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_ValueType(
+        FsrmPropertyValueType newVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Value(
+        VARIANT *pVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Value(
+        VARIANT newVal) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmFileConditionProperty, 0x81926775, 0xb981, 0x4479, 0x98,0x8f, 0xda,0x17,0x1d,0x62,0x73,0x60)
+#endif
+#else
+typedef struct IFsrmFileConditionPropertyVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmFileConditionProperty* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmFileConditionProperty* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmFileConditionProperty* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmFileConditionProperty* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmFileConditionProperty* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmFileConditionProperty* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmFileConditionProperty* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmFileCondition methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Type)(
+        IFsrmFileConditionProperty* This,
+        FsrmFileConditionType *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmFileConditionProperty* This);
+
+    /*** IFsrmFileConditionProperty methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_PropertyName)(
+        IFsrmFileConditionProperty* This,
+        BSTR *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_PropertyName)(
+        IFsrmFileConditionProperty* This,
+        BSTR newVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_PropertyId)(
+        IFsrmFileConditionProperty* This,
+        FsrmFileSystemPropertyId *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_PropertyId)(
+        IFsrmFileConditionProperty* This,
+        FsrmFileSystemPropertyId newVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_Operator)(
+        IFsrmFileConditionProperty* This,
+        FsrmPropertyConditionType *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_Operator)(
+        IFsrmFileConditionProperty* This,
+        FsrmPropertyConditionType newVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_ValueType)(
+        IFsrmFileConditionProperty* This,
+        FsrmPropertyValueType *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_ValueType)(
+        IFsrmFileConditionProperty* This,
+        FsrmPropertyValueType newVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_Value)(
+        IFsrmFileConditionProperty* This,
+        VARIANT *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *put_Value)(
+        IFsrmFileConditionProperty* This,
+        VARIANT newVal);
+
+    END_INTERFACE
+} IFsrmFileConditionPropertyVtbl;
+interface IFsrmFileConditionProperty {
+    CONST_VTBL IFsrmFileConditionPropertyVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmFileConditionProperty_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmFileConditionProperty_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmFileConditionProperty_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmFileConditionProperty_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmFileConditionProperty_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmFileConditionProperty_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmFileConditionProperty_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmFileCondition methods ***/
+#define IFsrmFileConditionProperty_get_Type(This,pVal) (This)->lpVtbl->get_Type(This,pVal)
+#define IFsrmFileConditionProperty_Delete(This) (This)->lpVtbl->Delete(This)
+/*** IFsrmFileConditionProperty methods ***/
+#define IFsrmFileConditionProperty_get_PropertyName(This,pVal) (This)->lpVtbl->get_PropertyName(This,pVal)
+#define IFsrmFileConditionProperty_put_PropertyName(This,newVal) (This)->lpVtbl->put_PropertyName(This,newVal)
+#define IFsrmFileConditionProperty_get_PropertyId(This,pVal) (This)->lpVtbl->get_PropertyId(This,pVal)
+#define IFsrmFileConditionProperty_put_PropertyId(This,newVal) (This)->lpVtbl->put_PropertyId(This,newVal)
+#define IFsrmFileConditionProperty_get_Operator(This,pVal) (This)->lpVtbl->get_Operator(This,pVal)
+#define IFsrmFileConditionProperty_put_Operator(This,newVal) (This)->lpVtbl->put_Operator(This,newVal)
+#define IFsrmFileConditionProperty_get_ValueType(This,pVal) (This)->lpVtbl->get_ValueType(This,pVal)
+#define IFsrmFileConditionProperty_put_ValueType(This,newVal) (This)->lpVtbl->put_ValueType(This,newVal)
+#define IFsrmFileConditionProperty_get_Value(This,pVal) (This)->lpVtbl->get_Value(This,pVal)
+#define IFsrmFileConditionProperty_put_Value(This,newVal) (This)->lpVtbl->put_Value(This,newVal)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_QueryInterface(IFsrmFileConditionProperty* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmFileConditionProperty_AddRef(IFsrmFileConditionProperty* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmFileConditionProperty_Release(IFsrmFileConditionProperty* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_GetTypeInfoCount(IFsrmFileConditionProperty* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_GetTypeInfo(IFsrmFileConditionProperty* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_GetIDsOfNames(IFsrmFileConditionProperty* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_Invoke(IFsrmFileConditionProperty* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmFileCondition methods ***/
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_get_Type(IFsrmFileConditionProperty* This,FsrmFileConditionType *pVal) {
+    return This->lpVtbl->get_Type(This,pVal);
+}
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_Delete(IFsrmFileConditionProperty* This) {
+    return This->lpVtbl->Delete(This);
+}
+/*** IFsrmFileConditionProperty methods ***/
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_get_PropertyName(IFsrmFileConditionProperty* This,BSTR *pVal) {
+    return This->lpVtbl->get_PropertyName(This,pVal);
+}
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_put_PropertyName(IFsrmFileConditionProperty* This,BSTR newVal) {
+    return This->lpVtbl->put_PropertyName(This,newVal);
+}
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_get_PropertyId(IFsrmFileConditionProperty* This,FsrmFileSystemPropertyId *pVal) {
+    return This->lpVtbl->get_PropertyId(This,pVal);
+}
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_put_PropertyId(IFsrmFileConditionProperty* This,FsrmFileSystemPropertyId newVal) {
+    return This->lpVtbl->put_PropertyId(This,newVal);
+}
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_get_Operator(IFsrmFileConditionProperty* This,FsrmPropertyConditionType *pVal) {
+    return This->lpVtbl->get_Operator(This,pVal);
+}
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_put_Operator(IFsrmFileConditionProperty* This,FsrmPropertyConditionType newVal) {
+    return This->lpVtbl->put_Operator(This,newVal);
+}
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_get_ValueType(IFsrmFileConditionProperty* This,FsrmPropertyValueType *pVal) {
+    return This->lpVtbl->get_ValueType(This,pVal);
+}
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_put_ValueType(IFsrmFileConditionProperty* This,FsrmPropertyValueType newVal) {
+    return This->lpVtbl->put_ValueType(This,newVal);
+}
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_get_Value(IFsrmFileConditionProperty* This,VARIANT *pVal) {
+    return This->lpVtbl->get_Value(This,pVal);
+}
+static FORCEINLINE HRESULT IFsrmFileConditionProperty_put_Value(IFsrmFileConditionProperty* This,VARIANT newVal) {
+    return This->lpVtbl->put_Value(This,newVal);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmFileConditionProperty_get_PropertyName_Proxy(
+    IFsrmFileConditionProperty* This,
+    BSTR *pVal);
+void __RPC_STUB IFsrmFileConditionProperty_get_PropertyName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileConditionProperty_put_PropertyName_Proxy(
+    IFsrmFileConditionProperty* This,
+    BSTR newVal);
+void __RPC_STUB IFsrmFileConditionProperty_put_PropertyName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileConditionProperty_get_PropertyId_Proxy(
+    IFsrmFileConditionProperty* This,
+    FsrmFileSystemPropertyId *pVal);
+void __RPC_STUB IFsrmFileConditionProperty_get_PropertyId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileConditionProperty_put_PropertyId_Proxy(
+    IFsrmFileConditionProperty* This,
+    FsrmFileSystemPropertyId newVal);
+void __RPC_STUB IFsrmFileConditionProperty_put_PropertyId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileConditionProperty_get_Operator_Proxy(
+    IFsrmFileConditionProperty* This,
+    FsrmPropertyConditionType *pVal);
+void __RPC_STUB IFsrmFileConditionProperty_get_Operator_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileConditionProperty_put_Operator_Proxy(
+    IFsrmFileConditionProperty* This,
+    FsrmPropertyConditionType newVal);
+void __RPC_STUB IFsrmFileConditionProperty_put_Operator_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileConditionProperty_get_ValueType_Proxy(
+    IFsrmFileConditionProperty* This,
+    FsrmPropertyValueType *pVal);
+void __RPC_STUB IFsrmFileConditionProperty_get_ValueType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileConditionProperty_put_ValueType_Proxy(
+    IFsrmFileConditionProperty* This,
+    FsrmPropertyValueType newVal);
+void __RPC_STUB IFsrmFileConditionProperty_put_ValueType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileConditionProperty_get_Value_Proxy(
+    IFsrmFileConditionProperty* This,
+    VARIANT *pVal);
+void __RPC_STUB IFsrmFileConditionProperty_get_Value_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileConditionProperty_put_Value_Proxy(
+    IFsrmFileConditionProperty* This,
+    VARIANT newVal);
+void __RPC_STUB IFsrmFileConditionProperty_put_Value_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmFileConditionProperty_INTERFACE_DEFINED__ */
+
+#endif
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
+ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
+void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __fsrmreports_h__ */
diff --git a/mingw-w64-headers/include/fsrmreports.idl b/mingw-w64-headers/include/fsrmreports.idl
new file mode 100644
index 0000000..fae8faa
--- /dev/null
+++ b/mingw-w64-headers/include/fsrmreports.idl
@@ -0,0 +1,184 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+
+import "oaidl.idl";
+import "fsrmenums.idl";
+import "fsrm.idl";
+
+cpp_quote("#include <winapifamily.h>")
+cpp_quote("")
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
+
+interface IFsrmFileManagementJob;
+interface IFsrmFileManagementJobManager;
+interface IFsrmPropertyCondition;
+interface IFsrmReport;
+interface IFsrmReportJob;
+interface IFsrmReportManager;
+
+const DISPID FSRM_DISPID_REPORT_MANAGER = FSRM_DISPID_FEATURE_REPORTS | 0x100000;
+const DISPID FSRM_DISPID_REPORT_JOB = FSRM_DISPID_FEATURE_REPORTS | 0x200000;
+const DISPID FSRM_DISPID_REPORT = FSRM_DISPID_FEATURE_REPORTS | 0x300000;
+const DISPID FSRM_DISPID_REPORT_SCHEDULER = FSRM_DISPID_FEATURE_REPORTS | 0x400000;
+const DISPID FSRM_DISPID_FILE_MANAGEMENT_JOB_MANAGER = FSRM_DISPID_FEATURE_REPORTS | 0x500000;
+const DISPID FSRM_DISPID_FILE_MANAGEMENT_JOB = FSRM_DISPID_FEATURE_REPORTS | 0x600000;
+const DISPID FSRM_DISPID_FILE_MANAGEMENT_NOTIFICATION = FSRM_DISPID_FEATURE_REPORTS | 0x700000;
+const DISPID FSRM_DISPID_PROPERTY_CONDITION = FSRM_DISPID_FEATURE_REPORTS | 0x800000;
+const DISPID FSRM_DISPID_FILE_CONDITION = FSRM_DISPID_FEATURE_REPORTS | 0x900000;
+const DISPID FSRM_DISPID_FILE_CONDITION_PROPERTY = FSRM_DISPID_FEATURE_REPORTS | 0xa00000;
+const DISPID FSRM_DISPID_FILE_MANAGEMENT_JOB_2 = FSRM_DISPID_FEATURE_REPORTS | 0xb00000;
+
+[odl, uuid (d8cc81d9-46b8-4fa4-bfa5-4aa9dec9b638), version (1.0), dual, oleautomation]
+interface IFsrmReport : IDispatch {
+  [propget, id (FSRM_DISPID_REPORT | 0x81)] HRESULT Type ([out, retval] FsrmReportType *reportType);
+  [propget, id (FSRM_DISPID_REPORT | 0x82)] HRESULT Name ([out, retval] BSTR *name);
+  [propput, id (FSRM_DISPID_REPORT | 0x82)] HRESULT Name ([in] BSTR name);
+  [propget, id (FSRM_DISPID_REPORT | 0x83)] HRESULT Description ([out, retval] BSTR *description);
+  [propput, id (FSRM_DISPID_REPORT | 0x83)] HRESULT Description ([in] BSTR description);
+  [propget, id (FSRM_DISPID_REPORT | 0x84)] HRESULT LastGeneratedFileNamePrefix ([out, retval] BSTR *prefix);
+  [id (FSRM_DISPID_REPORT | 0x1)] HRESULT GetFilter ([in] FsrmReportFilter filter,[out, retval] VARIANT *filterValue);
+  [id (FSRM_DISPID_REPORT | 0x2)] HRESULT SetFilter ([in] FsrmReportFilter filter,[in] VARIANT filterValue);
+  [id (FSRM_DISPID_REPORT | 0x3)] HRESULT Delete ();
+};
+
+[odl, uuid (6879caf9-6617-4484-8719-71c3d8645f94), version (1.0), dual, oleautomation]
+interface IFsrmReportScheduler : IDispatch {
+  [id (FSRM_DISPID_REPORT_SCHEDULER | 0x1)] HRESULT VerifyNamespaces ([in] VARIANT *namespacesSafeArray);
+  [id (FSRM_DISPID_REPORT_SCHEDULER | 0x2)] HRESULT CreateScheduleTask ([in] BSTR taskName,[in] VARIANT *namespacesSafeArray,[in] BSTR serializedTask);
+  [id (FSRM_DISPID_REPORT_SCHEDULER | 0x3)] HRESULT ModifyScheduleTask ([in] BSTR taskName,[in] VARIANT *namespacesSafeArray,[in] BSTR serializedTask);
+  [id (FSRM_DISPID_REPORT_SCHEDULER | 0x4)] HRESULT DeleteScheduleTask ([in] BSTR taskName);
+};
+
+[odl, uuid (ee321ecb-d95e-48e9-907c-c7685a013235), version (1.0), dual, oleautomation]
+interface IFsrmFileManagementJobManager : IDispatch {
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB_MANAGER | 0x81)] HRESULT ActionVariables ([out, retval] SAFEARRAY (VARIANT) *variables);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB_MANAGER | 0x82)] HRESULT ActionVariableDescriptions ([out, retval] SAFEARRAY (VARIANT) *descriptions);
+  [id (FSRM_DISPID_FILE_MANAGEMENT_JOB_MANAGER | 0x1)] HRESULT EnumFileManagementJobs ([in, defaultvalue (FsrmEnumOptions_None)] FsrmEnumOptions options,[out, retval] IFsrmCollection **fileManagementJobs);
+  [id (FSRM_DISPID_FILE_MANAGEMENT_JOB_MANAGER | 0x2)] HRESULT CreateFileManagementJob ([out, retval] IFsrmFileManagementJob **fileManagementJob);
+  [id (FSRM_DISPID_FILE_MANAGEMENT_JOB_MANAGER | 0x3)] HRESULT GetFileManagementJob ([in] BSTR name,[out, retval] IFsrmFileManagementJob **fileManagementJob);
+};
+
+[odl, uuid (326af66f-2ac0-4f68-bf8c-4759f054fa29), version (1.0), dual, oleautomation]
+interface IFsrmPropertyCondition : IDispatch {
+  [propget, id (FSRM_DISPID_PROPERTY_CONDITION | 0x81)] HRESULT Name ([out, retval] BSTR *name);
+  [propput, id (FSRM_DISPID_PROPERTY_CONDITION | 0x81)] HRESULT Name ([in] BSTR name);
+  [propget, id (FSRM_DISPID_PROPERTY_CONDITION | 0x82)] HRESULT Type ([out, retval] FsrmPropertyConditionType *type);
+  [propput, id (FSRM_DISPID_PROPERTY_CONDITION | 0x82)] HRESULT Type ([in] FsrmPropertyConditionType type);
+  [propget, id (FSRM_DISPID_PROPERTY_CONDITION | 0x83)] HRESULT Value ([out, retval] BSTR *value);
+  [propput, id (FSRM_DISPID_PROPERTY_CONDITION | 0x83)] HRESULT Value ([in] BSTR value);
+  [id (FSRM_DISPID_PROPERTY_CONDITION | 0x1)] HRESULT Delete ();
+};
+
+[odl, uuid (27b899fe-6ffa-4481-a184-d3daade8a02b), version (1.0), dual, oleautomation]
+interface IFsrmReportManager : IDispatch {
+  [id (FSRM_DISPID_REPORT_MANAGER | 0x1)] HRESULT EnumReportJobs ([in, defaultvalue (FsrmEnumOptions_None)] FsrmEnumOptions options,[out, retval] IFsrmCollection **reportJobs);
+  [id (FSRM_DISPID_REPORT_MANAGER | 0x2)] HRESULT CreateReportJob ([out, retval] IFsrmReportJob **reportJob);
+  [id (FSRM_DISPID_REPORT_MANAGER | 0x3)] HRESULT GetReportJob ([in] BSTR taskName,[out, retval] IFsrmReportJob **reportJob);
+  [id (FSRM_DISPID_REPORT_MANAGER | 0x4)] HRESULT GetOutputDirectory ([in] FsrmReportGenerationContext context,[out, retval] BSTR *path);
+  [id (FSRM_DISPID_REPORT_MANAGER | 0x5)] HRESULT SetOutputDirectory ([in] FsrmReportGenerationContext context,[in] BSTR path);
+  [id (FSRM_DISPID_REPORT_MANAGER | 0x6)] HRESULT IsFilterValidForReportType ([in] FsrmReportType reportType,[in] FsrmReportFilter filter,[out, retval] VARIANT_BOOL *valid);
+  [id (FSRM_DISPID_REPORT_MANAGER | 0x7)] HRESULT GetDefaultFilter ([in] FsrmReportType reportType,[in] FsrmReportFilter filter,[out, retval] VARIANT *filterValue);
+  [id (FSRM_DISPID_REPORT_MANAGER | 0x8)] HRESULT SetDefaultFilter ([in] FsrmReportType reportType,[in] FsrmReportFilter filter,[in] VARIANT filterValue);
+  [id (FSRM_DISPID_REPORT_MANAGER | 0x9)] HRESULT GetReportSizeLimit ([in] FsrmReportLimit limit,[out, retval] VARIANT *limitValue);
+  [id (FSRM_DISPID_REPORT_MANAGER | 0xa)] HRESULT SetReportSizeLimit ([in] FsrmReportLimit limit,[in] VARIANT limitValue);
+};
+
+[odl, uuid (38e87280-715c-4c7d-a280-ea1651a19fef), version (1.0), dual, oleautomation]
+interface IFsrmReportJob : IFsrmObject {
+  [propget, id (FSRM_DISPID_REPORT_JOB | 0x81)] HRESULT Task ([out, retval] BSTR *taskName);
+  [propput, id (FSRM_DISPID_REPORT_JOB | 0x81)] HRESULT Task ([in] BSTR taskName);
+  [propget, id (FSRM_DISPID_REPORT_JOB | 0x82)] HRESULT NamespaceRoots ([out, retval] SAFEARRAY (VARIANT) *namespaceRoots);
+  [propput, id (FSRM_DISPID_REPORT_JOB | 0x82)] HRESULT NamespaceRoots ([in] SAFEARRAY (VARIANT) namespaceRoots);
+  [propget, id (FSRM_DISPID_REPORT_JOB | 0x83)] HRESULT Formats ([out, retval] SAFEARRAY (VARIANT) *formats);
+  [propput, id (FSRM_DISPID_REPORT_JOB | 0x83)] HRESULT Formats ([in] SAFEARRAY (VARIANT) formats);
+  [propget, id (FSRM_DISPID_REPORT_JOB | 0x84)] HRESULT MailTo ([out, retval] BSTR *mailTo);
+  [propput, id (FSRM_DISPID_REPORT_JOB | 0x84)] HRESULT MailTo ([in] BSTR mailTo);
+  [propget, id (FSRM_DISPID_REPORT_JOB | 0x85)] HRESULT RunningStatus ([out, retval] FsrmReportRunningStatus *runningStatus);
+  [propget, id (FSRM_DISPID_REPORT_JOB | 0x86)] HRESULT LastRun ([out, retval] DATE *lastRun);
+  [propget, id (FSRM_DISPID_REPORT_JOB | 0x87)] HRESULT LastError ([out, retval] BSTR *lastError);
+  [propget, id (FSRM_DISPID_REPORT_JOB | 0x88)] HRESULT LastGeneratedInDirectory ([out, retval] BSTR *path);
+  [id (FSRM_DISPID_REPORT_JOB | 0x01)] HRESULT EnumReports ([out, retval] IFsrmCollection **reports);
+  [id (FSRM_DISPID_REPORT_JOB | 0x02)] HRESULT CreateReport ([in] FsrmReportType reportType,[out, retval] IFsrmReport **report);
+  [id (FSRM_DISPID_REPORT_JOB | 0x03)] HRESULT Run ([in] FsrmReportGenerationContext context);
+  [id (FSRM_DISPID_REPORT_JOB | 0x04)] HRESULT WaitForCompletion ([in] long waitSeconds,[out, retval] VARIANT_BOOL *completed);
+  [id (FSRM_DISPID_REPORT_JOB | 0x05)] HRESULT Cancel ();
+};
+
+[odl, uuid (0770687e-9f36-4d6f-8778-599d188461c9), version (1.0), dual, oleautomation]
+interface IFsrmFileManagementJob : IFsrmObject {
+  const LONG FsrmDaysNotSpecified = -1;
+  const DATE FsrmDateNotSpecified = ((DATE) -1);
+
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x81)] HRESULT Name ([out, retval] BSTR *name);
+  [propput, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x81)] HRESULT Name ([in] BSTR name);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x82)] HRESULT NamespaceRoots ([out, retval] SAFEARRAY (VARIANT) *namespaceRoots);
+  [propput, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x82)] HRESULT NamespaceRoots ([in] SAFEARRAY (VARIANT) namespaceRoots);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x83)] HRESULT Enabled ([out, retval] VARIANT_BOOL *enabled);
+  [propput, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x83)] HRESULT Enabled ([in] VARIANT_BOOL enabled);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x84)] HRESULT OperationType ([out, retval] FsrmFileManagementType *operationType);
+  [propput, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x84)] HRESULT OperationType ([in] FsrmFileManagementType operationType);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x85)] HRESULT ExpirationDirectory ([out, retval] BSTR *expirationDirectory);
+  [propput, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x85)] HRESULT ExpirationDirectory ([in] BSTR expirationDirectory);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x86)] HRESULT CustomAction ([out, retval] IFsrmActionCommand **action);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x87)] HRESULT Notifications ([out, retval] SAFEARRAY (VARIANT) *notifications);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x88)] HRESULT Logging ([out, retval] long *loggingFlags);
+  [propput, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x88)] HRESULT Logging ([in] long loggingFlags);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x89)] HRESULT ReportEnabled ([out, retval] VARIANT_BOOL *reportEnabled);
+  [propput, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x89)] HRESULT ReportEnabled ([in] VARIANT_BOOL reportEnabled);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x8a)] HRESULT Formats ([out, retval] SAFEARRAY (VARIANT) *formats);
+  [propput, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x8a)] HRESULT Formats ([in] SAFEARRAY (VARIANT) formats);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x8b)] HRESULT MailTo ([out, retval] BSTR *mailTo);
+  [propput, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x8b)] HRESULT MailTo ([in] BSTR mailTo);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x8c)] HRESULT DaysSinceFileCreated ([out, retval] long *daysSinceCreation);
+  [propput, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x8c)] HRESULT DaysSinceFileCreated ([in] long daysSinceCreation);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x8d)] HRESULT DaysSinceFileLastAccessed ([out, retval] long *daysSinceAccess);
+  [propput, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x8d)] HRESULT DaysSinceFileLastAccessed ([in] long daysSinceAccess);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x8e)] HRESULT DaysSinceFileLastModified ([out, retval] long *daysSinceModify);
+  [propput, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x8e)] HRESULT DaysSinceFileLastModified ([in] long daysSinceModify);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x8f)] HRESULT PropertyConditions ([out, retval] IFsrmCollection **propertyConditions);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x90)] HRESULT FromDate ([out, retval] DATE *fromDate);
+  [propput, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x90)] HRESULT FromDate ([in] DATE fromDate);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x91)] HRESULT Task ([out, retval] BSTR *taskName);
+  [propput, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x91)] HRESULT Task ([in] BSTR taskName);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x92)] HRESULT Parameters ([out, retval] SAFEARRAY (VARIANT) *parameters);
+  [propput, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x92)] HRESULT Parameters ([in] SAFEARRAY (VARIANT) parameters);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x93)] HRESULT RunningStatus ([out, retval] FsrmReportRunningStatus *runningStatus);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x94)] HRESULT LastError ([out, retval] BSTR *lastError);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x95)] HRESULT LastReportPathWithoutExtension ([out, retval] BSTR *path);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x96)] HRESULT LastRun ([out, retval] DATE *lastRun);
+  [propget, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x97)] HRESULT FileNamePattern ([out, retval] BSTR *fileNamePattern);
+  [propput, id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x97)] HRESULT FileNamePattern ([in] BSTR fileNamePattern);
+  [id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x1)] HRESULT Run ([in] FsrmReportGenerationContext context);
+  [id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x2)] HRESULT WaitForCompletion ([in] long waitSeconds,[out, retval] VARIANT_BOOL *completed);
+  [id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x3)] HRESULT Cancel ();
+  [id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x4)] HRESULT AddNotification ([in] long days);
+  [id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x5)] HRESULT DeleteNotification ([in] long days);
+  [id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x6)] HRESULT ModifyNotification ([in] long days,[in] long newDays);
+  [id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x7)] HRESULT CreateNotificationAction ([in] long days,[in] FsrmActionType actionType,[out, retval] IFsrmAction **action);
+  [id (FSRM_DISPID_FILE_MANAGEMENT_JOB | 0x8)] HRESULT EnumNotificationActions ([in] long days,[out, retval] IFsrmCollection **actions);
+  [id (FSRM_DISPID_FILE_MANAGEMENT_JOB_MANAGER | 0x9)] HRESULT CreatePropertyCondition ([in] BSTR name,[out, retval] IFsrmPropertyCondition **propertyCondition);
+  [id (FSRM_DISPID_FILE_MANAGEMENT_JOB_MANAGER | 0xa)] HRESULT CreateCustomAction ([out, retval] IFsrmActionCommand **customAction);
+};
+
+[odl, uuid (70684ffc-691a-4a1a-B922-97752e138cc1), version (1.0), dual, oleautomation]
+interface IFsrmFileCondition : IDispatch {
+  [propget, id (FSRM_DISPID_FILE_CONDITION | 0x81)] HRESULT Type ([out, retval] FsrmFileConditionType *pVal);
+  [id (FSRM_DISPID_FILE_CONDITION | 0x1)] HRESULT Delete ();
+};
+
+[odl, uuid (81926775-B981-4479-988f-da171d627360), version (1.0), dual, oleautomation]
+interface IFsrmFileConditionProperty : IFsrmFileCondition {
+  [propget, id (FSRM_DISPID_FILE_CONDITION_PROPERTY | 0x81)] HRESULT PropertyName ([out, retval] BSTR *pVal);
+  [propput, id (FSRM_DISPID_FILE_CONDITION_PROPERTY | 0x81)] HRESULT PropertyName ([in] BSTR newVal);
+  [propget, id (FSRM_DISPID_FILE_CONDITION_PROPERTY | 0x82)] HRESULT PropertyId ([out, retval] FsrmFileSystemPropertyId *pVal);
+  [propput, id (FSRM_DISPID_FILE_CONDITION_PROPERTY | 0x82)] HRESULT PropertyId ([in] FsrmFileSystemPropertyId newVal);
+  [propget, id (FSRM_DISPID_FILE_CONDITION_PROPERTY | 0x83)] HRESULT Operator ([out, retval] FsrmPropertyConditionType *pVal);
+  [propput, id (FSRM_DISPID_FILE_CONDITION_PROPERTY | 0x83)] HRESULT Operator ([in] FsrmPropertyConditionType newVal);
+  [propget, id (FSRM_DISPID_FILE_CONDITION_PROPERTY | 0x84)] HRESULT ValueType ([out, retval] FsrmPropertyValueType *pVal);
+  [propput, id (FSRM_DISPID_FILE_CONDITION_PROPERTY | 0x84)] HRESULT ValueType ([in] FsrmPropertyValueType newVal);
+  [propget, id (FSRM_DISPID_FILE_CONDITION_PROPERTY | 0x85)] HRESULT Value ([out, retval] VARIANT *pVal);
+  [propput, id (FSRM_DISPID_FILE_CONDITION_PROPERTY | 0x85)] HRESULT Value ([in] VARIANT newVal);
+};
+cpp_quote("#endif")
diff --git a/mingw-w64-headers/include/fsrmscreen.h b/mingw-w64-headers/include/fsrmscreen.h
index 0977899..e5b3d98 100644
--- a/mingw-w64-headers/include/fsrmscreen.h
+++ b/mingw-w64-headers/include/fsrmscreen.h
@@ -1,615 +1,537 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#include <fsrmenums.h>
-#include <fsrm.h>
-#include <fsrmquota.h>
+/*** Autogenerated by WIDL 1.6 from fsrmscreen.idl - Do not edit ***/
 
-#ifndef _INC_FSRMSCREEN
-#define _INC_FSRMSCREEN
-#if (_WIN32_WINNT >= 0x0600)
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
 
-#ifndef __IFsrmAction_FWD_DEFINED__
-#define __IFsrmAction_FWD_DEFINED__
-typedef struct IFsrmAction IFsrmAction;
-#endif /* __IFsrmAction_FWD_DEFINED__ */
+#include <rpc.h>
+#include <rpcndr.h>
 
-#ifndef __IFsrmActionCommand_FWD_DEFINED__
-#define __IFsrmActionCommand_FWD_DEFINED__
-typedef struct IFsrmActionCommand IFsrmActionCommand;
-#endif /* __IFsrmActionCommand_FWD_DEFINED__ */
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
 
-#ifndef __IFsrmActionEmail_FWD_DEFINED__
-#define __IFsrmActionEmail_FWD_DEFINED__
-typedef struct IFsrmActionEmail IFsrmActionEmail;
-#endif /* __IFsrmActionEmail_FWD_DEFINED__ */
+#ifndef __fsrmscreen_h__
+#define __fsrmscreen_h__
 
-#ifndef __IFsrmActionEmail2_FWD_DEFINED__
-#define __IFsrmActionEmail2_FWD_DEFINED__
-typedef struct IFsrmActionEmail2 IFsrmActionEmail2;
-#endif /* __IFsrmActionEmail2_FWD_DEFINED__ */
-
-#ifndef __IFsrmActionEventLog_FWD_DEFINED__
-#define __IFsrmActionEventLog_FWD_DEFINED__
-typedef struct IFsrmActionEventLog IFsrmActionEventLog;
-#endif /* __IFsrmActionEventLog_FWD_DEFINED__ */
-
-#ifndef __IFsrmActionReport_FWD_DEFINED__
-#define __IFsrmActionReport_FWD_DEFINED__
-typedef struct IFsrmActionReport IFsrmActionReport;
-#endif /* __IFsrmActionReport_FWD_DEFINED__ */
-
-#ifndef __IFsrmAutoApplyQuota_FWD_DEFINED__
-#define __IFsrmAutoApplyQuota_FWD_DEFINED__
-typedef struct IFsrmAutoApplyQuota IFsrmAutoApplyQuota;
-#endif /* __IFsrmAutoApplyQuota_FWD_DEFINED__ */
-
-#ifndef __IFsrmClassificationManager_FWD_DEFINED__
-#define __IFsrmClassificationManager_FWD_DEFINED__
-typedef struct IFsrmClassificationManager IFsrmClassificationManager;
-#endif /* __IFsrmClassificationManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmClassificationRule_FWD_DEFINED__
-#define __IFsrmClassificationRule_FWD_DEFINED__
-typedef struct IFsrmClassificationRule IFsrmClassificationRule;
-#endif /* __IFsrmClassificationRule_FWD_DEFINED__ */
-
-#ifndef __IFsrmClassifierModuleDefinition_FWD_DEFINED__
-#define __IFsrmClassifierModuleDefinition_FWD_DEFINED__
-typedef struct IFsrmClassifierModuleDefinition IFsrmClassifierModuleDefinition;
-#endif /* __IFsrmClassifierModuleDefinition_FWD_DEFINED__ */
-
-#ifndef __IFsrmClassifierModuleImplementation_FWD_DEFINED__
-#define __IFsrmClassifierModuleImplementation_FWD_DEFINED__
-typedef struct IFsrmClassifierModuleImplementation IFsrmClassifierModuleImplementation;
-#endif /* __IFsrmClassifierModuleImplementation_FWD_DEFINED__ */
-
-#ifndef __IFsrmCollection_FWD_DEFINED__
-#define __IFsrmCollection_FWD_DEFINED__
-typedef struct IFsrmCollection IFsrmCollection;
-#endif /* __IFsrmCollection_FWD_DEFINED__ */
-
-#ifndef __IFsrmCommittableCollection_FWD_DEFINED__
-#define __IFsrmCommittableCollection_FWD_DEFINED__
-typedef struct IFsrmCommittableCollection IFsrmCommittableCollection;
-#endif /* __IFsrmCommittableCollection_FWD_DEFINED__ */
-
-#ifndef __IFsrmDerivedObjectsResult_FWD_DEFINED__
-#define __IFsrmDerivedObjectsResult_FWD_DEFINED__
-typedef struct IFsrmDerivedObjectsResult IFsrmDerivedObjectsResult;
-#endif /* __IFsrmDerivedObjectsResult_FWD_DEFINED__ */
-
-#ifndef __IFsrmExportImport_FWD_DEFINED__
-#define __IFsrmExportImport_FWD_DEFINED__
-typedef struct IFsrmExportImport IFsrmExportImport;
-#endif /* __IFsrmExportImport_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileGroup_FWD_DEFINED__
-#define __IFsrmFileGroup_FWD_DEFINED__
-typedef struct IFsrmFileGroup IFsrmFileGroup;
-#endif /* __IFsrmFileGroup_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileGroupImported_FWD_DEFINED__
-#define __IFsrmFileGroupImported_FWD_DEFINED__
-typedef struct IFsrmFileGroupImported IFsrmFileGroupImported;
-#endif /* __IFsrmFileGroupImported_FWD_DEFINED__ */
+/* Forward declarations */
 
 #ifndef __IFsrmFileGroupManager_FWD_DEFINED__
 #define __IFsrmFileGroupManager_FWD_DEFINED__
-typedef struct IFsrmFileGroupManager IFsrmFileGroupManager;
-#endif /* __IFsrmFileGroupManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileManagementJob_FWD_DEFINED__
-#define __IFsrmFileManagementJob_FWD_DEFINED__
-typedef struct IFsrmFileManagementJob IFsrmFileManagementJob;
-#endif /* __IFsrmFileManagementJob_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileManagementJobManager_FWD_DEFINED__
-#define __IFsrmFileManagementJobManager_FWD_DEFINED__
-typedef struct IFsrmFileManagementJobManager IFsrmFileManagementJobManager;
-#endif /* __IFsrmFileManagementJobManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreen_FWD_DEFINED__
-#define __IFsrmFileScreen_FWD_DEFINED__
-typedef struct IFsrmFileScreen IFsrmFileScreen;
-#endif /* __IFsrmFileScreen_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreenBase_FWD_DEFINED__
-#define __IFsrmFileScreenBase_FWD_DEFINED__
-typedef struct IFsrmFileScreenBase IFsrmFileScreenBase;
-#endif /* __IFsrmFileScreenBase_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreenException_FWD_DEFINED__
-#define __IFsrmFileScreenException_FWD_DEFINED__
-typedef struct IFsrmFileScreenException IFsrmFileScreenException;
-#endif /* __IFsrmFileScreenException_FWD_DEFINED__ */
+typedef interface IFsrmFileGroupManager IFsrmFileGroupManager;
+#endif
 
 #ifndef __IFsrmFileScreenManager_FWD_DEFINED__
 #define __IFsrmFileScreenManager_FWD_DEFINED__
-typedef struct IFsrmFileScreenManager IFsrmFileScreenManager;
-#endif /* __IFsrmFileScreenManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreenTemplate_FWD_DEFINED__
-#define __IFsrmFileScreenTemplate_FWD_DEFINED__
-typedef struct IFsrmFileScreenTemplate IFsrmFileScreenTemplate;
-#endif /* __IFsrmFileScreenTemplate_FWD_DEFINED__ */
-
-#ifndef __IFsrmFileScreenTemplateImported_FWD_DEFINED__
-#define __IFsrmFileScreenTemplateImported_FWD_DEFINED__
-typedef struct IFsrmFileScreenTemplateImported IFsrmFileScreenTemplateImported;
-#endif /* __IFsrmFileScreenTemplateImported_FWD_DEFINED__ */
+typedef interface IFsrmFileScreenManager IFsrmFileScreenManager;
+#endif
 
 #ifndef __IFsrmFileScreenTemplateManager_FWD_DEFINED__
 #define __IFsrmFileScreenTemplateManager_FWD_DEFINED__
-typedef struct IFsrmFileScreenTemplateManager IFsrmFileScreenTemplateManager;
-#endif /* __IFsrmFileScreenTemplateManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmMutableCollection_FWD_DEFINED__
-#define __IFsrmMutableCollection_FWD_DEFINED__
-typedef struct IFsrmMutableCollection IFsrmMutableCollection;
-#endif /* __IFsrmMutableCollection_FWD_DEFINED__ */
-
-#ifndef __IFsrmObject_FWD_DEFINED__
-#define __IFsrmObject_FWD_DEFINED__
-typedef struct IFsrmObject IFsrmObject;
-#endif /* __IFsrmObject_FWD_DEFINED__ */
-
-#ifndef __IFsrmPathMapper_FWD_DEFINED__
-#define __IFsrmPathMapper_FWD_DEFINED__
-typedef struct IFsrmPathMapper IFsrmPathMapper;
-#endif /* __IFsrmPathMapper_FWD_DEFINED__ */
-
-#ifndef __IFsrmPipelineModuleConnector_FWD_DEFINED__
-#define __IFsrmPipelineModuleConnector_FWD_DEFINED__
-typedef struct IFsrmPipelineModuleConnector IFsrmPipelineModuleConnector;
-#endif /* __IFsrmPipelineModuleConnector_FWD_DEFINED__ */
-
-#ifndef __IFsrmPipelineModuleDefinition_FWD_DEFINED__
-#define __IFsrmPipelineModuleDefinition_FWD_DEFINED__
-typedef struct IFsrmPipelineModuleDefinition IFsrmPipelineModuleDefinition;
-#endif /* __IFsrmPipelineModuleDefinition_FWD_DEFINED__ */
-
-#ifndef __IFsrmPipelineModuleImplementation_FWD_DEFINED__
-#define __IFsrmPipelineModuleImplementation_FWD_DEFINED__
-typedef struct IFsrmPipelineModuleImplementation IFsrmPipelineModuleImplementation;
-#endif /* __IFsrmPipelineModuleImplementation_FWD_DEFINED__ */
-
-#ifndef __IFsrmProperty_FWD_DEFINED__
-#define __IFsrmProperty_FWD_DEFINED__
-typedef struct IFsrmProperty IFsrmProperty;
-#endif /* __IFsrmProperty_FWD_DEFINED__ */
-
-#ifndef __IFsrmPropertyBag_FWD_DEFINED__
-#define __IFsrmPropertyBag_FWD_DEFINED__
-typedef struct IFsrmPropertyBag IFsrmPropertyBag;
-#endif /* __IFsrmPropertyBag_FWD_DEFINED__ */
-
-#ifndef __IFsrmPropertyCondition_FWD_DEFINED__
-#define __IFsrmPropertyCondition_FWD_DEFINED__
-typedef struct IFsrmPropertyCondition IFsrmPropertyCondition;
-#endif /* __IFsrmPropertyCondition_FWD_DEFINED__ */
-
-#ifndef __IFsrmPropertyDefinition_FWD_DEFINED__
-#define __IFsrmPropertyDefinition_FWD_DEFINED__
-typedef struct IFsrmPropertyDefinition IFsrmPropertyDefinition;
-#endif /* __IFsrmPropertyDefinition_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuota_FWD_DEFINED__
-#define __IFsrmQuota_FWD_DEFINED__
-typedef struct IFsrmQuota IFsrmQuota;
-#endif /* __IFsrmQuota_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaBase_FWD_DEFINED__
-#define __IFsrmQuotaBase_FWD_DEFINED__
-typedef struct IFsrmQuotaBase IFsrmQuotaBase;
-#endif /* __IFsrmQuotaBase_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaManager_FWD_DEFINED__
-#define __IFsrmQuotaManager_FWD_DEFINED__
-typedef struct IFsrmQuotaManager IFsrmQuotaManager;
-#endif /* __IFsrmQuotaManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaManagerEx_FWD_DEFINED__
-#define __IFsrmQuotaManagerEx_FWD_DEFINED__
-typedef struct IFsrmQuotaManagerEx IFsrmQuotaManagerEx;
-#endif /* __IFsrmQuotaManagerEx_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaObject_FWD_DEFINED__
-#define __IFsrmQuotaObject_FWD_DEFINED__
-typedef struct IFsrmQuotaObject IFsrmQuotaObject;
-#endif /* __IFsrmQuotaObject_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaTemplate_FWD_DEFINED__
-#define __IFsrmQuotaTemplate_FWD_DEFINED__
-typedef struct IFsrmQuotaTemplate IFsrmQuotaTemplate;
-#endif /* __IFsrmQuotaTemplate_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaTemplateImported_FWD_DEFINED__
-#define __IFsrmQuotaTemplateImported_FWD_DEFINED__
-typedef struct IFsrmQuotaTemplateImported IFsrmQuotaTemplateImported;
-#endif /* __IFsrmQuotaTemplateImported_FWD_DEFINED__ */
-
-#ifndef __IFsrmQuotaTemplateManager_FWD_DEFINED__
-#define __IFsrmQuotaTemplateManager_FWD_DEFINED__
-typedef struct IFsrmQuotaTemplateManager IFsrmQuotaTemplateManager;
-#endif /* __IFsrmQuotaTemplateManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmReport_FWD_DEFINED__
-#define __IFsrmReport_FWD_DEFINED__
-typedef struct IFsrmReport IFsrmReport;
-#endif /* __IFsrmReport_FWD_DEFINED__ */
-
-#ifndef __IFsrmReportJob_FWD_DEFINED__
-#define __IFsrmReportJob_FWD_DEFINED__
-typedef struct IFsrmReportJob IFsrmReportJob;
-#endif /* __IFsrmReportJob_FWD_DEFINED__ */
-
-#ifndef __IFsrmReportManager_FWD_DEFINED__
-#define __IFsrmReportManager_FWD_DEFINED__
-typedef struct IFsrmReportManager IFsrmReportManager;
-#endif /* __IFsrmReportManager_FWD_DEFINED__ */
-
-#ifndef __IFsrmReportScheduler_FWD_DEFINED__
-#define __IFsrmReportScheduler_FWD_DEFINED__
-typedef struct IFsrmReportScheduler IFsrmReportScheduler;
-#endif /* __IFsrmReportScheduler_FWD_DEFINED__ */
-
-#ifndef __IFsrmRule_FWD_DEFINED__
-#define __IFsrmRule_FWD_DEFINED__
-typedef struct IFsrmRule IFsrmRule;
-#endif /* __IFsrmRule_FWD_DEFINED__ */
-
-#ifndef __IFsrmSetting_FWD_DEFINED__
-#define __IFsrmSetting_FWD_DEFINED__
-typedef struct IFsrmSetting IFsrmSetting;
-#endif /* __IFsrmSetting_FWD_DEFINED__ */
-
-#ifndef __IFsrmStorageModuleDefinition_FWD_DEFINED__
-#define __IFsrmStorageModuleDefinition_FWD_DEFINED__
-typedef struct IFsrmStorageModuleDefinition IFsrmStorageModuleDefinition;
-#endif /* __IFsrmStorageModuleDefinition_FWD_DEFINED__ */
-
-#ifndef __IFsrmStorageModuleImplementation_FWD_DEFINED__
-#define __IFsrmStorageModuleImplementation_FWD_DEFINED__
-typedef struct IFsrmStorageModuleImplementation IFsrmStorageModuleImplementation;
-#endif /* __IFsrmStorageModuleImplementation_FWD_DEFINED__ */
-
-#undef  INTERFACE
-#define INTERFACE IFsrmFileGroup
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+typedef interface IFsrmFileScreenTemplateManager IFsrmFileScreenTemplateManager;
 #endif
-DECLARE_INTERFACE_(IFsrmFileGroup,IFsrmObject)
+
+#ifndef __IFsrmFileGroup_FWD_DEFINED__
+#define __IFsrmFileGroup_FWD_DEFINED__
+typedef interface IFsrmFileGroup IFsrmFileGroup;
+#endif
+
+#ifndef __IFsrmFileScreenBase_FWD_DEFINED__
+#define __IFsrmFileScreenBase_FWD_DEFINED__
+typedef interface IFsrmFileScreenBase IFsrmFileScreenBase;
+#endif
+
+#ifndef __IFsrmFileScreenException_FWD_DEFINED__
+#define __IFsrmFileScreenException_FWD_DEFINED__
+typedef interface IFsrmFileScreenException IFsrmFileScreenException;
+#endif
+
+#ifndef __IFsrmFileScreen_FWD_DEFINED__
+#define __IFsrmFileScreen_FWD_DEFINED__
+typedef interface IFsrmFileScreen IFsrmFileScreen;
+#endif
+
+#ifndef __IFsrmFileGroupImported_FWD_DEFINED__
+#define __IFsrmFileGroupImported_FWD_DEFINED__
+typedef interface IFsrmFileGroupImported IFsrmFileGroupImported;
+#endif
+
+#ifndef __IFsrmFileScreenTemplate_FWD_DEFINED__
+#define __IFsrmFileScreenTemplate_FWD_DEFINED__
+typedef interface IFsrmFileScreenTemplate IFsrmFileScreenTemplate;
+#endif
+
+#ifndef __IFsrmFileScreenTemplateImported_FWD_DEFINED__
+#define __IFsrmFileScreenTemplateImported_FWD_DEFINED__
+typedef interface IFsrmFileScreenTemplateImported IFsrmFileScreenTemplateImported;
+#endif
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <fsrmenums.h>
+#include <fsrm.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+#ifndef __IFsrmFileGroup_FWD_DEFINED__
+#define __IFsrmFileGroup_FWD_DEFINED__
+typedef interface IFsrmFileGroup IFsrmFileGroup;
+#endif
+
+#ifndef __IFsrmFileGroupImported_FWD_DEFINED__
+#define __IFsrmFileGroupImported_FWD_DEFINED__
+typedef interface IFsrmFileGroupImported IFsrmFileGroupImported;
+#endif
+
+#ifndef __IFsrmFileGroupManager_FWD_DEFINED__
+#define __IFsrmFileGroupManager_FWD_DEFINED__
+typedef interface IFsrmFileGroupManager IFsrmFileGroupManager;
+#endif
+
+#ifndef __IFsrmFileScreen_FWD_DEFINED__
+#define __IFsrmFileScreen_FWD_DEFINED__
+typedef interface IFsrmFileScreen IFsrmFileScreen;
+#endif
+
+#ifndef __IFsrmFileScreenBase_FWD_DEFINED__
+#define __IFsrmFileScreenBase_FWD_DEFINED__
+typedef interface IFsrmFileScreenBase IFsrmFileScreenBase;
+#endif
+
+#ifndef __IFsrmFileScreenException_FWD_DEFINED__
+#define __IFsrmFileScreenException_FWD_DEFINED__
+typedef interface IFsrmFileScreenException IFsrmFileScreenException;
+#endif
+
+#ifndef __IFsrmFileScreenManager_FWD_DEFINED__
+#define __IFsrmFileScreenManager_FWD_DEFINED__
+typedef interface IFsrmFileScreenManager IFsrmFileScreenManager;
+#endif
+
+#ifndef __IFsrmFileScreenTemplate_FWD_DEFINED__
+#define __IFsrmFileScreenTemplate_FWD_DEFINED__
+typedef interface IFsrmFileScreenTemplate IFsrmFileScreenTemplate;
+#endif
+
+#ifndef __IFsrmFileScreenTemplateImported_FWD_DEFINED__
+#define __IFsrmFileScreenTemplateImported_FWD_DEFINED__
+typedef interface IFsrmFileScreenTemplateImported IFsrmFileScreenTemplateImported;
+#endif
+
+#ifndef __IFsrmFileScreenTemplateManager_FWD_DEFINED__
+#define __IFsrmFileScreenTemplateManager_FWD_DEFINED__
+typedef interface IFsrmFileScreenTemplateManager IFsrmFileScreenTemplateManager;
+#endif
+
+#define FSRM_DISPID_FILEGROUP (FSRM_DISPID_FEATURE_FILESCREEN | 0x100000)
+
+#define FSRM_DISPID_FILEGROUP_IMPORTED (FSRM_DISPID_FILEGROUP | 0x10000)
+
+#define FSRM_DISPID_FILEGROUP_MANAGER (FSRM_DISPID_FEATURE_FILESCREEN | 0x200000)
+
+#define FSRM_DISPID_FILESCREEN_BASE (FSRM_DISPID_FEATURE_FILESCREEN | 0x300000)
+
+#define FSRM_DISPID_FILESCREEN (FSRM_DISPID_FILESCREEN_BASE | 0x10000)
+
+#define FSRM_DISPID_FILESCREEN_TEMPLATE (FSRM_DISPID_FILESCREEN_BASE | 0x20000)
+
+#define FSRM_DISPID_FILESCREEN_TEMPLATE_IMPORTED (FSRM_DISPID_FILESCREEN_TEMPLATE | 0x1000)
+
+#define FSRM_DISPID_FILESCREEN_EXCEPTION (FSRM_DISPID_FEATURE_FILESCREEN | 0x400000)
+
+#define FSRM_DISPID_FILESCREEN_MANAGER (FSRM_DISPID_FEATURE_FILESCREEN | 0x500000)
+
+#define FSRM_DISPID_FILESCREEN_TEMPLATE_MANAGER (FSRM_DISPID_FEATURE_FILESCREEN | 0x600000)
+
+/*****************************************************************************
+ * IFsrmFileGroupManager interface
+ */
+#ifndef __IFsrmFileGroupManager_INTERFACE_DEFINED__
+#define __IFsrmFileGroupManager_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmFileGroupManager, 0x426677d5, 0x018c, 0x485c, 0x8a,0x51, 0x20,0xb8,0x6d,0x00,0xbd,0xc4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("426677d5-018c-485c-8a51-20b86d00bdc4")
+IFsrmFileGroupManager : public IDispatch
 {
+    virtual HRESULT STDMETHODCALLTYPE CreateFileGroup(
+        IFsrmFileGroup **fileGroup) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFileGroup(
+        BSTR name,
+        IFsrmFileGroup **fileGroup) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumFileGroups(
+        FsrmEnumOptions options = FsrmEnumOptions_None,
+        IFsrmCommittableCollection **fileGroups) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ExportFileGroups(
+        VARIANT *fileGroupNamesArray = 0,
+        BSTR *serializedFileGroups) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ImportFileGroups(
+        BSTR serializedFileGroups,
+        VARIANT *fileGroupNamesArray = 0,
+        IFsrmCommittableCollection **fileGroups) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmFileGroupManager, 0x426677d5, 0x018c, 0x485c, 0x8a,0x51, 0x20,0xb8,0x6d,0x00,0xbd,0xc4)
+#endif
+#else
+typedef struct IFsrmFileGroupManagerVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmFileGroupManager* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmFileGroupManager* This);
 
-    /* IFsrmObject methods */
-    STDMETHOD_(HRESULT,get_Id)(THIS_ FSRM_OBJECT_ID *id) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *description) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR description) PURE;
-    STDMETHOD_(HRESULT,Delete)(THIS) PURE;
-    STDMETHOD_(HRESULT,Commit)(THIS) PURE;
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmFileGroupManager* This);
 
-    /* IFsrmFileGroup methods */
-    STDMETHOD_(HRESULT,get_Name)(THIS_ BSTR *name) PURE;
-    STDMETHOD_(HRESULT,put_Name)(THIS_ BSTR name) PURE;
-    STDMETHOD_(HRESULT,get_Members)(THIS_ IFsrmMutableCollection **members) PURE;
-    STDMETHOD_(HRESULT,put_Members)(THIS_ IFsrmMutableCollection *members) PURE;
-    STDMETHOD_(HRESULT,get_NonMembers)(THIS_ IFsrmMutableCollection **nonMembers) PURE;
-    STDMETHOD_(HRESULT,put_NonMembers)(THIS_ IFsrmMutableCollection *nonMembers) PURE;
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmFileGroupManager* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmFileGroupManager* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmFileGroupManager* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmFileGroupManager* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmFileGroupManager methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateFileGroup)(
+        IFsrmFileGroupManager* This,
+        IFsrmFileGroup **fileGroup);
+
+    HRESULT (STDMETHODCALLTYPE *GetFileGroup)(
+        IFsrmFileGroupManager* This,
+        BSTR name,
+        IFsrmFileGroup **fileGroup);
+
+    HRESULT (STDMETHODCALLTYPE *EnumFileGroups)(
+        IFsrmFileGroupManager* This,
+        FsrmEnumOptions options,
+        IFsrmCommittableCollection **fileGroups);
+
+    HRESULT (STDMETHODCALLTYPE *ExportFileGroups)(
+        IFsrmFileGroupManager* This,
+        VARIANT *fileGroupNamesArray,
+        BSTR *serializedFileGroups);
+
+    HRESULT (STDMETHODCALLTYPE *ImportFileGroups)(
+        IFsrmFileGroupManager* This,
+        BSTR serializedFileGroups,
+        VARIANT *fileGroupNamesArray,
+        IFsrmCommittableCollection **fileGroups);
 
     END_INTERFACE
+} IFsrmFileGroupManagerVtbl;
+interface IFsrmFileGroupManager {
+    CONST_VTBL IFsrmFileGroupManagerVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
-#define IFsrmFileGroup_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IFsrmFileGroup_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IFsrmFileGroup_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmFileGroup_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IFsrmFileGroup_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IFsrmFileGroup_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IFsrmFileGroup_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IFsrmFileGroup_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
-#define IFsrmFileGroup_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
-#define IFsrmFileGroup_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
-#define IFsrmFileGroup_Delete() (This)->lpVtbl->Delete(This)
-#define IFsrmFileGroup_Commit() (This)->lpVtbl->Commit(This)
-#define IFsrmFileGroup_get_Name(This,name) (This)->lpVtbl->get_Name(This,name)
-#define IFsrmFileGroup_put_Name(This,name) (This)->lpVtbl->put_Name(This,name)
-#define IFsrmFileGroup_get_Members(This,members) (This)->lpVtbl->get_Members(This,members)
-#define IFsrmFileGroup_put_Members(This,members) (This)->lpVtbl->put_Members(This,members)
-#define IFsrmFileGroup_get_NonMembers(This,nonMembers) (This)->lpVtbl->get_NonMembers(This,nonMembers)
-#define IFsrmFileGroup_put_NonMembers(This,nonMembers) (This)->lpVtbl->put_NonMembers(This,nonMembers)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmFileGroupImported
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IFsrmFileGroupImported,IFsrmFileGroup)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
-
-    /* IFsrmObject methods */
-    STDMETHOD_(HRESULT,get_Id)(THIS_ FSRM_OBJECT_ID *id) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *description) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR description) PURE;
-    STDMETHOD_(HRESULT,Delete)(THIS) PURE;
-    STDMETHOD_(HRESULT,Commit)(THIS) PURE;
-
-    /* IFsrmFileGroup methods */
-    STDMETHOD_(HRESULT,get_Name)(THIS_ BSTR *name) PURE;
-    STDMETHOD_(HRESULT,put_Name)(THIS_ BSTR name) PURE;
-    STDMETHOD_(HRESULT,get_Members)(THIS_ IFsrmMutableCollection **members) PURE;
-    STDMETHOD_(HRESULT,put_Members)(THIS_ IFsrmMutableCollection *members) PURE;
-    STDMETHOD_(HRESULT,get_NonMembers)(THIS_ IFsrmMutableCollection **nonMembers) PURE;
-    STDMETHOD_(HRESULT,put_NonMembers)(THIS_ IFsrmMutableCollection *nonMembers) PURE;
-
-    /* IFsrmFileGroupImported methods */
-    STDMETHOD_(HRESULT,get_OverwriteOnCommit)(THIS_ VARIANT_BOOL *overwrite) PURE;
-    STDMETHOD_(HRESULT,put_OverwriteOnCommit)(THIS_ VARIANT_BOOL overwrite) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IFsrmFileGroupImported_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IFsrmFileGroupImported_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IFsrmFileGroupImported_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmFileGroupImported_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IFsrmFileGroupImported_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IFsrmFileGroupImported_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IFsrmFileGroupImported_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IFsrmFileGroupImported_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
-#define IFsrmFileGroupImported_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
-#define IFsrmFileGroupImported_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
-#define IFsrmFileGroupImported_Delete() (This)->lpVtbl->Delete(This)
-#define IFsrmFileGroupImported_Commit() (This)->lpVtbl->Commit(This)
-#define IFsrmFileGroupImported_get_Name(This,name) (This)->lpVtbl->get_Name(This,name)
-#define IFsrmFileGroupImported_put_Name(This,name) (This)->lpVtbl->put_Name(This,name)
-#define IFsrmFileGroupImported_get_Members(This,members) (This)->lpVtbl->get_Members(This,members)
-#define IFsrmFileGroupImported_put_Members(This,members) (This)->lpVtbl->put_Members(This,members)
-#define IFsrmFileGroupImported_get_NonMembers(This,nonMembers) (This)->lpVtbl->get_NonMembers(This,nonMembers)
-#define IFsrmFileGroupImported_put_NonMembers(This,nonMembers) (This)->lpVtbl->put_NonMembers(This,nonMembers)
-#define IFsrmFileGroupImported_get_OverwriteOnCommit(This,overwrite) (This)->lpVtbl->get_OverwriteOnCommit(This,overwrite)
-#define IFsrmFileGroupImported_put_OverwriteOnCommit(This,overwrite) (This)->lpVtbl->put_OverwriteOnCommit(This,overwrite)
-#endif /*COBJMACROS*/
-
-
-#undef  INTERFACE
-#define INTERFACE IFsrmFileGroupManager
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IFsrmFileGroupManager,IDispatch)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
-
-    /* IFsrmFileGroupManager methods */
-    STDMETHOD_(HRESULT,CreateFileGroup)(THIS_ IFsrmFileGroup **fileGroup) PURE;
-    STDMETHOD_(HRESULT,GetFileGroup)(THIS_ BSTR name,IFsrmFileGroup **fileGroup) PURE;
-    STDMETHOD_(HRESULT,EnumFileGroups)(THIS_ FsrmEnumOptions options,IFsrmCommittableCollection **fileGroups) PURE;
-    STDMETHOD_(HRESULT,ExportFileGroups)(THIS_ VARIANT *fileGroupNamesArray,BSTR *serializedFileGroups) PURE;
-    STDMETHOD_(HRESULT,ImportFileGroups)(THIS_ BSTR serializedFileGroups,VARIANT *fileGroupNamesArray,IFsrmCommittableCollection **fileGroups) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IFsrmFileGroupManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IFsrmFileGroupManager_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IFsrmFileGroupManager_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define IFsrmFileGroupManager_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define IFsrmFileGroupManager_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define IFsrmFileGroupManager_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define IFsrmFileGroupManager_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmFileGroupManager methods ***/
 #define IFsrmFileGroupManager_CreateFileGroup(This,fileGroup) (This)->lpVtbl->CreateFileGroup(This,fileGroup)
 #define IFsrmFileGroupManager_GetFileGroup(This,name,fileGroup) (This)->lpVtbl->GetFileGroup(This,name,fileGroup)
 #define IFsrmFileGroupManager_EnumFileGroups(This,options,fileGroups) (This)->lpVtbl->EnumFileGroups(This,options,fileGroups)
 #define IFsrmFileGroupManager_ExportFileGroups(This,fileGroupNamesArray,serializedFileGroups) (This)->lpVtbl->ExportFileGroups(This,fileGroupNamesArray,serializedFileGroups)
 #define IFsrmFileGroupManager_ImportFileGroups(This,serializedFileGroups,fileGroupNamesArray,fileGroups) (This)->lpVtbl->ImportFileGroups(This,serializedFileGroups,fileGroupNamesArray,fileGroups)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmFileScreenBase
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmFileGroupManager_QueryInterface(IFsrmFileGroupManager* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmFileGroupManager_AddRef(IFsrmFileGroupManager* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmFileGroupManager_Release(IFsrmFileGroupManager* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmFileGroupManager_GetTypeInfoCount(IFsrmFileGroupManager* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupManager_GetTypeInfo(IFsrmFileGroupManager* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupManager_GetIDsOfNames(IFsrmFileGroupManager* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupManager_Invoke(IFsrmFileGroupManager* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmFileGroupManager methods ***/
+static FORCEINLINE HRESULT IFsrmFileGroupManager_CreateFileGroup(IFsrmFileGroupManager* This,IFsrmFileGroup **fileGroup) {
+    return This->lpVtbl->CreateFileGroup(This,fileGroup);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupManager_GetFileGroup(IFsrmFileGroupManager* This,BSTR name,IFsrmFileGroup **fileGroup) {
+    return This->lpVtbl->GetFileGroup(This,name,fileGroup);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupManager_EnumFileGroups(IFsrmFileGroupManager* This,FsrmEnumOptions options,IFsrmCommittableCollection **fileGroups) {
+    return This->lpVtbl->EnumFileGroups(This,options,fileGroups);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupManager_ExportFileGroups(IFsrmFileGroupManager* This,VARIANT *fileGroupNamesArray,BSTR *serializedFileGroups) {
+    return This->lpVtbl->ExportFileGroups(This,fileGroupNamesArray,serializedFileGroups);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupManager_ImportFileGroups(IFsrmFileGroupManager* This,BSTR serializedFileGroups,VARIANT *fileGroupNamesArray,IFsrmCommittableCollection **fileGroups) {
+    return This->lpVtbl->ImportFileGroups(This,serializedFileGroups,fileGroupNamesArray,fileGroups);
+}
 #endif
-DECLARE_INTERFACE_(IFsrmFileScreenBase,IFsrmObject)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmFileGroupManager_CreateFileGroup_Proxy(
+    IFsrmFileGroupManager* This,
+    IFsrmFileGroup **fileGroup);
+void __RPC_STUB IFsrmFileGroupManager_CreateFileGroup_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileGroupManager_GetFileGroup_Proxy(
+    IFsrmFileGroupManager* This,
+    BSTR name,
+    IFsrmFileGroup **fileGroup);
+void __RPC_STUB IFsrmFileGroupManager_GetFileGroup_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileGroupManager_EnumFileGroups_Proxy(
+    IFsrmFileGroupManager* This,
+    FsrmEnumOptions options,
+    IFsrmCommittableCollection **fileGroups);
+void __RPC_STUB IFsrmFileGroupManager_EnumFileGroups_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileGroupManager_ExportFileGroups_Proxy(
+    IFsrmFileGroupManager* This,
+    VARIANT *fileGroupNamesArray,
+    BSTR *serializedFileGroups);
+void __RPC_STUB IFsrmFileGroupManager_ExportFileGroups_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileGroupManager_ImportFileGroups_Proxy(
+    IFsrmFileGroupManager* This,
+    BSTR serializedFileGroups,
+    VARIANT *fileGroupNamesArray,
+    IFsrmCommittableCollection **fileGroups);
+void __RPC_STUB IFsrmFileGroupManager_ImportFileGroups_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmFileGroupManager_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmFileScreenManager interface
+ */
+#ifndef __IFsrmFileScreenManager_INTERFACE_DEFINED__
+#define __IFsrmFileScreenManager_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmFileScreenManager, 0xff4fa04e, 0x5a94, 0x4bda, 0xa3,0xa0, 0xd5,0xb4,0xd3,0xc5,0x2e,0xba);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ff4fa04e-5a94-4bda-a3a0-d5b4d3c52eba")
+IFsrmFileScreenManager : public IDispatch
 {
+    virtual HRESULT STDMETHODCALLTYPE get_ActionVariables(
+        SAFEARRAY **variables) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ActionVariableDescriptions(
+        SAFEARRAY **descriptions) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateFileScreen(
+        BSTR path,
+        IFsrmFileScreen **fileScreen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFileScreen(
+        BSTR path,
+        IFsrmFileScreen **fileScreen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumFileScreens(
+        BSTR path = L"",
+        FsrmEnumOptions options = FsrmEnumOptions_None,
+        IFsrmCommittableCollection **fileScreens) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateFileScreenException(
+        BSTR path,
+        IFsrmFileScreenException **fileScreenException) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFileScreenException(
+        BSTR path,
+        IFsrmFileScreenException **fileScreenException) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumFileScreenExceptions(
+        BSTR path = L"",
+        FsrmEnumOptions options = FsrmEnumOptions_None,
+        IFsrmCommittableCollection **fileScreenExceptions) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateFileScreenCollection(
+        IFsrmCommittableCollection **collection) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmFileScreenManager, 0xff4fa04e, 0x5a94, 0x4bda, 0xa3,0xa0, 0xd5,0xb4,0xd3,0xc5,0x2e,0xba)
+#endif
+#else
+typedef struct IFsrmFileScreenManagerVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmFileScreenManager* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmFileScreenManager* This);
 
-    /* IFsrmObject methods */
-    STDMETHOD_(HRESULT,get_Id)(THIS_ FSRM_OBJECT_ID *id) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *description) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR description) PURE;
-    STDMETHOD_(HRESULT,Delete)(THIS) PURE;
-    STDMETHOD_(HRESULT,Commit)(THIS) PURE;
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmFileScreenManager* This);
 
-    /* IFsrmFileScreenBase methods */
-    STDMETHOD_(HRESULT,get_BlockedFileGroups)(THIS_ IFsrmMutableCollection **blockList) PURE;
-    STDMETHOD_(HRESULT,put_BlockedFileGroups)(THIS_ IFsrmMutableCollection *blockList) PURE;
-    STDMETHOD_(HRESULT,get_FileScreenFlags)(THIS_ __LONG32 *fileScreenFlags) PURE;
-    STDMETHOD_(HRESULT,put_FileScreenFlags)(THIS_ __LONG32 fileScreenFlags) PURE;
-    STDMETHOD_(HRESULT,get_UserSid)(THIS_ BSTR *userSid) PURE;
-    STDMETHOD_(HRESULT,get_UserAccount)(THIS_ BSTR *userAccount) PURE;
-    STDMETHOD_(HRESULT,CreateAction)(THIS_ FsrmActionType actionType,IFsrmAction **action) PURE;
-    STDMETHOD_(HRESULT,EnumActions)(THIS_ IFsrmCollection **actions) PURE;
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmFileScreenManager* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmFileScreenManager* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmFileScreenManager* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmFileScreenManager* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmFileScreenManager methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_ActionVariables)(
+        IFsrmFileScreenManager* This,
+        SAFEARRAY **variables);
+
+    HRESULT (STDMETHODCALLTYPE *get_ActionVariableDescriptions)(
+        IFsrmFileScreenManager* This,
+        SAFEARRAY **descriptions);
+
+    HRESULT (STDMETHODCALLTYPE *CreateFileScreen)(
+        IFsrmFileScreenManager* This,
+        BSTR path,
+        IFsrmFileScreen **fileScreen);
+
+    HRESULT (STDMETHODCALLTYPE *GetFileScreen)(
+        IFsrmFileScreenManager* This,
+        BSTR path,
+        IFsrmFileScreen **fileScreen);
+
+    HRESULT (STDMETHODCALLTYPE *EnumFileScreens)(
+        IFsrmFileScreenManager* This,
+        BSTR path,
+        FsrmEnumOptions options,
+        IFsrmCommittableCollection **fileScreens);
+
+    HRESULT (STDMETHODCALLTYPE *CreateFileScreenException)(
+        IFsrmFileScreenManager* This,
+        BSTR path,
+        IFsrmFileScreenException **fileScreenException);
+
+    HRESULT (STDMETHODCALLTYPE *GetFileScreenException)(
+        IFsrmFileScreenManager* This,
+        BSTR path,
+        IFsrmFileScreenException **fileScreenException);
+
+    HRESULT (STDMETHODCALLTYPE *EnumFileScreenExceptions)(
+        IFsrmFileScreenManager* This,
+        BSTR path,
+        FsrmEnumOptions options,
+        IFsrmCommittableCollection **fileScreenExceptions);
+
+    HRESULT (STDMETHODCALLTYPE *CreateFileScreenCollection)(
+        IFsrmFileScreenManager* This,
+        IFsrmCommittableCollection **collection);
 
     END_INTERFACE
+} IFsrmFileScreenManagerVtbl;
+interface IFsrmFileScreenManager {
+    CONST_VTBL IFsrmFileScreenManagerVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
-#define IFsrmFileScreenBase_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IFsrmFileScreenBase_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IFsrmFileScreenBase_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmFileScreenBase_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IFsrmFileScreenBase_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IFsrmFileScreenBase_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IFsrmFileScreenBase_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IFsrmFileScreenBase_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
-#define IFsrmFileScreenBase_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
-#define IFsrmFileScreenBase_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
-#define IFsrmFileScreenBase_Delete() (This)->lpVtbl->Delete(This)
-#define IFsrmFileScreenBase_Commit() (This)->lpVtbl->Commit(This)
-#define IFsrmFileScreenBase_get_BlockedFileGroups(This,blockList) (This)->lpVtbl->get_BlockedFileGroups(This,blockList)
-#define IFsrmFileScreenBase_put_BlockedFileGroups(This,blockList) (This)->lpVtbl->put_BlockedFileGroups(This,blockList)
-#define IFsrmFileScreenBase_get_FileScreenFlags(This,fileScreenFlags) (This)->lpVtbl->get_FileScreenFlags(This,fileScreenFlags)
-#define IFsrmFileScreenBase_put_FileScreenFlags(This,fileScreenFlags) (This)->lpVtbl->put_FileScreenFlags(This,fileScreenFlags)
-#define IFsrmFileScreenBase_get_UserSid(This,userSid) (This)->lpVtbl->get_UserSid(This,userSid)
-#define IFsrmFileScreenBase_get_UserAccount(This,userAccount) (This)->lpVtbl->get_UserAccount(This,userAccount)
-#define IFsrmFileScreenBase_CreateAction(This,actionType,action) (This)->lpVtbl->CreateAction(This,actionType,action)
-#define IFsrmFileScreenBase_EnumActions(This,actions) (This)->lpVtbl->EnumActions(This,actions)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmFileScreenException
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IFsrmFileScreenException,IFsrmObject)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
-
-    /* IFsrmObject methods */
-    STDMETHOD_(HRESULT,get_Id)(THIS_ FSRM_OBJECT_ID *id) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *description) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR description) PURE;
-    STDMETHOD_(HRESULT,Delete)(THIS) PURE;
-    STDMETHOD_(HRESULT,Commit)(THIS) PURE;
-
-    /* IFsrmFileScreenException methods */
-    STDMETHOD_(HRESULT,get_Path)(THIS_ BSTR *path) PURE;
-    STDMETHOD_(HRESULT,get_AllowedFileGroups)(THIS_ IFsrmMutableCollection **allowList) PURE;
-    STDMETHOD_(HRESULT,put_AllowedFileGroups)(THIS_ IFsrmMutableCollection *allowList) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IFsrmFileScreenException_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IFsrmFileScreenException_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IFsrmFileScreenException_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmFileScreenException_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IFsrmFileScreenException_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IFsrmFileScreenException_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IFsrmFileScreenException_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IFsrmFileScreenException_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
-#define IFsrmFileScreenException_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
-#define IFsrmFileScreenException_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
-#define IFsrmFileScreenException_Delete() (This)->lpVtbl->Delete(This)
-#define IFsrmFileScreenException_Commit() (This)->lpVtbl->Commit(This)
-#define IFsrmFileScreenException_get_Path(This,path) (This)->lpVtbl->get_Path(This,path)
-#define IFsrmFileScreenException_get_AllowedFileGroups(This,allowList) (This)->lpVtbl->get_AllowedFileGroups(This,allowList)
-#define IFsrmFileScreenException_put_AllowedFileGroups(This,allowList) (This)->lpVtbl->put_AllowedFileGroups(This,allowList)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmFileScreenManager
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IFsrmFileScreenManager,IDispatch)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
-
-    /* IFsrmFileScreenManager methods */
-    STDMETHOD_(HRESULT,get_ActionVariables)(THIS_ SAFEARRAY *variables) PURE;
-    STDMETHOD_(HRESULT,get_ActionVariableDescriptions)(THIS_ SAFEARRAY *descriptions) PURE;
-    STDMETHOD_(HRESULT,CreateFileScreen)(THIS_ BSTR path,IFsrmFileScreen **fileScreen) PURE;
-    STDMETHOD_(HRESULT,GetFileScreen)(THIS_ BSTR path,IFsrmFileScreen **fileScreen) PURE;
-    STDMETHOD_(HRESULT,EnumFileScreens)(THIS_ BSTR path,FsrmEnumOptions options,IFsrmCommittableCollection **fileScreens) PURE;
-    STDMETHOD_(HRESULT,CreateFileScreenException)(THIS_ BSTR path,IFsrmFileScreenException **fileScreenException) PURE;
-    STDMETHOD_(HRESULT,GetFileScreenException)(THIS_ BSTR path,IFsrmFileScreenException **fileScreenException) PURE;
-    STDMETHOD_(HRESULT,EnumFileScreenExceptions)(THIS_ BSTR path,FsrmEnumOptions options,IFsrmCommittableCollection **fileScreenExceptions) PURE;
-    STDMETHOD_(HRESULT,CreateFileScreenCollection)(THIS_ IFsrmCommittableCollection **collection) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IFsrmFileScreenManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IFsrmFileScreenManager_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IFsrmFileScreenManager_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define IFsrmFileScreenManager_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define IFsrmFileScreenManager_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define IFsrmFileScreenManager_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define IFsrmFileScreenManager_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmFileScreenManager methods ***/
 #define IFsrmFileScreenManager_get_ActionVariables(This,variables) (This)->lpVtbl->get_ActionVariables(This,variables)
 #define IFsrmFileScreenManager_get_ActionVariableDescriptions(This,descriptions) (This)->lpVtbl->get_ActionVariableDescriptions(This,descriptions)
 #define IFsrmFileScreenManager_CreateFileScreen(This,path,fileScreen) (This)->lpVtbl->CreateFileScreen(This,path,fileScreen)
@@ -619,282 +541,2267 @@
 #define IFsrmFileScreenManager_GetFileScreenException(This,path,fileScreenException) (This)->lpVtbl->GetFileScreenException(This,path,fileScreenException)
 #define IFsrmFileScreenManager_EnumFileScreenExceptions(This,path,options,fileScreenExceptions) (This)->lpVtbl->EnumFileScreenExceptions(This,path,options,fileScreenExceptions)
 #define IFsrmFileScreenManager_CreateFileScreenCollection(This,collection) (This)->lpVtbl->CreateFileScreenCollection(This,collection)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmFileScreenTemplate
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenManager_QueryInterface(IFsrmFileScreenManager* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmFileScreenManager_AddRef(IFsrmFileScreenManager* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmFileScreenManager_Release(IFsrmFileScreenManager* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenManager_GetTypeInfoCount(IFsrmFileScreenManager* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenManager_GetTypeInfo(IFsrmFileScreenManager* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenManager_GetIDsOfNames(IFsrmFileScreenManager* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenManager_Invoke(IFsrmFileScreenManager* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmFileScreenManager methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenManager_get_ActionVariables(IFsrmFileScreenManager* This,SAFEARRAY **variables) {
+    return This->lpVtbl->get_ActionVariables(This,variables);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenManager_get_ActionVariableDescriptions(IFsrmFileScreenManager* This,SAFEARRAY **descriptions) {
+    return This->lpVtbl->get_ActionVariableDescriptions(This,descriptions);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenManager_CreateFileScreen(IFsrmFileScreenManager* This,BSTR path,IFsrmFileScreen **fileScreen) {
+    return This->lpVtbl->CreateFileScreen(This,path,fileScreen);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenManager_GetFileScreen(IFsrmFileScreenManager* This,BSTR path,IFsrmFileScreen **fileScreen) {
+    return This->lpVtbl->GetFileScreen(This,path,fileScreen);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenManager_EnumFileScreens(IFsrmFileScreenManager* This,BSTR path,FsrmEnumOptions options,IFsrmCommittableCollection **fileScreens) {
+    return This->lpVtbl->EnumFileScreens(This,path,options,fileScreens);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenManager_CreateFileScreenException(IFsrmFileScreenManager* This,BSTR path,IFsrmFileScreenException **fileScreenException) {
+    return This->lpVtbl->CreateFileScreenException(This,path,fileScreenException);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenManager_GetFileScreenException(IFsrmFileScreenManager* This,BSTR path,IFsrmFileScreenException **fileScreenException) {
+    return This->lpVtbl->GetFileScreenException(This,path,fileScreenException);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenManager_EnumFileScreenExceptions(IFsrmFileScreenManager* This,BSTR path,FsrmEnumOptions options,IFsrmCommittableCollection **fileScreenExceptions) {
+    return This->lpVtbl->EnumFileScreenExceptions(This,path,options,fileScreenExceptions);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenManager_CreateFileScreenCollection(IFsrmFileScreenManager* This,IFsrmCommittableCollection **collection) {
+    return This->lpVtbl->CreateFileScreenCollection(This,collection);
+}
 #endif
-DECLARE_INTERFACE_(IFsrmFileScreenTemplate,IFsrmFileScreenBase)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenManager_get_ActionVariables_Proxy(
+    IFsrmFileScreenManager* This,
+    SAFEARRAY **variables);
+void __RPC_STUB IFsrmFileScreenManager_get_ActionVariables_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenManager_get_ActionVariableDescriptions_Proxy(
+    IFsrmFileScreenManager* This,
+    SAFEARRAY **descriptions);
+void __RPC_STUB IFsrmFileScreenManager_get_ActionVariableDescriptions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenManager_CreateFileScreen_Proxy(
+    IFsrmFileScreenManager* This,
+    BSTR path,
+    IFsrmFileScreen **fileScreen);
+void __RPC_STUB IFsrmFileScreenManager_CreateFileScreen_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenManager_GetFileScreen_Proxy(
+    IFsrmFileScreenManager* This,
+    BSTR path,
+    IFsrmFileScreen **fileScreen);
+void __RPC_STUB IFsrmFileScreenManager_GetFileScreen_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenManager_EnumFileScreens_Proxy(
+    IFsrmFileScreenManager* This,
+    BSTR path,
+    FsrmEnumOptions options,
+    IFsrmCommittableCollection **fileScreens);
+void __RPC_STUB IFsrmFileScreenManager_EnumFileScreens_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenManager_CreateFileScreenException_Proxy(
+    IFsrmFileScreenManager* This,
+    BSTR path,
+    IFsrmFileScreenException **fileScreenException);
+void __RPC_STUB IFsrmFileScreenManager_CreateFileScreenException_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenManager_GetFileScreenException_Proxy(
+    IFsrmFileScreenManager* This,
+    BSTR path,
+    IFsrmFileScreenException **fileScreenException);
+void __RPC_STUB IFsrmFileScreenManager_GetFileScreenException_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenManager_EnumFileScreenExceptions_Proxy(
+    IFsrmFileScreenManager* This,
+    BSTR path,
+    FsrmEnumOptions options,
+    IFsrmCommittableCollection **fileScreenExceptions);
+void __RPC_STUB IFsrmFileScreenManager_EnumFileScreenExceptions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenManager_CreateFileScreenCollection_Proxy(
+    IFsrmFileScreenManager* This,
+    IFsrmCommittableCollection **collection);
+void __RPC_STUB IFsrmFileScreenManager_CreateFileScreenCollection_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmFileScreenManager_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmFileScreenTemplateManager interface
+ */
+#ifndef __IFsrmFileScreenTemplateManager_INTERFACE_DEFINED__
+#define __IFsrmFileScreenTemplateManager_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmFileScreenTemplateManager, 0xcfe36cba, 0x1949, 0x4e74, 0xa1,0x4f, 0xf1,0xd5,0x80,0xce,0xaf,0x13);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("cfe36cba-1949-4e74-a14f-f1d580ceaf13")
+IFsrmFileScreenTemplateManager : public IDispatch
 {
+    virtual HRESULT STDMETHODCALLTYPE CreateTemplate(
+        IFsrmFileScreenTemplate **fileScreenTemplate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTemplate(
+        BSTR name,
+        IFsrmFileScreenTemplate **fileScreenTemplate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumTemplates(
+        FsrmEnumOptions options = FsrmEnumOptions_None,
+        IFsrmCommittableCollection **fileScreenTemplates) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ExportTemplates(
+        VARIANT *fileScreenTemplateNamesArray = 0,
+        BSTR *serializedFileScreenTemplates) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ImportTemplates(
+        BSTR serializedFileScreenTemplates,
+        VARIANT *fileScreenTemplateNamesArray = 0,
+        IFsrmCommittableCollection **fileScreenTemplates) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmFileScreenTemplateManager, 0xcfe36cba, 0x1949, 0x4e74, 0xa1,0x4f, 0xf1,0xd5,0x80,0xce,0xaf,0x13)
+#endif
+#else
+typedef struct IFsrmFileScreenTemplateManagerVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmFileScreenTemplateManager* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmFileScreenTemplateManager* This);
 
-    /* IFsrmObject methods */
-    STDMETHOD_(HRESULT,get_Id)(THIS_ FSRM_OBJECT_ID *id) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *description) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR description) PURE;
-    STDMETHOD_(HRESULT,Delete)(THIS) PURE;
-    STDMETHOD_(HRESULT,Commit)(THIS) PURE;
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmFileScreenTemplateManager* This);
 
-    /* IFsrmFileScreenBase methods */
-    STDMETHOD_(HRESULT,get_BlockedFileGroups)(THIS_ IFsrmMutableCollection **blockList) PURE;
-    STDMETHOD_(HRESULT,put_BlockedFileGroups)(THIS_ IFsrmMutableCollection *blockList) PURE;
-    STDMETHOD_(HRESULT,get_FileScreenFlags)(THIS_ __LONG32 *fileScreenFlags) PURE;
-    STDMETHOD_(HRESULT,put_FileScreenFlags)(THIS_ __LONG32 fileScreenFlags) PURE;
-    STDMETHOD_(HRESULT,get_UserSid)(THIS_ BSTR *userSid) PURE;
-    STDMETHOD_(HRESULT,get_UserAccount)(THIS_ BSTR *userAccount) PURE;
-    STDMETHOD_(HRESULT,CreateAction)(THIS_ FsrmActionType actionType,IFsrmAction **action) PURE;
-    STDMETHOD_(HRESULT,EnumActions)(THIS_ IFsrmCollection **actions) PURE;
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmFileScreenTemplateManager* This,
+        UINT *pctinfo);
 
-    /* IFsrmFileScreenTemplate methods */
-    STDMETHOD_(HRESULT,get_Name)(THIS_ BSTR *name) PURE;
-    STDMETHOD_(HRESULT,put_Name)(THIS_ BSTR name) PURE;
-    STDMETHOD_(HRESULT,CopyTemplate)(THIS_ BSTR fileScreenTemplateName) PURE;
-    STDMETHOD_(HRESULT,CommitAndUpdateDerived)(THIS_ FsrmCommitOptions commitOptions,FsrmTemplateApplyOptions applyOptions,IFsrmDerivedObjectsResult **derivedObjectsResult) PURE;
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmFileScreenTemplateManager* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmFileScreenTemplateManager* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmFileScreenTemplateManager* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmFileScreenTemplateManager methods ***/
+    HRESULT (STDMETHODCALLTYPE *CreateTemplate)(
+        IFsrmFileScreenTemplateManager* This,
+        IFsrmFileScreenTemplate **fileScreenTemplate);
+
+    HRESULT (STDMETHODCALLTYPE *GetTemplate)(
+        IFsrmFileScreenTemplateManager* This,
+        BSTR name,
+        IFsrmFileScreenTemplate **fileScreenTemplate);
+
+    HRESULT (STDMETHODCALLTYPE *EnumTemplates)(
+        IFsrmFileScreenTemplateManager* This,
+        FsrmEnumOptions options,
+        IFsrmCommittableCollection **fileScreenTemplates);
+
+    HRESULT (STDMETHODCALLTYPE *ExportTemplates)(
+        IFsrmFileScreenTemplateManager* This,
+        VARIANT *fileScreenTemplateNamesArray,
+        BSTR *serializedFileScreenTemplates);
+
+    HRESULT (STDMETHODCALLTYPE *ImportTemplates)(
+        IFsrmFileScreenTemplateManager* This,
+        BSTR serializedFileScreenTemplates,
+        VARIANT *fileScreenTemplateNamesArray,
+        IFsrmCommittableCollection **fileScreenTemplates);
 
     END_INTERFACE
+} IFsrmFileScreenTemplateManagerVtbl;
+interface IFsrmFileScreenTemplateManager {
+    CONST_VTBL IFsrmFileScreenTemplateManagerVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
-#define IFsrmFileScreenTemplate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IFsrmFileScreenTemplate_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IFsrmFileScreenTemplate_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmFileScreenTemplate_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IFsrmFileScreenTemplate_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IFsrmFileScreenTemplate_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IFsrmFileScreenTemplate_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IFsrmFileScreenTemplate_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
-#define IFsrmFileScreenTemplate_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
-#define IFsrmFileScreenTemplate_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
-#define IFsrmFileScreenTemplate_Delete() (This)->lpVtbl->Delete(This)
-#define IFsrmFileScreenTemplate_Commit() (This)->lpVtbl->Commit(This)
-#define IFsrmFileScreenTemplate_get_BlockedFileGroups(This,blockList) (This)->lpVtbl->get_BlockedFileGroups(This,blockList)
-#define IFsrmFileScreenTemplate_put_BlockedFileGroups(This,blockList) (This)->lpVtbl->put_BlockedFileGroups(This,blockList)
-#define IFsrmFileScreenTemplate_get_FileScreenFlags(This,fileScreenFlags) (This)->lpVtbl->get_FileScreenFlags(This,fileScreenFlags)
-#define IFsrmFileScreenTemplate_put_FileScreenFlags(This,fileScreenFlags) (This)->lpVtbl->put_FileScreenFlags(This,fileScreenFlags)
-#define IFsrmFileScreenTemplate_get_UserSid(This,userSid) (This)->lpVtbl->get_UserSid(This,userSid)
-#define IFsrmFileScreenTemplate_get_UserAccount(This,userAccount) (This)->lpVtbl->get_UserAccount(This,userAccount)
-#define IFsrmFileScreenTemplate_CreateAction(This,actionType,action) (This)->lpVtbl->CreateAction(This,actionType,action)
-#define IFsrmFileScreenTemplate_EnumActions(This,actions) (This)->lpVtbl->EnumActions(This,actions)
-#define IFsrmFileScreenTemplate_get_Name(This,name) (This)->lpVtbl->get_Name(This,name)
-#define IFsrmFileScreenTemplate_put_Name(This,name) (This)->lpVtbl->put_Name(This,name)
-#define IFsrmFileScreenTemplate_CopyTemplate(This,fileScreenTemplateName) (This)->lpVtbl->CopyTemplate(This,fileScreenTemplateName)
-#define IFsrmFileScreenTemplate_CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult) (This)->lpVtbl->CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmFileScreenTemplateImported
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IFsrmFileScreenTemplateImported,IFsrmFileScreenTemplate)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
-
-    /* IFsrmObject methods */
-    STDMETHOD_(HRESULT,get_Id)(THIS_ FSRM_OBJECT_ID *id) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *description) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR description) PURE;
-    STDMETHOD_(HRESULT,Delete)(THIS) PURE;
-    STDMETHOD_(HRESULT,Commit)(THIS) PURE;
-
-    /* IFsrmFileScreenBase methods */
-    STDMETHOD_(HRESULT,get_BlockedFileGroups)(THIS_ IFsrmMutableCollection **blockList) PURE;
-    STDMETHOD_(HRESULT,put_BlockedFileGroups)(THIS_ IFsrmMutableCollection *blockList) PURE;
-    STDMETHOD_(HRESULT,get_FileScreenFlags)(THIS_ __LONG32 *fileScreenFlags) PURE;
-    STDMETHOD_(HRESULT,put_FileScreenFlags)(THIS_ __LONG32 fileScreenFlags) PURE;
-    STDMETHOD_(HRESULT,get_UserSid)(THIS_ BSTR *userSid) PURE;
-    STDMETHOD_(HRESULT,get_UserAccount)(THIS_ BSTR *userAccount) PURE;
-    STDMETHOD_(HRESULT,CreateAction)(THIS_ FsrmActionType actionType,IFsrmAction **action) PURE;
-    STDMETHOD_(HRESULT,EnumActions)(THIS_ IFsrmCollection **actions) PURE;
-
-    /* IFsrmFileScreenTemplate methods */
-    STDMETHOD_(HRESULT,get_Name)(THIS_ BSTR *name) PURE;
-    STDMETHOD_(HRESULT,put_Name)(THIS_ BSTR name) PURE;
-    STDMETHOD_(HRESULT,CopyTemplate)(THIS_ BSTR fileScreenTemplateName) PURE;
-    STDMETHOD_(HRESULT,CommitAndUpdateDerived)(THIS_ FsrmCommitOptions commitOptions,FsrmTemplateApplyOptions applyOptions,IFsrmDerivedObjectsResult **derivedObjectsResult) PURE;
-
-    /* IFsrmFileScreenTemplateImported methods */
-    STDMETHOD_(HRESULT,get_OverwriteOnCommit)(THIS_ VARIANT_BOOL *overwrite) PURE;
-    STDMETHOD_(HRESULT,put_OverwriteOnCommit)(THIS_ VARIANT_BOOL overwrite) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IFsrmFileScreenTemplateImported_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IFsrmFileScreenTemplateImported_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IFsrmFileScreenTemplateImported_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmFileScreenTemplateImported_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IFsrmFileScreenTemplateImported_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IFsrmFileScreenTemplateImported_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IFsrmFileScreenTemplateImported_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define IFsrmFileScreenTemplateImported_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
-#define IFsrmFileScreenTemplateImported_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
-#define IFsrmFileScreenTemplateImported_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
-#define IFsrmFileScreenTemplateImported_Delete() (This)->lpVtbl->Delete(This)
-#define IFsrmFileScreenTemplateImported_Commit() (This)->lpVtbl->Commit(This)
-#define IFsrmFileScreenTemplateImported_get_BlockedFileGroups(This,blockList) (This)->lpVtbl->get_BlockedFileGroups(This,blockList)
-#define IFsrmFileScreenTemplateImported_put_BlockedFileGroups(This,blockList) (This)->lpVtbl->put_BlockedFileGroups(This,blockList)
-#define IFsrmFileScreenTemplateImported_get_FileScreenFlags(This,fileScreenFlags) (This)->lpVtbl->get_FileScreenFlags(This,fileScreenFlags)
-#define IFsrmFileScreenTemplateImported_put_FileScreenFlags(This,fileScreenFlags) (This)->lpVtbl->put_FileScreenFlags(This,fileScreenFlags)
-#define IFsrmFileScreenTemplateImported_get_UserSid(This,userSid) (This)->lpVtbl->get_UserSid(This,userSid)
-#define IFsrmFileScreenTemplateImported_get_UserAccount(This,userAccount) (This)->lpVtbl->get_UserAccount(This,userAccount)
-#define IFsrmFileScreenTemplateImported_CreateAction(This,actionType,action) (This)->lpVtbl->CreateAction(This,actionType,action)
-#define IFsrmFileScreenTemplateImported_EnumActions(This,actions) (This)->lpVtbl->EnumActions(This,actions)
-#define IFsrmFileScreenTemplateImported_get_Name(This,name) (This)->lpVtbl->get_Name(This,name)
-#define IFsrmFileScreenTemplateImported_put_Name(This,name) (This)->lpVtbl->put_Name(This,name)
-#define IFsrmFileScreenTemplateImported_CopyTemplate(This,fileScreenTemplateName) (This)->lpVtbl->CopyTemplate(This,fileScreenTemplateName)
-#define IFsrmFileScreenTemplateImported_CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult) (This)->lpVtbl->CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult)
-#define IFsrmFileScreenTemplateImported_get_OverwriteOnCommit(This,overwrite) (This)->lpVtbl->get_OverwriteOnCommit(This,overwrite)
-#define IFsrmFileScreenTemplateImported_put_OverwriteOnCommit(This,overwrite) (This)->lpVtbl->put_OverwriteOnCommit(This,overwrite)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmFileScreenTemplateManager
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IFsrmFileScreenTemplateManager,IDispatch)
-{
-    BEGIN_INTERFACE
-
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
-
-    /* IFsrmFileScreenTemplateManager methods */
-    STDMETHOD_(HRESULT,CreateTemplate)(THIS_ IFsrmFileScreenTemplate **fileScreenTemplate) PURE;
-    STDMETHOD_(HRESULT,GetTemplate)(THIS_ BSTR name,IFsrmFileScreenTemplate **fileScreenTemplate) PURE;
-    STDMETHOD_(HRESULT,EnumTemplates)(THIS_ FsrmEnumOptions options,IFsrmCommittableCollection **fileScreenTemplates) PURE;
-    STDMETHOD_(HRESULT,ExportTemplates)(THIS_ VARIANT *fileScreenTemplateNamesArray,BSTR *serializedFileScreenTemplates) PURE;
-    STDMETHOD_(HRESULT,ImportTemplates)(THIS_ BSTR serializedFileScreenTemplates,VARIANT *fileScreenTemplateNamesArray,IFsrmCommittableCollection **fileScreenTemplates) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IFsrmFileScreenTemplateManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IFsrmFileScreenTemplateManager_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IFsrmFileScreenTemplateManager_Release(This) (This)->lpVtbl->Release(This)
-#define IFsrmFileScreenTemplateImported_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define IFsrmFileScreenTemplateImported_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define IFsrmFileScreenTemplateImported_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define IFsrmFileScreenTemplateImported_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IDispatch methods ***/
+#define IFsrmFileScreenTemplateManager_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmFileScreenTemplateManager_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmFileScreenTemplateManager_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmFileScreenTemplateManager_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmFileScreenTemplateManager methods ***/
 #define IFsrmFileScreenTemplateManager_CreateTemplate(This,fileScreenTemplate) (This)->lpVtbl->CreateTemplate(This,fileScreenTemplate)
 #define IFsrmFileScreenTemplateManager_GetTemplate(This,name,fileScreenTemplate) (This)->lpVtbl->GetTemplate(This,name,fileScreenTemplate)
 #define IFsrmFileScreenTemplateManager_EnumTemplates(This,options,fileScreenTemplates) (This)->lpVtbl->EnumTemplates(This,options,fileScreenTemplates)
 #define IFsrmFileScreenTemplateManager_ExportTemplates(This,fileScreenTemplateNamesArray,serializedFileScreenTemplates) (This)->lpVtbl->ExportTemplates(This,fileScreenTemplateNamesArray,serializedFileScreenTemplates)
 #define IFsrmFileScreenTemplateManager_ImportTemplates(This,serializedFileScreenTemplates,fileScreenTemplateNamesArray,fileScreenTemplates) (This)->lpVtbl->ImportTemplates(This,serializedFileScreenTemplates,fileScreenTemplateNamesArray,fileScreenTemplates)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IFsrmFileScreen
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateManager_QueryInterface(IFsrmFileScreenTemplateManager* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmFileScreenTemplateManager_AddRef(IFsrmFileScreenTemplateManager* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmFileScreenTemplateManager_Release(IFsrmFileScreenTemplateManager* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateManager_GetTypeInfoCount(IFsrmFileScreenTemplateManager* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateManager_GetTypeInfo(IFsrmFileScreenTemplateManager* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateManager_GetIDsOfNames(IFsrmFileScreenTemplateManager* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateManager_Invoke(IFsrmFileScreenTemplateManager* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmFileScreenTemplateManager methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateManager_CreateTemplate(IFsrmFileScreenTemplateManager* This,IFsrmFileScreenTemplate **fileScreenTemplate) {
+    return This->lpVtbl->CreateTemplate(This,fileScreenTemplate);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateManager_GetTemplate(IFsrmFileScreenTemplateManager* This,BSTR name,IFsrmFileScreenTemplate **fileScreenTemplate) {
+    return This->lpVtbl->GetTemplate(This,name,fileScreenTemplate);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateManager_EnumTemplates(IFsrmFileScreenTemplateManager* This,FsrmEnumOptions options,IFsrmCommittableCollection **fileScreenTemplates) {
+    return This->lpVtbl->EnumTemplates(This,options,fileScreenTemplates);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateManager_ExportTemplates(IFsrmFileScreenTemplateManager* This,VARIANT *fileScreenTemplateNamesArray,BSTR *serializedFileScreenTemplates) {
+    return This->lpVtbl->ExportTemplates(This,fileScreenTemplateNamesArray,serializedFileScreenTemplates);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateManager_ImportTemplates(IFsrmFileScreenTemplateManager* This,BSTR serializedFileScreenTemplates,VARIANT *fileScreenTemplateNamesArray,IFsrmCommittableCollection **fileScreenTemplates) {
+    return This->lpVtbl->ImportTemplates(This,serializedFileScreenTemplates,fileScreenTemplateNamesArray,fileScreenTemplates);
+}
 #endif
-DECLARE_INTERFACE_(IFsrmFileScreen,IFsrmFileScreenBase)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenTemplateManager_CreateTemplate_Proxy(
+    IFsrmFileScreenTemplateManager* This,
+    IFsrmFileScreenTemplate **fileScreenTemplate);
+void __RPC_STUB IFsrmFileScreenTemplateManager_CreateTemplate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenTemplateManager_GetTemplate_Proxy(
+    IFsrmFileScreenTemplateManager* This,
+    BSTR name,
+    IFsrmFileScreenTemplate **fileScreenTemplate);
+void __RPC_STUB IFsrmFileScreenTemplateManager_GetTemplate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenTemplateManager_EnumTemplates_Proxy(
+    IFsrmFileScreenTemplateManager* This,
+    FsrmEnumOptions options,
+    IFsrmCommittableCollection **fileScreenTemplates);
+void __RPC_STUB IFsrmFileScreenTemplateManager_EnumTemplates_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenTemplateManager_ExportTemplates_Proxy(
+    IFsrmFileScreenTemplateManager* This,
+    VARIANT *fileScreenTemplateNamesArray,
+    BSTR *serializedFileScreenTemplates);
+void __RPC_STUB IFsrmFileScreenTemplateManager_ExportTemplates_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenTemplateManager_ImportTemplates_Proxy(
+    IFsrmFileScreenTemplateManager* This,
+    BSTR serializedFileScreenTemplates,
+    VARIANT *fileScreenTemplateNamesArray,
+    IFsrmCommittableCollection **fileScreenTemplates);
+void __RPC_STUB IFsrmFileScreenTemplateManager_ImportTemplates_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmFileScreenTemplateManager_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmFileGroup interface
+ */
+#ifndef __IFsrmFileGroup_INTERFACE_DEFINED__
+#define __IFsrmFileGroup_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmFileGroup, 0x8dd04909, 0x0e34, 0x4d55, 0xaf,0xaa, 0x89,0xe1,0xf1,0xa1,0xbb,0xb9);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("8dd04909-0e34-4d55-afaa-89e1f1a1bbb9")
+IFsrmFileGroup : public IFsrmObject
 {
+    virtual HRESULT STDMETHODCALLTYPE get_Name(
+        BSTR *name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Name(
+        BSTR name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Members(
+        IFsrmMutableCollection **members) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Members(
+        IFsrmMutableCollection *members) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_NonMembers(
+        IFsrmMutableCollection **nonMembers) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_NonMembers(
+        IFsrmMutableCollection *nonMembers) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmFileGroup, 0x8dd04909, 0x0e34, 0x4d55, 0xaf,0xaa, 0x89,0xe1,0xf1,0xa1,0xbb,0xb9)
+#endif
+#else
+typedef struct IFsrmFileGroupVtbl {
     BEGIN_INTERFACE
 
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmFileGroup* This,
+        REFIID riid,
+        void **ppvObject);
 
-    /* IDispatch methods */
-    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ unsigned int FAR*  pctinfo) PURE;
-    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ unsigned int  iTInfo,LCID  lcid,ITypeInfo FAR* FAR*  ppTInfo) PURE;
-    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID  riid,OLECHAR FAR* FAR*  rgszNames,unsigned int  cNames,LCID   lcid,DISPID FAR*  rgDispId) PURE;
-    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID  dispIdMember,REFIID  riid,LCID  lcid,WORD  wFlags,DISPPARAMS FAR*  pDispParams,VARIANT FAR*  pVarResult,EXCEPINFO FAR*  pExcepInfo,unsigned int FAR*  puArgErr) PURE;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmFileGroup* This);
 
-    /* IFsrmObject methods */
-    STDMETHOD_(HRESULT,get_Id)(THIS_ FSRM_OBJECT_ID *id) PURE;
-    STDMETHOD_(HRESULT,get_Description)(THIS_ BSTR *description) PURE;
-    STDMETHOD_(HRESULT,put_Description)(THIS_ BSTR description) PURE;
-    STDMETHOD_(HRESULT,Delete)(THIS) PURE;
-    STDMETHOD_(HRESULT,Commit)(THIS) PURE;
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmFileGroup* This);
 
-    /* IFsrmFileScreenBase methods */
-    STDMETHOD_(HRESULT,get_BlockedFileGroups)(THIS_ IFsrmMutableCollection **blockList) PURE;
-    STDMETHOD_(HRESULT,put_BlockedFileGroups)(THIS_ IFsrmMutableCollection *blockList) PURE;
-    STDMETHOD_(HRESULT,get_FileScreenFlags)(THIS_ __LONG32 *fileScreenFlags) PURE;
-    STDMETHOD_(HRESULT,put_FileScreenFlags)(THIS_ __LONG32 fileScreenFlags) PURE;
-    STDMETHOD_(HRESULT,get_UserSid)(THIS_ BSTR *userSid) PURE;
-    STDMETHOD_(HRESULT,get_UserAccount)(THIS_ BSTR *userAccount) PURE;
-    STDMETHOD_(HRESULT,CreateAction)(THIS_ FsrmActionType actionType,IFsrmAction **action) PURE;
-    STDMETHOD_(HRESULT,EnumActions)(THIS_ IFsrmCollection **actions) PURE;
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmFileGroup* This,
+        UINT *pctinfo);
 
-    /* IFsrmFileScreen methods */
-    STDMETHOD_(HRESULT,get_Path)(THIS_ BSTR *path) PURE;
-    STDMETHOD_(HRESULT,get_SourceTemplateName)(THIS_ BSTR *fileScreenTemplateName) PURE;
-    STDMETHOD_(HRESULT,get_MatchesSourceTemplate)(THIS_ VARIANT_BOOL *matches) PURE;
-    STDMETHOD_(HRESULT,ApplyTemplate)(THIS_ BSTR fileScreenTemplateName) PURE;
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmFileGroup* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmFileGroup* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmFileGroup* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IFsrmFileGroup* This,
+        FSRM_OBJECT_ID *id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IFsrmFileGroup* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IFsrmFileGroup* This,
+        BSTR description);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmFileGroup* This);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IFsrmFileGroup* This);
+
+    /*** IFsrmFileGroup methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IFsrmFileGroup* This,
+        BSTR *name);
+
+    HRESULT (STDMETHODCALLTYPE *put_Name)(
+        IFsrmFileGroup* This,
+        BSTR name);
+
+    HRESULT (STDMETHODCALLTYPE *get_Members)(
+        IFsrmFileGroup* This,
+        IFsrmMutableCollection **members);
+
+    HRESULT (STDMETHODCALLTYPE *put_Members)(
+        IFsrmFileGroup* This,
+        IFsrmMutableCollection *members);
+
+    HRESULT (STDMETHODCALLTYPE *get_NonMembers)(
+        IFsrmFileGroup* This,
+        IFsrmMutableCollection **nonMembers);
+
+    HRESULT (STDMETHODCALLTYPE *put_NonMembers)(
+        IFsrmFileGroup* This,
+        IFsrmMutableCollection *nonMembers);
 
     END_INTERFACE
+} IFsrmFileGroupVtbl;
+interface IFsrmFileGroup {
+    CONST_VTBL IFsrmFileGroupVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmFileGroup_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmFileGroup_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmFileGroup_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmFileGroup_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmFileGroup_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmFileGroup_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmFileGroup_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmObject methods ***/
+#define IFsrmFileGroup_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
+#define IFsrmFileGroup_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
+#define IFsrmFileGroup_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
+#define IFsrmFileGroup_Delete(This) (This)->lpVtbl->Delete(This)
+#define IFsrmFileGroup_Commit(This) (This)->lpVtbl->Commit(This)
+/*** IFsrmFileGroup methods ***/
+#define IFsrmFileGroup_get_Name(This,name) (This)->lpVtbl->get_Name(This,name)
+#define IFsrmFileGroup_put_Name(This,name) (This)->lpVtbl->put_Name(This,name)
+#define IFsrmFileGroup_get_Members(This,members) (This)->lpVtbl->get_Members(This,members)
+#define IFsrmFileGroup_put_Members(This,members) (This)->lpVtbl->put_Members(This,members)
+#define IFsrmFileGroup_get_NonMembers(This,nonMembers) (This)->lpVtbl->get_NonMembers(This,nonMembers)
+#define IFsrmFileGroup_put_NonMembers(This,nonMembers) (This)->lpVtbl->put_NonMembers(This,nonMembers)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmFileGroup_QueryInterface(IFsrmFileGroup* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmFileGroup_AddRef(IFsrmFileGroup* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmFileGroup_Release(IFsrmFileGroup* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmFileGroup_GetTypeInfoCount(IFsrmFileGroup* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmFileGroup_GetTypeInfo(IFsrmFileGroup* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmFileGroup_GetIDsOfNames(IFsrmFileGroup* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmFileGroup_Invoke(IFsrmFileGroup* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmObject methods ***/
+static FORCEINLINE HRESULT IFsrmFileGroup_get_Id(IFsrmFileGroup* This,FSRM_OBJECT_ID *id) {
+    return This->lpVtbl->get_Id(This,id);
+}
+static FORCEINLINE HRESULT IFsrmFileGroup_get_Description(IFsrmFileGroup* This,BSTR *description) {
+    return This->lpVtbl->get_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmFileGroup_put_Description(IFsrmFileGroup* This,BSTR description) {
+    return This->lpVtbl->put_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmFileGroup_Delete(IFsrmFileGroup* This) {
+    return This->lpVtbl->Delete(This);
+}
+static FORCEINLINE HRESULT IFsrmFileGroup_Commit(IFsrmFileGroup* This) {
+    return This->lpVtbl->Commit(This);
+}
+/*** IFsrmFileGroup methods ***/
+static FORCEINLINE HRESULT IFsrmFileGroup_get_Name(IFsrmFileGroup* This,BSTR *name) {
+    return This->lpVtbl->get_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmFileGroup_put_Name(IFsrmFileGroup* This,BSTR name) {
+    return This->lpVtbl->put_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmFileGroup_get_Members(IFsrmFileGroup* This,IFsrmMutableCollection **members) {
+    return This->lpVtbl->get_Members(This,members);
+}
+static FORCEINLINE HRESULT IFsrmFileGroup_put_Members(IFsrmFileGroup* This,IFsrmMutableCollection *members) {
+    return This->lpVtbl->put_Members(This,members);
+}
+static FORCEINLINE HRESULT IFsrmFileGroup_get_NonMembers(IFsrmFileGroup* This,IFsrmMutableCollection **nonMembers) {
+    return This->lpVtbl->get_NonMembers(This,nonMembers);
+}
+static FORCEINLINE HRESULT IFsrmFileGroup_put_NonMembers(IFsrmFileGroup* This,IFsrmMutableCollection *nonMembers) {
+    return This->lpVtbl->put_NonMembers(This,nonMembers);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmFileGroup_get_Name_Proxy(
+    IFsrmFileGroup* This,
+    BSTR *name);
+void __RPC_STUB IFsrmFileGroup_get_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileGroup_put_Name_Proxy(
+    IFsrmFileGroup* This,
+    BSTR name);
+void __RPC_STUB IFsrmFileGroup_put_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileGroup_get_Members_Proxy(
+    IFsrmFileGroup* This,
+    IFsrmMutableCollection **members);
+void __RPC_STUB IFsrmFileGroup_get_Members_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileGroup_put_Members_Proxy(
+    IFsrmFileGroup* This,
+    IFsrmMutableCollection *members);
+void __RPC_STUB IFsrmFileGroup_put_Members_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileGroup_get_NonMembers_Proxy(
+    IFsrmFileGroup* This,
+    IFsrmMutableCollection **nonMembers);
+void __RPC_STUB IFsrmFileGroup_get_NonMembers_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileGroup_put_NonMembers_Proxy(
+    IFsrmFileGroup* This,
+    IFsrmMutableCollection *nonMembers);
+void __RPC_STUB IFsrmFileGroup_put_NonMembers_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmFileGroup_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmFileScreenBase interface
+ */
+#ifndef __IFsrmFileScreenBase_INTERFACE_DEFINED__
+#define __IFsrmFileScreenBase_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmFileScreenBase, 0xf3637e80, 0x5b22, 0x4a2b, 0xa6,0x37, 0xbb,0xb6,0x42,0xb4,0x1c,0xfc);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f3637e80-5b22-4a2b-a637-bbb642b41cfc")
+IFsrmFileScreenBase : public IFsrmObject
+{
+    virtual HRESULT STDMETHODCALLTYPE get_BlockedFileGroups(
+        IFsrmMutableCollection **blockList) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_BlockedFileGroups(
+        IFsrmMutableCollection *blockList) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_FileScreenFlags(
+        LONG *fileScreenFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_FileScreenFlags(
+        LONG fileScreenFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateAction(
+        FsrmActionType actionType,
+        IFsrmAction **action) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumActions(
+        IFsrmCollection **actions) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmFileScreenBase, 0xf3637e80, 0x5b22, 0x4a2b, 0xa6,0x37, 0xbb,0xb6,0x42,0xb4,0x1c,0xfc)
+#endif
+#else
+typedef struct IFsrmFileScreenBaseVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmFileScreenBase* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmFileScreenBase* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmFileScreenBase* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmFileScreenBase* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmFileScreenBase* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmFileScreenBase* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmFileScreenBase* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IFsrmFileScreenBase* This,
+        FSRM_OBJECT_ID *id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IFsrmFileScreenBase* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IFsrmFileScreenBase* This,
+        BSTR description);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmFileScreenBase* This);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IFsrmFileScreenBase* This);
+
+    /*** IFsrmFileScreenBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_BlockedFileGroups)(
+        IFsrmFileScreenBase* This,
+        IFsrmMutableCollection **blockList);
+
+    HRESULT (STDMETHODCALLTYPE *put_BlockedFileGroups)(
+        IFsrmFileScreenBase* This,
+        IFsrmMutableCollection *blockList);
+
+    HRESULT (STDMETHODCALLTYPE *get_FileScreenFlags)(
+        IFsrmFileScreenBase* This,
+        LONG *fileScreenFlags);
+
+    HRESULT (STDMETHODCALLTYPE *put_FileScreenFlags)(
+        IFsrmFileScreenBase* This,
+        LONG fileScreenFlags);
+
+    HRESULT (STDMETHODCALLTYPE *CreateAction)(
+        IFsrmFileScreenBase* This,
+        FsrmActionType actionType,
+        IFsrmAction **action);
+
+    HRESULT (STDMETHODCALLTYPE *EnumActions)(
+        IFsrmFileScreenBase* This,
+        IFsrmCollection **actions);
+
+    END_INTERFACE
+} IFsrmFileScreenBaseVtbl;
+interface IFsrmFileScreenBase {
+    CONST_VTBL IFsrmFileScreenBaseVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmFileScreenBase_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmFileScreenBase_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmFileScreenBase_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmFileScreenBase_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmFileScreenBase_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmFileScreenBase_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmFileScreenBase_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmObject methods ***/
+#define IFsrmFileScreenBase_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
+#define IFsrmFileScreenBase_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
+#define IFsrmFileScreenBase_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
+#define IFsrmFileScreenBase_Delete(This) (This)->lpVtbl->Delete(This)
+#define IFsrmFileScreenBase_Commit(This) (This)->lpVtbl->Commit(This)
+/*** IFsrmFileScreenBase methods ***/
+#define IFsrmFileScreenBase_get_BlockedFileGroups(This,blockList) (This)->lpVtbl->get_BlockedFileGroups(This,blockList)
+#define IFsrmFileScreenBase_put_BlockedFileGroups(This,blockList) (This)->lpVtbl->put_BlockedFileGroups(This,blockList)
+#define IFsrmFileScreenBase_get_FileScreenFlags(This,fileScreenFlags) (This)->lpVtbl->get_FileScreenFlags(This,fileScreenFlags)
+#define IFsrmFileScreenBase_put_FileScreenFlags(This,fileScreenFlags) (This)->lpVtbl->put_FileScreenFlags(This,fileScreenFlags)
+#define IFsrmFileScreenBase_CreateAction(This,actionType,action) (This)->lpVtbl->CreateAction(This,actionType,action)
+#define IFsrmFileScreenBase_EnumActions(This,actions) (This)->lpVtbl->EnumActions(This,actions)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenBase_QueryInterface(IFsrmFileScreenBase* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmFileScreenBase_AddRef(IFsrmFileScreenBase* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmFileScreenBase_Release(IFsrmFileScreenBase* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenBase_GetTypeInfoCount(IFsrmFileScreenBase* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenBase_GetTypeInfo(IFsrmFileScreenBase* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenBase_GetIDsOfNames(IFsrmFileScreenBase* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenBase_Invoke(IFsrmFileScreenBase* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmObject methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenBase_get_Id(IFsrmFileScreenBase* This,FSRM_OBJECT_ID *id) {
+    return This->lpVtbl->get_Id(This,id);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenBase_get_Description(IFsrmFileScreenBase* This,BSTR *description) {
+    return This->lpVtbl->get_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenBase_put_Description(IFsrmFileScreenBase* This,BSTR description) {
+    return This->lpVtbl->put_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenBase_Delete(IFsrmFileScreenBase* This) {
+    return This->lpVtbl->Delete(This);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenBase_Commit(IFsrmFileScreenBase* This) {
+    return This->lpVtbl->Commit(This);
+}
+/*** IFsrmFileScreenBase methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenBase_get_BlockedFileGroups(IFsrmFileScreenBase* This,IFsrmMutableCollection **blockList) {
+    return This->lpVtbl->get_BlockedFileGroups(This,blockList);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenBase_put_BlockedFileGroups(IFsrmFileScreenBase* This,IFsrmMutableCollection *blockList) {
+    return This->lpVtbl->put_BlockedFileGroups(This,blockList);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenBase_get_FileScreenFlags(IFsrmFileScreenBase* This,LONG *fileScreenFlags) {
+    return This->lpVtbl->get_FileScreenFlags(This,fileScreenFlags);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenBase_put_FileScreenFlags(IFsrmFileScreenBase* This,LONG fileScreenFlags) {
+    return This->lpVtbl->put_FileScreenFlags(This,fileScreenFlags);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenBase_CreateAction(IFsrmFileScreenBase* This,FsrmActionType actionType,IFsrmAction **action) {
+    return This->lpVtbl->CreateAction(This,actionType,action);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenBase_EnumActions(IFsrmFileScreenBase* This,IFsrmCollection **actions) {
+    return This->lpVtbl->EnumActions(This,actions);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenBase_get_BlockedFileGroups_Proxy(
+    IFsrmFileScreenBase* This,
+    IFsrmMutableCollection **blockList);
+void __RPC_STUB IFsrmFileScreenBase_get_BlockedFileGroups_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenBase_put_BlockedFileGroups_Proxy(
+    IFsrmFileScreenBase* This,
+    IFsrmMutableCollection *blockList);
+void __RPC_STUB IFsrmFileScreenBase_put_BlockedFileGroups_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenBase_get_FileScreenFlags_Proxy(
+    IFsrmFileScreenBase* This,
+    LONG *fileScreenFlags);
+void __RPC_STUB IFsrmFileScreenBase_get_FileScreenFlags_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenBase_put_FileScreenFlags_Proxy(
+    IFsrmFileScreenBase* This,
+    LONG fileScreenFlags);
+void __RPC_STUB IFsrmFileScreenBase_put_FileScreenFlags_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenBase_CreateAction_Proxy(
+    IFsrmFileScreenBase* This,
+    FsrmActionType actionType,
+    IFsrmAction **action);
+void __RPC_STUB IFsrmFileScreenBase_CreateAction_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenBase_EnumActions_Proxy(
+    IFsrmFileScreenBase* This,
+    IFsrmCollection **actions);
+void __RPC_STUB IFsrmFileScreenBase_EnumActions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmFileScreenBase_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmFileScreenException interface
+ */
+#ifndef __IFsrmFileScreenException_INTERFACE_DEFINED__
+#define __IFsrmFileScreenException_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmFileScreenException, 0xbee7ce02, 0xdf77, 0x4515, 0x93,0x89, 0x78,0xf0,0x1c,0x5a,0xfc,0x1a);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("bee7ce02-df77-4515-9389-78f01c5afc1a")
+IFsrmFileScreenException : public IFsrmObject
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Path(
+        BSTR *path) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_AllowedFileGroups(
+        IFsrmMutableCollection **allowList) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_AllowedFileGroups(
+        IFsrmMutableCollection *allowList) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmFileScreenException, 0xbee7ce02, 0xdf77, 0x4515, 0x93,0x89, 0x78,0xf0,0x1c,0x5a,0xfc,0x1a)
+#endif
+#else
+typedef struct IFsrmFileScreenExceptionVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmFileScreenException* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmFileScreenException* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmFileScreenException* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmFileScreenException* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmFileScreenException* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmFileScreenException* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmFileScreenException* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IFsrmFileScreenException* This,
+        FSRM_OBJECT_ID *id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IFsrmFileScreenException* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IFsrmFileScreenException* This,
+        BSTR description);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmFileScreenException* This);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IFsrmFileScreenException* This);
+
+    /*** IFsrmFileScreenException methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Path)(
+        IFsrmFileScreenException* This,
+        BSTR *path);
+
+    HRESULT (STDMETHODCALLTYPE *get_AllowedFileGroups)(
+        IFsrmFileScreenException* This,
+        IFsrmMutableCollection **allowList);
+
+    HRESULT (STDMETHODCALLTYPE *put_AllowedFileGroups)(
+        IFsrmFileScreenException* This,
+        IFsrmMutableCollection *allowList);
+
+    END_INTERFACE
+} IFsrmFileScreenExceptionVtbl;
+interface IFsrmFileScreenException {
+    CONST_VTBL IFsrmFileScreenExceptionVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmFileScreenException_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmFileScreenException_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmFileScreenException_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmFileScreenException_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmFileScreenException_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmFileScreenException_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmFileScreenException_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmObject methods ***/
+#define IFsrmFileScreenException_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
+#define IFsrmFileScreenException_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
+#define IFsrmFileScreenException_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
+#define IFsrmFileScreenException_Delete(This) (This)->lpVtbl->Delete(This)
+#define IFsrmFileScreenException_Commit(This) (This)->lpVtbl->Commit(This)
+/*** IFsrmFileScreenException methods ***/
+#define IFsrmFileScreenException_get_Path(This,path) (This)->lpVtbl->get_Path(This,path)
+#define IFsrmFileScreenException_get_AllowedFileGroups(This,allowList) (This)->lpVtbl->get_AllowedFileGroups(This,allowList)
+#define IFsrmFileScreenException_put_AllowedFileGroups(This,allowList) (This)->lpVtbl->put_AllowedFileGroups(This,allowList)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenException_QueryInterface(IFsrmFileScreenException* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmFileScreenException_AddRef(IFsrmFileScreenException* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmFileScreenException_Release(IFsrmFileScreenException* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenException_GetTypeInfoCount(IFsrmFileScreenException* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenException_GetTypeInfo(IFsrmFileScreenException* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenException_GetIDsOfNames(IFsrmFileScreenException* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenException_Invoke(IFsrmFileScreenException* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmObject methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenException_get_Id(IFsrmFileScreenException* This,FSRM_OBJECT_ID *id) {
+    return This->lpVtbl->get_Id(This,id);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenException_get_Description(IFsrmFileScreenException* This,BSTR *description) {
+    return This->lpVtbl->get_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenException_put_Description(IFsrmFileScreenException* This,BSTR description) {
+    return This->lpVtbl->put_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenException_Delete(IFsrmFileScreenException* This) {
+    return This->lpVtbl->Delete(This);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenException_Commit(IFsrmFileScreenException* This) {
+    return This->lpVtbl->Commit(This);
+}
+/*** IFsrmFileScreenException methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenException_get_Path(IFsrmFileScreenException* This,BSTR *path) {
+    return This->lpVtbl->get_Path(This,path);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenException_get_AllowedFileGroups(IFsrmFileScreenException* This,IFsrmMutableCollection **allowList) {
+    return This->lpVtbl->get_AllowedFileGroups(This,allowList);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenException_put_AllowedFileGroups(IFsrmFileScreenException* This,IFsrmMutableCollection *allowList) {
+    return This->lpVtbl->put_AllowedFileGroups(This,allowList);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenException_get_Path_Proxy(
+    IFsrmFileScreenException* This,
+    BSTR *path);
+void __RPC_STUB IFsrmFileScreenException_get_Path_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenException_get_AllowedFileGroups_Proxy(
+    IFsrmFileScreenException* This,
+    IFsrmMutableCollection **allowList);
+void __RPC_STUB IFsrmFileScreenException_get_AllowedFileGroups_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenException_put_AllowedFileGroups_Proxy(
+    IFsrmFileScreenException* This,
+    IFsrmMutableCollection *allowList);
+void __RPC_STUB IFsrmFileScreenException_put_AllowedFileGroups_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmFileScreenException_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmFileScreen interface
+ */
+#ifndef __IFsrmFileScreen_INTERFACE_DEFINED__
+#define __IFsrmFileScreen_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmFileScreen, 0x5f6325d3, 0xce88, 0x4733, 0x84,0xc1, 0x2d,0x6a,0xef,0xc5,0xea,0x07);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("5f6325d3-ce88-4733-84c1-2d6aefc5ea07")
+IFsrmFileScreen : public IFsrmFileScreenBase
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Path(
+        BSTR *path) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SourceTemplateName(
+        BSTR *fileScreenTemplateName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MatchesSourceTemplate(
+        VARIANT_BOOL *matches) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_UserSid(
+        BSTR *userSid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_UserAccount(
+        BSTR *userAccount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ApplyTemplate(
+        BSTR fileScreenTemplateName) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmFileScreen, 0x5f6325d3, 0xce88, 0x4733, 0x84,0xc1, 0x2d,0x6a,0xef,0xc5,0xea,0x07)
+#endif
+#else
+typedef struct IFsrmFileScreenVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmFileScreen* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmFileScreen* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmFileScreen* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmFileScreen* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmFileScreen* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmFileScreen* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmFileScreen* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IFsrmFileScreen* This,
+        FSRM_OBJECT_ID *id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IFsrmFileScreen* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IFsrmFileScreen* This,
+        BSTR description);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmFileScreen* This);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IFsrmFileScreen* This);
+
+    /*** IFsrmFileScreenBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_BlockedFileGroups)(
+        IFsrmFileScreen* This,
+        IFsrmMutableCollection **blockList);
+
+    HRESULT (STDMETHODCALLTYPE *put_BlockedFileGroups)(
+        IFsrmFileScreen* This,
+        IFsrmMutableCollection *blockList);
+
+    HRESULT (STDMETHODCALLTYPE *get_FileScreenFlags)(
+        IFsrmFileScreen* This,
+        LONG *fileScreenFlags);
+
+    HRESULT (STDMETHODCALLTYPE *put_FileScreenFlags)(
+        IFsrmFileScreen* This,
+        LONG fileScreenFlags);
+
+    HRESULT (STDMETHODCALLTYPE *CreateAction)(
+        IFsrmFileScreen* This,
+        FsrmActionType actionType,
+        IFsrmAction **action);
+
+    HRESULT (STDMETHODCALLTYPE *EnumActions)(
+        IFsrmFileScreen* This,
+        IFsrmCollection **actions);
+
+    /*** IFsrmFileScreen methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Path)(
+        IFsrmFileScreen* This,
+        BSTR *path);
+
+    HRESULT (STDMETHODCALLTYPE *get_SourceTemplateName)(
+        IFsrmFileScreen* This,
+        BSTR *fileScreenTemplateName);
+
+    HRESULT (STDMETHODCALLTYPE *get_MatchesSourceTemplate)(
+        IFsrmFileScreen* This,
+        VARIANT_BOOL *matches);
+
+    HRESULT (STDMETHODCALLTYPE *get_UserSid)(
+        IFsrmFileScreen* This,
+        BSTR *userSid);
+
+    HRESULT (STDMETHODCALLTYPE *get_UserAccount)(
+        IFsrmFileScreen* This,
+        BSTR *userAccount);
+
+    HRESULT (STDMETHODCALLTYPE *ApplyTemplate)(
+        IFsrmFileScreen* This,
+        BSTR fileScreenTemplateName);
+
+    END_INTERFACE
+} IFsrmFileScreenVtbl;
+interface IFsrmFileScreen {
+    CONST_VTBL IFsrmFileScreenVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IFsrmFileScreen_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IFsrmFileScreen_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IFsrmFileScreen_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
 #define IFsrmFileScreen_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
 #define IFsrmFileScreen_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
 #define IFsrmFileScreen_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
 #define IFsrmFileScreen_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmObject methods ***/
 #define IFsrmFileScreen_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
 #define IFsrmFileScreen_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
 #define IFsrmFileScreen_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
-#define IFsrmFileScreen_Delete() (This)->lpVtbl->Delete(This)
-#define IFsrmFileScreen_Commit() (This)->lpVtbl->Commit(This)
+#define IFsrmFileScreen_Delete(This) (This)->lpVtbl->Delete(This)
+#define IFsrmFileScreen_Commit(This) (This)->lpVtbl->Commit(This)
+/*** IFsrmFileScreenBase methods ***/
 #define IFsrmFileScreen_get_BlockedFileGroups(This,blockList) (This)->lpVtbl->get_BlockedFileGroups(This,blockList)
 #define IFsrmFileScreen_put_BlockedFileGroups(This,blockList) (This)->lpVtbl->put_BlockedFileGroups(This,blockList)
 #define IFsrmFileScreen_get_FileScreenFlags(This,fileScreenFlags) (This)->lpVtbl->get_FileScreenFlags(This,fileScreenFlags)
 #define IFsrmFileScreen_put_FileScreenFlags(This,fileScreenFlags) (This)->lpVtbl->put_FileScreenFlags(This,fileScreenFlags)
-#define IFsrmFileScreen_get_UserSid(This,userSid) (This)->lpVtbl->get_UserSid(This,userSid)
-#define IFsrmFileScreen_get_UserAccount(This,userAccount) (This)->lpVtbl->get_UserAccount(This,userAccount)
 #define IFsrmFileScreen_CreateAction(This,actionType,action) (This)->lpVtbl->CreateAction(This,actionType,action)
 #define IFsrmFileScreen_EnumActions(This,actions) (This)->lpVtbl->EnumActions(This,actions)
+/*** IFsrmFileScreen methods ***/
 #define IFsrmFileScreen_get_Path(This,path) (This)->lpVtbl->get_Path(This,path)
 #define IFsrmFileScreen_get_SourceTemplateName(This,fileScreenTemplateName) (This)->lpVtbl->get_SourceTemplateName(This,fileScreenTemplateName)
 #define IFsrmFileScreen_get_MatchesSourceTemplate(This,matches) (This)->lpVtbl->get_MatchesSourceTemplate(This,matches)
+#define IFsrmFileScreen_get_UserSid(This,userSid) (This)->lpVtbl->get_UserSid(This,userSid)
+#define IFsrmFileScreen_get_UserAccount(This,userAccount) (This)->lpVtbl->get_UserAccount(This,userAccount)
 #define IFsrmFileScreen_ApplyTemplate(This,fileScreenTemplateName) (This)->lpVtbl->ApplyTemplate(This,fileScreenTemplateName)
-#endif /*COBJMACROS*/
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreen_QueryInterface(IFsrmFileScreen* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmFileScreen_AddRef(IFsrmFileScreen* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmFileScreen_Release(IFsrmFileScreen* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreen_GetTypeInfoCount(IFsrmFileScreen* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_GetTypeInfo(IFsrmFileScreen* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_GetIDsOfNames(IFsrmFileScreen* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_Invoke(IFsrmFileScreen* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmObject methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreen_get_Id(IFsrmFileScreen* This,FSRM_OBJECT_ID *id) {
+    return This->lpVtbl->get_Id(This,id);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_get_Description(IFsrmFileScreen* This,BSTR *description) {
+    return This->lpVtbl->get_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_put_Description(IFsrmFileScreen* This,BSTR description) {
+    return This->lpVtbl->put_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_Delete(IFsrmFileScreen* This) {
+    return This->lpVtbl->Delete(This);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_Commit(IFsrmFileScreen* This) {
+    return This->lpVtbl->Commit(This);
+}
+/*** IFsrmFileScreenBase methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreen_get_BlockedFileGroups(IFsrmFileScreen* This,IFsrmMutableCollection **blockList) {
+    return This->lpVtbl->get_BlockedFileGroups(This,blockList);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_put_BlockedFileGroups(IFsrmFileScreen* This,IFsrmMutableCollection *blockList) {
+    return This->lpVtbl->put_BlockedFileGroups(This,blockList);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_get_FileScreenFlags(IFsrmFileScreen* This,LONG *fileScreenFlags) {
+    return This->lpVtbl->get_FileScreenFlags(This,fileScreenFlags);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_put_FileScreenFlags(IFsrmFileScreen* This,LONG fileScreenFlags) {
+    return This->lpVtbl->put_FileScreenFlags(This,fileScreenFlags);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_CreateAction(IFsrmFileScreen* This,FsrmActionType actionType,IFsrmAction **action) {
+    return This->lpVtbl->CreateAction(This,actionType,action);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_EnumActions(IFsrmFileScreen* This,IFsrmCollection **actions) {
+    return This->lpVtbl->EnumActions(This,actions);
+}
+/*** IFsrmFileScreen methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreen_get_Path(IFsrmFileScreen* This,BSTR *path) {
+    return This->lpVtbl->get_Path(This,path);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_get_SourceTemplateName(IFsrmFileScreen* This,BSTR *fileScreenTemplateName) {
+    return This->lpVtbl->get_SourceTemplateName(This,fileScreenTemplateName);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_get_MatchesSourceTemplate(IFsrmFileScreen* This,VARIANT_BOOL *matches) {
+    return This->lpVtbl->get_MatchesSourceTemplate(This,matches);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_get_UserSid(IFsrmFileScreen* This,BSTR *userSid) {
+    return This->lpVtbl->get_UserSid(This,userSid);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_get_UserAccount(IFsrmFileScreen* This,BSTR *userAccount) {
+    return This->lpVtbl->get_UserAccount(This,userAccount);
+}
+static FORCEINLINE HRESULT IFsrmFileScreen_ApplyTemplate(IFsrmFileScreen* This,BSTR fileScreenTemplateName) {
+    return This->lpVtbl->ApplyTemplate(This,fileScreenTemplateName);
+}
+#endif
+#endif
 
-#endif /*(_WIN32_WINNT >= 0x0600)*/
-#include <fsrmreports.h>
-#endif /*_INC_FSRMSCREEN*/
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmFileScreen_get_Path_Proxy(
+    IFsrmFileScreen* This,
+    BSTR *path);
+void __RPC_STUB IFsrmFileScreen_get_Path_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreen_get_SourceTemplateName_Proxy(
+    IFsrmFileScreen* This,
+    BSTR *fileScreenTemplateName);
+void __RPC_STUB IFsrmFileScreen_get_SourceTemplateName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreen_get_MatchesSourceTemplate_Proxy(
+    IFsrmFileScreen* This,
+    VARIANT_BOOL *matches);
+void __RPC_STUB IFsrmFileScreen_get_MatchesSourceTemplate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreen_get_UserSid_Proxy(
+    IFsrmFileScreen* This,
+    BSTR *userSid);
+void __RPC_STUB IFsrmFileScreen_get_UserSid_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreen_get_UserAccount_Proxy(
+    IFsrmFileScreen* This,
+    BSTR *userAccount);
+void __RPC_STUB IFsrmFileScreen_get_UserAccount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreen_ApplyTemplate_Proxy(
+    IFsrmFileScreen* This,
+    BSTR fileScreenTemplateName);
+void __RPC_STUB IFsrmFileScreen_ApplyTemplate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmFileScreen_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmFileGroupImported interface
+ */
+#ifndef __IFsrmFileGroupImported_INTERFACE_DEFINED__
+#define __IFsrmFileGroupImported_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmFileGroupImported, 0xad55f10b, 0x5f11, 0x4be7, 0x94,0xef, 0xd9,0xee,0x2e,0x47,0x0d,0xed);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ad55f10b-5f11-4be7-94ef-d9ee2e470ded")
+IFsrmFileGroupImported : public IFsrmFileGroup
+{
+    virtual HRESULT STDMETHODCALLTYPE get_OverwriteOnCommit(
+        VARIANT_BOOL *overwrite) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_OverwriteOnCommit(
+        VARIANT_BOOL overwrite) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmFileGroupImported, 0xad55f10b, 0x5f11, 0x4be7, 0x94,0xef, 0xd9,0xee,0x2e,0x47,0x0d,0xed)
+#endif
+#else
+typedef struct IFsrmFileGroupImportedVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmFileGroupImported* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmFileGroupImported* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmFileGroupImported* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmFileGroupImported* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmFileGroupImported* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmFileGroupImported* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmFileGroupImported* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IFsrmFileGroupImported* This,
+        FSRM_OBJECT_ID *id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IFsrmFileGroupImported* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IFsrmFileGroupImported* This,
+        BSTR description);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmFileGroupImported* This);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IFsrmFileGroupImported* This);
+
+    /*** IFsrmFileGroup methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IFsrmFileGroupImported* This,
+        BSTR *name);
+
+    HRESULT (STDMETHODCALLTYPE *put_Name)(
+        IFsrmFileGroupImported* This,
+        BSTR name);
+
+    HRESULT (STDMETHODCALLTYPE *get_Members)(
+        IFsrmFileGroupImported* This,
+        IFsrmMutableCollection **members);
+
+    HRESULT (STDMETHODCALLTYPE *put_Members)(
+        IFsrmFileGroupImported* This,
+        IFsrmMutableCollection *members);
+
+    HRESULT (STDMETHODCALLTYPE *get_NonMembers)(
+        IFsrmFileGroupImported* This,
+        IFsrmMutableCollection **nonMembers);
+
+    HRESULT (STDMETHODCALLTYPE *put_NonMembers)(
+        IFsrmFileGroupImported* This,
+        IFsrmMutableCollection *nonMembers);
+
+    /*** IFsrmFileGroupImported methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_OverwriteOnCommit)(
+        IFsrmFileGroupImported* This,
+        VARIANT_BOOL *overwrite);
+
+    HRESULT (STDMETHODCALLTYPE *put_OverwriteOnCommit)(
+        IFsrmFileGroupImported* This,
+        VARIANT_BOOL overwrite);
+
+    END_INTERFACE
+} IFsrmFileGroupImportedVtbl;
+interface IFsrmFileGroupImported {
+    CONST_VTBL IFsrmFileGroupImportedVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmFileGroupImported_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmFileGroupImported_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmFileGroupImported_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmFileGroupImported_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmFileGroupImported_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmFileGroupImported_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmFileGroupImported_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmObject methods ***/
+#define IFsrmFileGroupImported_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
+#define IFsrmFileGroupImported_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
+#define IFsrmFileGroupImported_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
+#define IFsrmFileGroupImported_Delete(This) (This)->lpVtbl->Delete(This)
+#define IFsrmFileGroupImported_Commit(This) (This)->lpVtbl->Commit(This)
+/*** IFsrmFileGroup methods ***/
+#define IFsrmFileGroupImported_get_Name(This,name) (This)->lpVtbl->get_Name(This,name)
+#define IFsrmFileGroupImported_put_Name(This,name) (This)->lpVtbl->put_Name(This,name)
+#define IFsrmFileGroupImported_get_Members(This,members) (This)->lpVtbl->get_Members(This,members)
+#define IFsrmFileGroupImported_put_Members(This,members) (This)->lpVtbl->put_Members(This,members)
+#define IFsrmFileGroupImported_get_NonMembers(This,nonMembers) (This)->lpVtbl->get_NonMembers(This,nonMembers)
+#define IFsrmFileGroupImported_put_NonMembers(This,nonMembers) (This)->lpVtbl->put_NonMembers(This,nonMembers)
+/*** IFsrmFileGroupImported methods ***/
+#define IFsrmFileGroupImported_get_OverwriteOnCommit(This,overwrite) (This)->lpVtbl->get_OverwriteOnCommit(This,overwrite)
+#define IFsrmFileGroupImported_put_OverwriteOnCommit(This,overwrite) (This)->lpVtbl->put_OverwriteOnCommit(This,overwrite)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmFileGroupImported_QueryInterface(IFsrmFileGroupImported* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmFileGroupImported_AddRef(IFsrmFileGroupImported* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmFileGroupImported_Release(IFsrmFileGroupImported* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmFileGroupImported_GetTypeInfoCount(IFsrmFileGroupImported* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupImported_GetTypeInfo(IFsrmFileGroupImported* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupImported_GetIDsOfNames(IFsrmFileGroupImported* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupImported_Invoke(IFsrmFileGroupImported* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmObject methods ***/
+static FORCEINLINE HRESULT IFsrmFileGroupImported_get_Id(IFsrmFileGroupImported* This,FSRM_OBJECT_ID *id) {
+    return This->lpVtbl->get_Id(This,id);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupImported_get_Description(IFsrmFileGroupImported* This,BSTR *description) {
+    return This->lpVtbl->get_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupImported_put_Description(IFsrmFileGroupImported* This,BSTR description) {
+    return This->lpVtbl->put_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupImported_Delete(IFsrmFileGroupImported* This) {
+    return This->lpVtbl->Delete(This);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupImported_Commit(IFsrmFileGroupImported* This) {
+    return This->lpVtbl->Commit(This);
+}
+/*** IFsrmFileGroup methods ***/
+static FORCEINLINE HRESULT IFsrmFileGroupImported_get_Name(IFsrmFileGroupImported* This,BSTR *name) {
+    return This->lpVtbl->get_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupImported_put_Name(IFsrmFileGroupImported* This,BSTR name) {
+    return This->lpVtbl->put_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupImported_get_Members(IFsrmFileGroupImported* This,IFsrmMutableCollection **members) {
+    return This->lpVtbl->get_Members(This,members);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupImported_put_Members(IFsrmFileGroupImported* This,IFsrmMutableCollection *members) {
+    return This->lpVtbl->put_Members(This,members);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupImported_get_NonMembers(IFsrmFileGroupImported* This,IFsrmMutableCollection **nonMembers) {
+    return This->lpVtbl->get_NonMembers(This,nonMembers);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupImported_put_NonMembers(IFsrmFileGroupImported* This,IFsrmMutableCollection *nonMembers) {
+    return This->lpVtbl->put_NonMembers(This,nonMembers);
+}
+/*** IFsrmFileGroupImported methods ***/
+static FORCEINLINE HRESULT IFsrmFileGroupImported_get_OverwriteOnCommit(IFsrmFileGroupImported* This,VARIANT_BOOL *overwrite) {
+    return This->lpVtbl->get_OverwriteOnCommit(This,overwrite);
+}
+static FORCEINLINE HRESULT IFsrmFileGroupImported_put_OverwriteOnCommit(IFsrmFileGroupImported* This,VARIANT_BOOL overwrite) {
+    return This->lpVtbl->put_OverwriteOnCommit(This,overwrite);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmFileGroupImported_get_OverwriteOnCommit_Proxy(
+    IFsrmFileGroupImported* This,
+    VARIANT_BOOL *overwrite);
+void __RPC_STUB IFsrmFileGroupImported_get_OverwriteOnCommit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileGroupImported_put_OverwriteOnCommit_Proxy(
+    IFsrmFileGroupImported* This,
+    VARIANT_BOOL overwrite);
+void __RPC_STUB IFsrmFileGroupImported_put_OverwriteOnCommit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmFileGroupImported_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmFileScreenTemplate interface
+ */
+#ifndef __IFsrmFileScreenTemplate_INTERFACE_DEFINED__
+#define __IFsrmFileScreenTemplate_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmFileScreenTemplate, 0x205bebf8, 0xdd93, 0x452a, 0x95,0xa6, 0x32,0xb5,0x66,0xb3,0x58,0x28);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("205bebf8-dd93-452a-95a6-32b566b35828")
+IFsrmFileScreenTemplate : public IFsrmFileScreenBase
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Name(
+        BSTR *name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Name(
+        BSTR name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CopyTemplate(
+        BSTR fileScreenTemplateName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CommitAndUpdateDerived(
+        FsrmCommitOptions commitOptions,
+        FsrmTemplateApplyOptions applyOptions,
+        IFsrmDerivedObjectsResult **derivedObjectsResult) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmFileScreenTemplate, 0x205bebf8, 0xdd93, 0x452a, 0x95,0xa6, 0x32,0xb5,0x66,0xb3,0x58,0x28)
+#endif
+#else
+typedef struct IFsrmFileScreenTemplateVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmFileScreenTemplate* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmFileScreenTemplate* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmFileScreenTemplate* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmFileScreenTemplate* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmFileScreenTemplate* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmFileScreenTemplate* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmFileScreenTemplate* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IFsrmFileScreenTemplate* This,
+        FSRM_OBJECT_ID *id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IFsrmFileScreenTemplate* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IFsrmFileScreenTemplate* This,
+        BSTR description);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmFileScreenTemplate* This);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IFsrmFileScreenTemplate* This);
+
+    /*** IFsrmFileScreenBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_BlockedFileGroups)(
+        IFsrmFileScreenTemplate* This,
+        IFsrmMutableCollection **blockList);
+
+    HRESULT (STDMETHODCALLTYPE *put_BlockedFileGroups)(
+        IFsrmFileScreenTemplate* This,
+        IFsrmMutableCollection *blockList);
+
+    HRESULT (STDMETHODCALLTYPE *get_FileScreenFlags)(
+        IFsrmFileScreenTemplate* This,
+        LONG *fileScreenFlags);
+
+    HRESULT (STDMETHODCALLTYPE *put_FileScreenFlags)(
+        IFsrmFileScreenTemplate* This,
+        LONG fileScreenFlags);
+
+    HRESULT (STDMETHODCALLTYPE *CreateAction)(
+        IFsrmFileScreenTemplate* This,
+        FsrmActionType actionType,
+        IFsrmAction **action);
+
+    HRESULT (STDMETHODCALLTYPE *EnumActions)(
+        IFsrmFileScreenTemplate* This,
+        IFsrmCollection **actions);
+
+    /*** IFsrmFileScreenTemplate methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IFsrmFileScreenTemplate* This,
+        BSTR *name);
+
+    HRESULT (STDMETHODCALLTYPE *put_Name)(
+        IFsrmFileScreenTemplate* This,
+        BSTR name);
+
+    HRESULT (STDMETHODCALLTYPE *CopyTemplate)(
+        IFsrmFileScreenTemplate* This,
+        BSTR fileScreenTemplateName);
+
+    HRESULT (STDMETHODCALLTYPE *CommitAndUpdateDerived)(
+        IFsrmFileScreenTemplate* This,
+        FsrmCommitOptions commitOptions,
+        FsrmTemplateApplyOptions applyOptions,
+        IFsrmDerivedObjectsResult **derivedObjectsResult);
+
+    END_INTERFACE
+} IFsrmFileScreenTemplateVtbl;
+interface IFsrmFileScreenTemplate {
+    CONST_VTBL IFsrmFileScreenTemplateVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmFileScreenTemplate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmFileScreenTemplate_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmFileScreenTemplate_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmFileScreenTemplate_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmFileScreenTemplate_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmFileScreenTemplate_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmFileScreenTemplate_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmObject methods ***/
+#define IFsrmFileScreenTemplate_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
+#define IFsrmFileScreenTemplate_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
+#define IFsrmFileScreenTemplate_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
+#define IFsrmFileScreenTemplate_Delete(This) (This)->lpVtbl->Delete(This)
+#define IFsrmFileScreenTemplate_Commit(This) (This)->lpVtbl->Commit(This)
+/*** IFsrmFileScreenBase methods ***/
+#define IFsrmFileScreenTemplate_get_BlockedFileGroups(This,blockList) (This)->lpVtbl->get_BlockedFileGroups(This,blockList)
+#define IFsrmFileScreenTemplate_put_BlockedFileGroups(This,blockList) (This)->lpVtbl->put_BlockedFileGroups(This,blockList)
+#define IFsrmFileScreenTemplate_get_FileScreenFlags(This,fileScreenFlags) (This)->lpVtbl->get_FileScreenFlags(This,fileScreenFlags)
+#define IFsrmFileScreenTemplate_put_FileScreenFlags(This,fileScreenFlags) (This)->lpVtbl->put_FileScreenFlags(This,fileScreenFlags)
+#define IFsrmFileScreenTemplate_CreateAction(This,actionType,action) (This)->lpVtbl->CreateAction(This,actionType,action)
+#define IFsrmFileScreenTemplate_EnumActions(This,actions) (This)->lpVtbl->EnumActions(This,actions)
+/*** IFsrmFileScreenTemplate methods ***/
+#define IFsrmFileScreenTemplate_get_Name(This,name) (This)->lpVtbl->get_Name(This,name)
+#define IFsrmFileScreenTemplate_put_Name(This,name) (This)->lpVtbl->put_Name(This,name)
+#define IFsrmFileScreenTemplate_CopyTemplate(This,fileScreenTemplateName) (This)->lpVtbl->CopyTemplate(This,fileScreenTemplateName)
+#define IFsrmFileScreenTemplate_CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult) (This)->lpVtbl->CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_QueryInterface(IFsrmFileScreenTemplate* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmFileScreenTemplate_AddRef(IFsrmFileScreenTemplate* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmFileScreenTemplate_Release(IFsrmFileScreenTemplate* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_GetTypeInfoCount(IFsrmFileScreenTemplate* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_GetTypeInfo(IFsrmFileScreenTemplate* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_GetIDsOfNames(IFsrmFileScreenTemplate* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_Invoke(IFsrmFileScreenTemplate* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmObject methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_get_Id(IFsrmFileScreenTemplate* This,FSRM_OBJECT_ID *id) {
+    return This->lpVtbl->get_Id(This,id);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_get_Description(IFsrmFileScreenTemplate* This,BSTR *description) {
+    return This->lpVtbl->get_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_put_Description(IFsrmFileScreenTemplate* This,BSTR description) {
+    return This->lpVtbl->put_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_Delete(IFsrmFileScreenTemplate* This) {
+    return This->lpVtbl->Delete(This);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_Commit(IFsrmFileScreenTemplate* This) {
+    return This->lpVtbl->Commit(This);
+}
+/*** IFsrmFileScreenBase methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_get_BlockedFileGroups(IFsrmFileScreenTemplate* This,IFsrmMutableCollection **blockList) {
+    return This->lpVtbl->get_BlockedFileGroups(This,blockList);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_put_BlockedFileGroups(IFsrmFileScreenTemplate* This,IFsrmMutableCollection *blockList) {
+    return This->lpVtbl->put_BlockedFileGroups(This,blockList);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_get_FileScreenFlags(IFsrmFileScreenTemplate* This,LONG *fileScreenFlags) {
+    return This->lpVtbl->get_FileScreenFlags(This,fileScreenFlags);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_put_FileScreenFlags(IFsrmFileScreenTemplate* This,LONG fileScreenFlags) {
+    return This->lpVtbl->put_FileScreenFlags(This,fileScreenFlags);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_CreateAction(IFsrmFileScreenTemplate* This,FsrmActionType actionType,IFsrmAction **action) {
+    return This->lpVtbl->CreateAction(This,actionType,action);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_EnumActions(IFsrmFileScreenTemplate* This,IFsrmCollection **actions) {
+    return This->lpVtbl->EnumActions(This,actions);
+}
+/*** IFsrmFileScreenTemplate methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_get_Name(IFsrmFileScreenTemplate* This,BSTR *name) {
+    return This->lpVtbl->get_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_put_Name(IFsrmFileScreenTemplate* This,BSTR name) {
+    return This->lpVtbl->put_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_CopyTemplate(IFsrmFileScreenTemplate* This,BSTR fileScreenTemplateName) {
+    return This->lpVtbl->CopyTemplate(This,fileScreenTemplateName);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplate_CommitAndUpdateDerived(IFsrmFileScreenTemplate* This,FsrmCommitOptions commitOptions,FsrmTemplateApplyOptions applyOptions,IFsrmDerivedObjectsResult **derivedObjectsResult) {
+    return This->lpVtbl->CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenTemplate_get_Name_Proxy(
+    IFsrmFileScreenTemplate* This,
+    BSTR *name);
+void __RPC_STUB IFsrmFileScreenTemplate_get_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenTemplate_put_Name_Proxy(
+    IFsrmFileScreenTemplate* This,
+    BSTR name);
+void __RPC_STUB IFsrmFileScreenTemplate_put_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenTemplate_CopyTemplate_Proxy(
+    IFsrmFileScreenTemplate* This,
+    BSTR fileScreenTemplateName);
+void __RPC_STUB IFsrmFileScreenTemplate_CopyTemplate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenTemplate_CommitAndUpdateDerived_Proxy(
+    IFsrmFileScreenTemplate* This,
+    FsrmCommitOptions commitOptions,
+    FsrmTemplateApplyOptions applyOptions,
+    IFsrmDerivedObjectsResult **derivedObjectsResult);
+void __RPC_STUB IFsrmFileScreenTemplate_CommitAndUpdateDerived_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmFileScreenTemplate_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFsrmFileScreenTemplateImported interface
+ */
+#ifndef __IFsrmFileScreenTemplateImported_INTERFACE_DEFINED__
+#define __IFsrmFileScreenTemplateImported_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFsrmFileScreenTemplateImported, 0xe1010359, 0x3e5d, 0x4ecd, 0x9f,0xe4, 0xef,0x48,0x62,0x2f,0xdf,0x30);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("e1010359-3e5d-4ecd-9fe4-ef48622fdf30")
+IFsrmFileScreenTemplateImported : public IFsrmFileScreenTemplate
+{
+    virtual HRESULT STDMETHODCALLTYPE get_OverwriteOnCommit(
+        VARIANT_BOOL *overwrite) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_OverwriteOnCommit(
+        VARIANT_BOOL overwrite) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFsrmFileScreenTemplateImported, 0xe1010359, 0x3e5d, 0x4ecd, 0x9f,0xe4, 0xef,0x48,0x62,0x2f,0xdf,0x30)
+#endif
+#else
+typedef struct IFsrmFileScreenTemplateImportedVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFsrmFileScreenTemplateImported* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFsrmFileScreenTemplateImported* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFsrmFileScreenTemplateImported* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IFsrmFileScreenTemplateImported* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IFsrmFileScreenTemplateImported* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IFsrmFileScreenTemplateImported* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IFsrmFileScreenTemplateImported* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IFsrmObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IFsrmFileScreenTemplateImported* This,
+        FSRM_OBJECT_ID *id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Description)(
+        IFsrmFileScreenTemplateImported* This,
+        BSTR *description);
+
+    HRESULT (STDMETHODCALLTYPE *put_Description)(
+        IFsrmFileScreenTemplateImported* This,
+        BSTR description);
+
+    HRESULT (STDMETHODCALLTYPE *Delete)(
+        IFsrmFileScreenTemplateImported* This);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IFsrmFileScreenTemplateImported* This);
+
+    /*** IFsrmFileScreenBase methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_BlockedFileGroups)(
+        IFsrmFileScreenTemplateImported* This,
+        IFsrmMutableCollection **blockList);
+
+    HRESULT (STDMETHODCALLTYPE *put_BlockedFileGroups)(
+        IFsrmFileScreenTemplateImported* This,
+        IFsrmMutableCollection *blockList);
+
+    HRESULT (STDMETHODCALLTYPE *get_FileScreenFlags)(
+        IFsrmFileScreenTemplateImported* This,
+        LONG *fileScreenFlags);
+
+    HRESULT (STDMETHODCALLTYPE *put_FileScreenFlags)(
+        IFsrmFileScreenTemplateImported* This,
+        LONG fileScreenFlags);
+
+    HRESULT (STDMETHODCALLTYPE *CreateAction)(
+        IFsrmFileScreenTemplateImported* This,
+        FsrmActionType actionType,
+        IFsrmAction **action);
+
+    HRESULT (STDMETHODCALLTYPE *EnumActions)(
+        IFsrmFileScreenTemplateImported* This,
+        IFsrmCollection **actions);
+
+    /*** IFsrmFileScreenTemplate methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IFsrmFileScreenTemplateImported* This,
+        BSTR *name);
+
+    HRESULT (STDMETHODCALLTYPE *put_Name)(
+        IFsrmFileScreenTemplateImported* This,
+        BSTR name);
+
+    HRESULT (STDMETHODCALLTYPE *CopyTemplate)(
+        IFsrmFileScreenTemplateImported* This,
+        BSTR fileScreenTemplateName);
+
+    HRESULT (STDMETHODCALLTYPE *CommitAndUpdateDerived)(
+        IFsrmFileScreenTemplateImported* This,
+        FsrmCommitOptions commitOptions,
+        FsrmTemplateApplyOptions applyOptions,
+        IFsrmDerivedObjectsResult **derivedObjectsResult);
+
+    /*** IFsrmFileScreenTemplateImported methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_OverwriteOnCommit)(
+        IFsrmFileScreenTemplateImported* This,
+        VARIANT_BOOL *overwrite);
+
+    HRESULT (STDMETHODCALLTYPE *put_OverwriteOnCommit)(
+        IFsrmFileScreenTemplateImported* This,
+        VARIANT_BOOL overwrite);
+
+    END_INTERFACE
+} IFsrmFileScreenTemplateImportedVtbl;
+interface IFsrmFileScreenTemplateImported {
+    CONST_VTBL IFsrmFileScreenTemplateImportedVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IFsrmFileScreenTemplateImported_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFsrmFileScreenTemplateImported_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFsrmFileScreenTemplateImported_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IFsrmFileScreenTemplateImported_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IFsrmFileScreenTemplateImported_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IFsrmFileScreenTemplateImported_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IFsrmFileScreenTemplateImported_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IFsrmObject methods ***/
+#define IFsrmFileScreenTemplateImported_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
+#define IFsrmFileScreenTemplateImported_get_Description(This,description) (This)->lpVtbl->get_Description(This,description)
+#define IFsrmFileScreenTemplateImported_put_Description(This,description) (This)->lpVtbl->put_Description(This,description)
+#define IFsrmFileScreenTemplateImported_Delete(This) (This)->lpVtbl->Delete(This)
+#define IFsrmFileScreenTemplateImported_Commit(This) (This)->lpVtbl->Commit(This)
+/*** IFsrmFileScreenBase methods ***/
+#define IFsrmFileScreenTemplateImported_get_BlockedFileGroups(This,blockList) (This)->lpVtbl->get_BlockedFileGroups(This,blockList)
+#define IFsrmFileScreenTemplateImported_put_BlockedFileGroups(This,blockList) (This)->lpVtbl->put_BlockedFileGroups(This,blockList)
+#define IFsrmFileScreenTemplateImported_get_FileScreenFlags(This,fileScreenFlags) (This)->lpVtbl->get_FileScreenFlags(This,fileScreenFlags)
+#define IFsrmFileScreenTemplateImported_put_FileScreenFlags(This,fileScreenFlags) (This)->lpVtbl->put_FileScreenFlags(This,fileScreenFlags)
+#define IFsrmFileScreenTemplateImported_CreateAction(This,actionType,action) (This)->lpVtbl->CreateAction(This,actionType,action)
+#define IFsrmFileScreenTemplateImported_EnumActions(This,actions) (This)->lpVtbl->EnumActions(This,actions)
+/*** IFsrmFileScreenTemplate methods ***/
+#define IFsrmFileScreenTemplateImported_get_Name(This,name) (This)->lpVtbl->get_Name(This,name)
+#define IFsrmFileScreenTemplateImported_put_Name(This,name) (This)->lpVtbl->put_Name(This,name)
+#define IFsrmFileScreenTemplateImported_CopyTemplate(This,fileScreenTemplateName) (This)->lpVtbl->CopyTemplate(This,fileScreenTemplateName)
+#define IFsrmFileScreenTemplateImported_CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult) (This)->lpVtbl->CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult)
+/*** IFsrmFileScreenTemplateImported methods ***/
+#define IFsrmFileScreenTemplateImported_get_OverwriteOnCommit(This,overwrite) (This)->lpVtbl->get_OverwriteOnCommit(This,overwrite)
+#define IFsrmFileScreenTemplateImported_put_OverwriteOnCommit(This,overwrite) (This)->lpVtbl->put_OverwriteOnCommit(This,overwrite)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_QueryInterface(IFsrmFileScreenTemplateImported* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IFsrmFileScreenTemplateImported_AddRef(IFsrmFileScreenTemplateImported* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IFsrmFileScreenTemplateImported_Release(IFsrmFileScreenTemplateImported* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_GetTypeInfoCount(IFsrmFileScreenTemplateImported* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_GetTypeInfo(IFsrmFileScreenTemplateImported* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_GetIDsOfNames(IFsrmFileScreenTemplateImported* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_Invoke(IFsrmFileScreenTemplateImported* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IFsrmObject methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_get_Id(IFsrmFileScreenTemplateImported* This,FSRM_OBJECT_ID *id) {
+    return This->lpVtbl->get_Id(This,id);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_get_Description(IFsrmFileScreenTemplateImported* This,BSTR *description) {
+    return This->lpVtbl->get_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_put_Description(IFsrmFileScreenTemplateImported* This,BSTR description) {
+    return This->lpVtbl->put_Description(This,description);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_Delete(IFsrmFileScreenTemplateImported* This) {
+    return This->lpVtbl->Delete(This);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_Commit(IFsrmFileScreenTemplateImported* This) {
+    return This->lpVtbl->Commit(This);
+}
+/*** IFsrmFileScreenBase methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_get_BlockedFileGroups(IFsrmFileScreenTemplateImported* This,IFsrmMutableCollection **blockList) {
+    return This->lpVtbl->get_BlockedFileGroups(This,blockList);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_put_BlockedFileGroups(IFsrmFileScreenTemplateImported* This,IFsrmMutableCollection *blockList) {
+    return This->lpVtbl->put_BlockedFileGroups(This,blockList);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_get_FileScreenFlags(IFsrmFileScreenTemplateImported* This,LONG *fileScreenFlags) {
+    return This->lpVtbl->get_FileScreenFlags(This,fileScreenFlags);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_put_FileScreenFlags(IFsrmFileScreenTemplateImported* This,LONG fileScreenFlags) {
+    return This->lpVtbl->put_FileScreenFlags(This,fileScreenFlags);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_CreateAction(IFsrmFileScreenTemplateImported* This,FsrmActionType actionType,IFsrmAction **action) {
+    return This->lpVtbl->CreateAction(This,actionType,action);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_EnumActions(IFsrmFileScreenTemplateImported* This,IFsrmCollection **actions) {
+    return This->lpVtbl->EnumActions(This,actions);
+}
+/*** IFsrmFileScreenTemplate methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_get_Name(IFsrmFileScreenTemplateImported* This,BSTR *name) {
+    return This->lpVtbl->get_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_put_Name(IFsrmFileScreenTemplateImported* This,BSTR name) {
+    return This->lpVtbl->put_Name(This,name);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_CopyTemplate(IFsrmFileScreenTemplateImported* This,BSTR fileScreenTemplateName) {
+    return This->lpVtbl->CopyTemplate(This,fileScreenTemplateName);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_CommitAndUpdateDerived(IFsrmFileScreenTemplateImported* This,FsrmCommitOptions commitOptions,FsrmTemplateApplyOptions applyOptions,IFsrmDerivedObjectsResult **derivedObjectsResult) {
+    return This->lpVtbl->CommitAndUpdateDerived(This,commitOptions,applyOptions,derivedObjectsResult);
+}
+/*** IFsrmFileScreenTemplateImported methods ***/
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_get_OverwriteOnCommit(IFsrmFileScreenTemplateImported* This,VARIANT_BOOL *overwrite) {
+    return This->lpVtbl->get_OverwriteOnCommit(This,overwrite);
+}
+static FORCEINLINE HRESULT IFsrmFileScreenTemplateImported_put_OverwriteOnCommit(IFsrmFileScreenTemplateImported* This,VARIANT_BOOL overwrite) {
+    return This->lpVtbl->put_OverwriteOnCommit(This,overwrite);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenTemplateImported_get_OverwriteOnCommit_Proxy(
+    IFsrmFileScreenTemplateImported* This,
+    VARIANT_BOOL *overwrite);
+void __RPC_STUB IFsrmFileScreenTemplateImported_get_OverwriteOnCommit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFsrmFileScreenTemplateImported_put_OverwriteOnCommit_Proxy(
+    IFsrmFileScreenTemplateImported* This,
+    VARIANT_BOOL overwrite);
+void __RPC_STUB IFsrmFileScreenTemplateImported_put_OverwriteOnCommit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IFsrmFileScreenTemplateImported_INTERFACE_DEFINED__ */
+
+#endif
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
+ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
+void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __fsrmscreen_h__ */
diff --git a/mingw-w64-headers/include/fsrmscreen.idl b/mingw-w64-headers/include/fsrmscreen.idl
new file mode 100644
index 0000000..c199a53
--- /dev/null
+++ b/mingw-w64-headers/include/fsrmscreen.idl
@@ -0,0 +1,123 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+
+import "oaidl.idl";
+import "fsrmenums.idl";
+import "fsrm.idl";
+
+cpp_quote("#include <winapifamily.h>")
+cpp_quote("")
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
+
+interface IFsrmFileGroup;
+interface IFsrmFileGroupImported;
+interface IFsrmFileGroupManager;
+interface IFsrmFileScreen;
+interface IFsrmFileScreenBase;
+interface IFsrmFileScreenException;
+interface IFsrmFileScreenManager;
+interface IFsrmFileScreenTemplate;
+interface IFsrmFileScreenTemplateImported;
+interface IFsrmFileScreenTemplateManager;
+
+const DISPID FSRM_DISPID_FILEGROUP = FSRM_DISPID_FEATURE_FILESCREEN | 0x100000;
+const DISPID FSRM_DISPID_FILEGROUP_IMPORTED = FSRM_DISPID_FILEGROUP | 0x10000;
+const DISPID FSRM_DISPID_FILEGROUP_MANAGER = FSRM_DISPID_FEATURE_FILESCREEN | 0x200000;
+const DISPID FSRM_DISPID_FILESCREEN_BASE = FSRM_DISPID_FEATURE_FILESCREEN | 0x300000;
+const DISPID FSRM_DISPID_FILESCREEN = FSRM_DISPID_FILESCREEN_BASE | 0x10000;
+const DISPID FSRM_DISPID_FILESCREEN_TEMPLATE = FSRM_DISPID_FILESCREEN_BASE | 0x20000;
+const DISPID FSRM_DISPID_FILESCREEN_TEMPLATE_IMPORTED = FSRM_DISPID_FILESCREEN_TEMPLATE | 0x1000;
+const DISPID FSRM_DISPID_FILESCREEN_EXCEPTION = FSRM_DISPID_FEATURE_FILESCREEN | 0x400000;
+const DISPID FSRM_DISPID_FILESCREEN_MANAGER = FSRM_DISPID_FEATURE_FILESCREEN | 0x500000;
+const DISPID FSRM_DISPID_FILESCREEN_TEMPLATE_MANAGER = FSRM_DISPID_FEATURE_FILESCREEN | 0x600000;
+
+[object, uuid (426677d5-018c-485c-8a51-20b86d00bdc4), dual, pointer_default (unique)]
+interface IFsrmFileGroupManager : IDispatch {
+  [id (FSRM_DISPID_FILEGROUP_MANAGER | 0x1)] HRESULT CreateFileGroup ([out, retval] IFsrmFileGroup **fileGroup);
+  [id (FSRM_DISPID_FILEGROUP_MANAGER | 0x2)] HRESULT GetFileGroup ([in] BSTR name,[out, retval] IFsrmFileGroup **fileGroup);
+  [id (FSRM_DISPID_FILEGROUP_MANAGER | 0x3)] HRESULT EnumFileGroups ([in, defaultvalue (FsrmEnumOptions_None)] FsrmEnumOptions options,[out, retval] IFsrmCommittableCollection **fileGroups);
+  [id (FSRM_DISPID_FILEGROUP_MANAGER | 0x4)] HRESULT ExportFileGroups ([in, defaultvalue (NULL)] VARIANT *fileGroupNamesArray,[out, retval] BSTR *serializedFileGroups);
+  [id (FSRM_DISPID_FILEGROUP_MANAGER | 0x5)] HRESULT ImportFileGroups ([in] BSTR serializedFileGroups,[in, defaultvalue (NULL)] VARIANT *fileGroupNamesArray,[out, retval] IFsrmCommittableCollection **fileGroups);
+};
+
+[object, uuid (ff4fa04e-5a94-4bda-a3a0-d5b4d3c52eba), dual, pointer_default (unique)]
+interface IFsrmFileScreenManager : IDispatch {
+  [propget, id (FSRM_DISPID_FILESCREEN_MANAGER | 0x81)] HRESULT ActionVariables ([out, retval] SAFEARRAY (VARIANT) *variables);
+  [propget, id (FSRM_DISPID_FILESCREEN_MANAGER | 0x82)] HRESULT ActionVariableDescriptions ([out, retval] SAFEARRAY (VARIANT) *descriptions);
+  [id (FSRM_DISPID_FILESCREEN_MANAGER | 0x1)] HRESULT CreateFileScreen ([in] BSTR path,[out, retval] IFsrmFileScreen **fileScreen);
+  [id (FSRM_DISPID_FILESCREEN_MANAGER | 0x2)] HRESULT GetFileScreen ([in] BSTR path,[out, retval] IFsrmFileScreen **fileScreen);
+  [id (FSRM_DISPID_FILESCREEN_MANAGER | 0x3)] HRESULT EnumFileScreens ([in, defaultvalue (L"")] BSTR path,[in, defaultvalue (FsrmEnumOptions_None)] FsrmEnumOptions options,[out, retval] IFsrmCommittableCollection **fileScreens);
+  [id (FSRM_DISPID_FILESCREEN_MANAGER | 0x4)] HRESULT CreateFileScreenException ([in] BSTR path,[out, retval] IFsrmFileScreenException **fileScreenException);
+  [id (FSRM_DISPID_FILESCREEN_MANAGER | 0x5)] HRESULT GetFileScreenException ([in] BSTR path,[out, retval] IFsrmFileScreenException **fileScreenException);
+  [id (FSRM_DISPID_FILESCREEN_MANAGER | 0x6)] HRESULT EnumFileScreenExceptions ([in, defaultvalue (L"")] BSTR path,[in, defaultvalue (FsrmEnumOptions_None)] FsrmEnumOptions options,[out, retval] IFsrmCommittableCollection **fileScreenExceptions);
+  [id (FSRM_DISPID_FILESCREEN_MANAGER | 0x7)] HRESULT CreateFileScreenCollection ([out, retval] IFsrmCommittableCollection **collection);
+};
+
+[object, uuid (cfe36cba-1949-4e74-a14f-f1d580ceaf13), dual, pointer_default (unique)]
+interface IFsrmFileScreenTemplateManager : IDispatch {
+  [id (FSRM_DISPID_FILESCREEN_TEMPLATE_MANAGER | 0x1)] HRESULT CreateTemplate ([out, retval] IFsrmFileScreenTemplate **fileScreenTemplate);
+  [id (FSRM_DISPID_FILESCREEN_TEMPLATE_MANAGER | 0x2)] HRESULT GetTemplate ([in] BSTR name,[out, retval] IFsrmFileScreenTemplate **fileScreenTemplate);
+  [id (FSRM_DISPID_FILESCREEN_TEMPLATE_MANAGER | 0x3)] HRESULT EnumTemplates ([in, defaultvalue (FsrmEnumOptions_None)] FsrmEnumOptions options,[out, retval] IFsrmCommittableCollection **fileScreenTemplates);
+  [id (FSRM_DISPID_FILESCREEN_TEMPLATE_MANAGER | 0x4)] HRESULT ExportTemplates ([in, defaultvalue (NULL)] VARIANT *fileScreenTemplateNamesArray,[out, retval] BSTR *serializedFileScreenTemplates);
+  [id (FSRM_DISPID_FILESCREEN_TEMPLATE_MANAGER | 0x5)] HRESULT ImportTemplates ([in] BSTR serializedFileScreenTemplates,[in, defaultvalue (NULL)] VARIANT *fileScreenTemplateNamesArray,[out, retval] IFsrmCommittableCollection **fileScreenTemplates);
+};
+
+[object, uuid (8dd04909-0e34-4d55-afaa-89e1f1a1bbb9), dual, pointer_default (unique)]
+interface IFsrmFileGroup : IFsrmObject {
+  [propget, id (FSRM_DISPID_FILEGROUP | 0x81)] HRESULT Name ([out, retval] BSTR *name);
+  [propput, id (FSRM_DISPID_FILEGROUP | 0x81)] HRESULT Name ([in] BSTR name);
+  [propget, id (FSRM_DISPID_FILEGROUP | 0x82)] HRESULT Members ([out, retval] IFsrmMutableCollection **members);
+  [propput, id (FSRM_DISPID_FILEGROUP | 0x82)] HRESULT Members ([in] IFsrmMutableCollection *members);
+  [propget, id (FSRM_DISPID_FILEGROUP | 0x83)] HRESULT NonMembers ([out, retval] IFsrmMutableCollection **nonMembers);
+  [propput, id (FSRM_DISPID_FILEGROUP | 0x83)] HRESULT NonMembers ([in] IFsrmMutableCollection *nonMembers);
+};
+
+[object, uuid (f3637e80-5b22-4a2b-a637-bbb642b41cfc), dual, pointer_default (unique)]
+interface IFsrmFileScreenBase : IFsrmObject {
+  [propget, id (FSRM_DISPID_FILESCREEN_BASE | 0x81)] HRESULT BlockedFileGroups ([out, retval] IFsrmMutableCollection **blockList);
+  [propput, id (FSRM_DISPID_FILESCREEN_BASE | 0x81)] HRESULT BlockedFileGroups ([in] IFsrmMutableCollection *blockList);
+  [propget, id (FSRM_DISPID_FILESCREEN_BASE | 0x82)] HRESULT FileScreenFlags ([out, retval] long *fileScreenFlags);
+  [propput, id (FSRM_DISPID_FILESCREEN_BASE | 0x82)] HRESULT FileScreenFlags ([in] long fileScreenFlags);
+  [id (FSRM_DISPID_FILESCREEN_BASE | 0x1)] HRESULT CreateAction ([in] FsrmActionType actionType,[out, retval] IFsrmAction **action);
+  [id (FSRM_DISPID_FILESCREEN_BASE | 0x2)] HRESULT EnumActions ([out, retval] IFsrmCollection **actions);
+};
+
+[object, uuid (bee7ce02-df77-4515-9389-78f01c5afc1a), dual, pointer_default (unique)]
+interface IFsrmFileScreenException : IFsrmObject {
+  [propget, id (FSRM_DISPID_FILESCREEN_EXCEPTION | 0x81)] HRESULT Path ([out, retval] BSTR *path);
+  [propget, id (FSRM_DISPID_FILESCREEN_EXCEPTION | 0x82)] HRESULT AllowedFileGroups ([out, retval] IFsrmMutableCollection **allowList);
+  [propput, id (FSRM_DISPID_FILESCREEN_EXCEPTION | 0x82)] HRESULT AllowedFileGroups ([in] IFsrmMutableCollection *allowList);
+};
+
+[object, uuid (5f6325d3-ce88-4733-84c1-2d6aefc5ea07), dual, pointer_default (unique)]
+interface IFsrmFileScreen : IFsrmFileScreenBase {
+  [propget, id (FSRM_DISPID_FILESCREEN | 0x81)] HRESULT Path ([out, retval] BSTR *path);
+  [propget, id (FSRM_DISPID_FILESCREEN | 0x82)] HRESULT SourceTemplateName ([out, retval] BSTR *fileScreenTemplateName);
+  [propget, id (FSRM_DISPID_FILESCREEN | 0x83)] HRESULT MatchesSourceTemplate ([out, retval] VARIANT_BOOL *matches);
+  [propget, id (FSRM_DISPID_FILESCREEN | 0x84)] HRESULT UserSid ([out, retval] BSTR *userSid);
+  [propget, id (FSRM_DISPID_FILESCREEN | 0x85)] HRESULT UserAccount ([out, retval] BSTR *userAccount);
+  [id (FSRM_DISPID_FILESCREEN | 0x1)] HRESULT ApplyTemplate ([in] BSTR fileScreenTemplateName);
+};
+
+[object, uuid (ad55f10b-5f11-4be7-94ef-d9ee2e470ded), dual, pointer_default (unique)]
+interface IFsrmFileGroupImported : IFsrmFileGroup {
+  [propget, id (FSRM_DISPID_FILEGROUP_IMPORTED | 0x81)] HRESULT OverwriteOnCommit ([out, retval] VARIANT_BOOL *overwrite);
+  [propput, id (FSRM_DISPID_FILEGROUP_IMPORTED | 0x81)] HRESULT OverwriteOnCommit ([in] VARIANT_BOOL overwrite);
+};
+
+[object, uuid (205bebf8-dd93-452a-95a6-32b566b35828), dual, pointer_default (unique)]
+interface IFsrmFileScreenTemplate : IFsrmFileScreenBase {
+  [propget, id (FSRM_DISPID_FILESCREEN_TEMPLATE | 0x81)] HRESULT Name ([out, retval] BSTR *name);
+  [propput, id (FSRM_DISPID_FILESCREEN_TEMPLATE | 0x81)] HRESULT Name ([in] BSTR name);
+  [id (FSRM_DISPID_FILESCREEN_TEMPLATE | 0x1)] HRESULT CopyTemplate ([in] BSTR fileScreenTemplateName);
+  [id (FSRM_DISPID_FILESCREEN_TEMPLATE | 0x2)] HRESULT CommitAndUpdateDerived ([in] FsrmCommitOptions commitOptions,[in] FsrmTemplateApplyOptions applyOptions,[out, retval] IFsrmDerivedObjectsResult **derivedObjectsResult);
+};
+
+[object, uuid (e1010359-3e5d-4ecd-9fe4-ef48622fdf30), dual, pointer_default (unique)]
+interface IFsrmFileScreenTemplateImported : IFsrmFileScreenTemplate {
+  [propget, id (FSRM_DISPID_FILESCREEN_TEMPLATE_IMPORTED | 0x81)] HRESULT OverwriteOnCommit ([out, retval] VARIANT_BOOL *overwrite);
+  [propput, id (FSRM_DISPID_FILESCREEN_TEMPLATE_IMPORTED | 0x81)] HRESULT OverwriteOnCommit ([in] VARIANT_BOOL overwrite);
+};
+cpp_quote("#endif")