/*** Autogenerated by WIDL 6.0-rc3 from include/fsrmenums.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __fsrmenums_h__
#define __fsrmenums_h__

/* Forward declarations */

/* Headers for imported files */

#include <oaidl.h>

#ifdef __cplusplus
extern "C" {
#endif

#include <winapifamily.h>

#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
typedef enum _FsrmAccountType {
    FsrmAccountType_Unknown = 0,
    FsrmAccountType_NetworkService = 1,
    FsrmAccountType_LocalService = 2,
    FsrmAccountType_LocalSystem = 3,
    FsrmAccountType_InProc = 4,
    FsrmAccountType_External = 5,
    FsrmAccountType_Automatic = 500
} FsrmAccountType;
typedef enum _FsrmActionType {
    FsrmActionType_Unknown = 0,
    FsrmActionType_EventLog = 1,
    FsrmActionType_Email = 2,
    FsrmActionType_Command = 3,
    FsrmActionType_Report = 4
} FsrmActionType;
typedef enum _AdrClientDisplayFlags {
    AdrClientDisplayFlags_AllowEmailRequests = 0x1,
    AdrClientDisplayFlags_ShowDeviceTroubleshooting = 0x2
} AdrClientDisplayFlags;
typedef enum _AdrClientErrorType {
    AdrClientErrorType_Unknown = 0,
    AdrClientErrorType_AccessDenied = 1,
    AdrClientErrorType_FileNotFound = 2
} AdrClientErrorType;
typedef enum _AdrClientFlags {
    AdrClientFlags_None = 0x0,
    AdrClientFlags_FailForLocalPaths = 0x1,
    AdrClientFlags_FailIfNotSupportedByServer = 0x2,
    AdrClientFlags_FailIfNotDomainJoined = 0x4
} AdrClientFlags;
typedef enum _AdrEmailFlags {
    AdrEmailFlags_PutDataOwnerOnToLine = 0x1,
    AdrEmailFlags_PutAdminOnToLine = 0x2,
    AdrEmailFlags_IncludeDeviceClaims = 0x4,
    AdrEmailFlags_IncludeUserInfo = 0x8,
    AdrEmailFlags_GenerateEventLog = 0x10
} AdrEmailFlags;
typedef enum _FsrmClassificationLoggingFlags {
    FsrmClassificationLoggingFlags_None = 0x0,
    FsrmClassificationLoggingFlags_ClassificationsInLogFile = 0x1,
    FsrmClassificationLoggingFlags_ErrorsInLogFile = 0x2,
    FsrmClassificationLoggingFlags_ClassificationsInSystemLog = 0x4,
    FsrmClassificationLoggingFlags_ErrorsInSystemLog = 0x8
} FsrmClassificationLoggingFlags;
typedef enum _FsrmCollectionState {
    FsrmCollectionState_Fetching = 1,
    FsrmCollectionState_Committing = 2,
    FsrmCollectionState_Complete = 3,
    FsrmCollectionState_Cancelled = 4
} FsrmCollectionState;
typedef enum _FsrmCommitOptions {
    FsrmCommitOptions_None = 0x0,
    FsrmCommitOptions_Asynchronous = 0x1
} FsrmCommitOptions;
typedef enum _FsrmEnumOptions {
    FsrmEnumOptions_None = 0x0,
    FsrmEnumOptions_Asynchronous = 0x1,
    FsrmEnumOptions_CheckRecycleBin = 0x2,
    FsrmEnumOptions_IncludeClusterNodes = 0x4,
    FsrmEnumOptions_IncludeDeprecatedObjects = 0x8
} FsrmEnumOptions;
typedef enum _FsrmEventType {
    FsrmEventType_Unknown = 0,
    FsrmEventType_Information = 1,
    FsrmEventType_Warning = 2,
    FsrmEventType_Error = 3
} FsrmEventType;
typedef enum _FsrmExecutionOption {
    FsrmExecutionOption_Unknown = 0,
    FsrmExecutionOption_EvaluateUnset = 1,
    FsrmExecutionOption_ReEvaluate_ConsiderExistingValue = 2,
    FsrmExecutionOption_ReEvaluate_IgnoreExistingValue = 3
} FsrmExecutionOption;
typedef enum _FsrmFileConditionType {
    FsrmFileConditionType_Unknown = 0,
    FsrmFileConditionType_Property = 1
} FsrmFileConditionType;
typedef enum _FsrmFileManagementLoggingFlags {
    FsrmFileManagementLoggingFlags_None = 0x0,
    FsrmFileManagementLoggingFlags_Error = 0x1,
    FsrmFileManagementLoggingFlags_Information = 0x2,
    FsrmFileManagementLoggingFlags_Audit = 0x4
} FsrmFileManagementLoggingFlags;
typedef enum _FsrmFileManagementType {
    FsrmFileManagementType_Unknown = 0,
    FsrmFileManagementType_Expiration = 1,
    FsrmFileManagementType_Custom = 2,
    FsrmFileManagementType_Rms = 3
} FsrmFileManagementType;
typedef enum _FsrmFileScreenFlags {
    FsrmFileScreenFlags_Enforce = 0x1
} FsrmFileScreenFlags;
typedef enum _FsrmFileStreamingInterfaceType {
    FsrmFileStreamingInterfaceType_Unknown = 0x0,
    FsrmFileStreamingInterfaceType_ILockBytes = 0x1,
    FsrmFileStreamingInterfaceType_IStream = 0x2
} FsrmFileStreamingInterfaceType;
typedef enum _FsrmFileStreamingMode {
    FsrmFileStreamingMode_Unknown = 0x0,
    FsrmFileStreamingMode_Read = 0x1,
    FsrmFileStreamingMode_Write = 0x2
} FsrmFileStreamingMode;
typedef enum _FsrmFileSystemPropertyId {
    FsrmFileSystemPropertyId_Undefined = 0,
    FsrmFileSystemPropertyId_FileName = 1,
    FsrmFileSystemPropertyId_DateCreated = 2,
    FsrmFileSystemPropertyId_DateLastAccessed = 3,
    FsrmFileSystemPropertyId_DateLastModified = 4,
    FsrmFileSystemPropertyId_DateNow = 5
} FsrmFileSystemPropertyId;
typedef enum _FsrmGetFilePropertyOptions {
    FsrmGetFilePropertyOptions_None = 0x0,
    FsrmGetFilePropertyOptions_NoRuleEvaluation = 0x1,
    FsrmGetFilePropertyOptions_Persistent = 0x2,
    FsrmGetFilePropertyOptions_FailOnPersistErrors = 0x4,
    FsrmGetFilePropertyOptions_SkipOrphaned = 0x8
} FsrmGetFilePropertyOptions;
typedef enum _FsrmPipelineModuleType {
    FsrmPipelineModuleType_Unknown = 0,
    FsrmPipelineModuleType_Storage = 1,
    FsrmPipelineModuleType_Classifier = 2
} FsrmPipelineModuleType;
typedef enum _FsrmPropertyBagField {
    FsrmPropertyBagField_AccessVolume = 0,
    FsrmPropertyBagField_VolumeGuidName = 1
} FsrmPropertyBagField;
typedef enum _FsrmPropertyBagFlags {
    FsrmPropertyBagFlags_UpdatedByClassifier = 0x1,
    FsrmPropertyBagFlags_FailedLoadingProperties = 0x2,
    FsrmPropertyBagFlags_FailedSavingProperties = 0x4,
    FsrmPropertyBagFlags_FailedClassifyingProperties = 0x8
} FsrmPropertyBagFlags;
typedef enum _FsrmPropertyConditionType {
    FsrmPropertyConditionType_Unknown = 0,
    FsrmPropertyConditionType_Equal = 1,
    FsrmPropertyConditionType_NotEqual = 2,
    FsrmPropertyConditionType_GreaterThan = 3,
    FsrmPropertyConditionType_LessThan = 4,
    FsrmPropertyConditionType_Contain = 5,
    FsrmPropertyConditionType_Exist = 6,
    FsrmPropertyConditionType_NotExist = 7,
    FsrmPropertyConditionType_StartWith = 8,
    FsrmPropertyConditionType_EndWith = 9,
    FsrmPropertyConditionType_ContainedIn = 10,
    FsrmPropertyConditionType_PrefixOf = 11,
    FsrmPropertyConditionType_SuffixOf = 12,
    FsrmPropertyConditionType_MatchesPattern = 13
} FsrmPropertyConditionType;
typedef enum _FsrmPropertyDefinitionAppliesTo {
    FsrmPropertyDefinitionAppliesTo_Files = 0x1,
    FsrmPropertyDefinitionAppliesTo_Folders = 0x2
} FsrmPropertyDefinitionAppliesTo;
typedef enum _FsrmPropertyDefinitionFlags {
    FsrmPropertyDefinitionFlags_Global = 0x1,
    FsrmPropertyDefinitionFlags_Deprecated = 0x2,
    FsrmPropertyDefinitionFlags_Secure = 0x4
} FsrmPropertyDefinitionFlags;
typedef enum _FsrmPropertyDefinitionType {
    FsrmPropertyDefinitionType_Unknown = 0,
    FsrmPropertyDefinitionType_OrderedList = 1,
    FsrmPropertyDefinitionType_MultiChoiceList = 2,
    FsrmPropertyDefinitionType_SingleChoiceList = 3,
    FsrmPropertyDefinitionType_String = 4,
    FsrmPropertyDefinitionType_MultiString = 5,
    FsrmPropertyDefinitionType_Int = 6,
    FsrmPropertyDefinitionType_Bool = 7,
    FsrmPropertyDefinitionType_Date = 8
} FsrmPropertyDefinitionType;
typedef enum _FsrmPropertyFlags {
    FsrmPropertyFlags_None = 0x0,
    FsrmPropertyFlags_Orphaned = 0x1,
    FsrmPropertyFlags_RetrievedFromCache = 0x2,
    FsrmPropertyFlags_RetrievedFromStorage = 0x4,
    FsrmPropertyFlags_SetByClassifier = 0x8,
    FsrmPropertyFlags_Deleted = 0x10,
    FsrmPropertyFlags_Reclassified = 0x20,
    FsrmPropertyFlags_AggregationFailed = 0x40,
    FsrmPropertyFlags_Existing = 0x80,
    FsrmPropertyFlags_FailedLoadingProperties = 0x100,
    FsrmPropertyFlags_FailedClassifyingProperties = 0x200,
    FsrmPropertyFlags_FailedSavingProperties = 0x400,
    FsrmPropertyFlags_Secure = 0x800,
    FsrmPropertyFlags_PolicyDerived = 0x1000,
    FsrmPropertyFlags_Inherited = 0x2000,
    FsrmPropertyFlags_Manual = 0x4000,
    FsrmPropertyFlags_ExplicitValueDeleted = 0x8000,
    FsrmPropertyFlags_PropertySourceMask = (FsrmPropertyFlags_RetrievedFromCache | FsrmPropertyFlags_RetrievedFromStorage) | FsrmPropertyFlags_SetByClassifier,
    FsrmPropertyFlags_PersistentMask = FsrmPropertyFlags_PolicyDerived | FsrmPropertyFlags_Manual
} FsrmPropertyFlags;
typedef enum _FsrmPropertyValueType {
    FsrmPropertyValueType_Undefined = 0,
    FsrmPropertyValueType_Literal = 1,
    FsrmPropertyValueType_DateOffset = 2
} FsrmPropertyValueType;
typedef enum _FsrmQuotaFlags {
    FsrmQuotaFlags_Enforce = 0x100,
    FsrmQuotaFlags_Disable = 0x200,
    FsrmQuotaFlags_StatusIncomplete = 0x10000,
    FsrmQuotaFlags_StatusRebuilding = 0x20000
} FsrmQuotaFlags;
typedef enum _FsrmReportFilter {
    FsrmReportFilter_MinSize = 1,
    FsrmReportFilter_MinAgeDays = 2,
    FsrmReportFilter_MaxAgeDays = 3,
    FsrmReportFilter_MinQuotaUsage = 4,
    FsrmReportFilter_FileGroups = 5,
    FsrmReportFilter_Owners = 6,
    FsrmReportFilter_NamePattern = 7,
    FsrmReportFilter_Property = 8
} FsrmReportFilter;
typedef enum _FsrmReportFormat {
    FsrmReportFormat_Unknown = 0,
    FsrmReportFormat_DHtml = 1,
    FsrmReportFormat_Html = 2,
    FsrmReportFormat_Txt = 3,
    FsrmReportFormat_Csv = 4,
    FsrmReportFormat_Xml = 5
} FsrmReportFormat;
typedef enum _FsrmReportGenerationContext {
    FsrmReportGenerationContext_Undefined = 1,
    FsrmReportGenerationContext_ScheduledReport = 2,
    FsrmReportGenerationContext_InteractiveReport = 3,
    FsrmReportGenerationContext_IncidentReport = 4
} FsrmReportGenerationContext;
typedef enum _FsrmReportLimit {
    FsrmReportLimit_MaxFiles = 1,
    FsrmReportLimit_MaxFileGroups = 2,
    FsrmReportLimit_MaxOwners = 3,
    FsrmReportLimit_MaxFilesPerFileGroup = 4,
    FsrmReportLimit_MaxFilesPerOwner = 5,
    FsrmReportLimit_MaxFilesPerDuplGroup = 6,
    FsrmReportLimit_MaxDuplicateGroups = 7,
    FsrmReportLimit_MaxQuotas = 8,
    FsrmReportLimit_MaxFileScreenEvents = 9,
    FsrmReportLimit_MaxPropertyValues = 10,
    FsrmReportLimit_MaxFilesPerPropertyValue = 11,
    FsrmReportLimit_MaxFolders = 12
} FsrmReportLimit;
typedef enum _FsrmReportRunningStatus {
    FsrmReportRunningStatus_Unknown = 0,
    FsrmReportRunningStatus_NotRunning = 1,
    FsrmReportRunningStatus_Queued = 2,
    FsrmReportRunningStatus_Running = 3
} FsrmReportRunningStatus;
typedef enum _FsrmReportType {
    FsrmReportType_Unknown = 0,
    FsrmReportType_LargeFiles = 1,
    FsrmReportType_FilesByType = 2,
    FsrmReportType_LeastRecentlyAccessed = 3,
    FsrmReportType_MostRecentlyAccessed = 4,
    FsrmReportType_QuotaUsage = 5,
    FsrmReportType_FilesByOwner = 6,
    FsrmReportType_ExportReport = 7,
    FsrmReportType_DuplicateFiles = 8,
    FsrmReportType_FileScreenAudit = 9,
    FsrmReportType_FilesByProperty = 10,
    FsrmReportType_AutomaticClassification = 11,
    FsrmReportType_Expiration = 12,
    FsrmReportType_FoldersByProperty = 13
} FsrmReportType;
typedef enum _FsrmRuleFlags {
    FsrmRuleFlags_Disabled = 0x100,
    FsrmRuleFlags_Invalid = 0x1000
} FsrmRuleFlags;
typedef enum _FsrmRuleType {
    FsrmRuleType_Unknown = 0,
    FsrmRuleType_Classification = 1,
    FsrmRuleType_Generic = 2
} FsrmRuleType;
typedef enum _FsrmStorageModuleCaps {
    FsrmStorageModuleCaps_Unknown = 0x0,
    FsrmStorageModuleCaps_CanGet = 0x1,
    FsrmStorageModuleCaps_CanSet = 0x2,
    FsrmStorageModuleCaps_CanHandleDirectories = 0x4,
    FsrmStorageModuleCaps_CanHandleFiles = 0x8
} FsrmStorageModuleCaps;
typedef enum _FsrmStorageModuleType {
    FsrmStorageModuleType_Unknown = 0,
    FsrmStorageModuleType_Cache = 1,
    FsrmStorageModuleType_InFile = 2,
    FsrmStorageModuleType_Database = 3,
    FsrmStorageModuleType_System = 100
} FsrmStorageModuleType;
typedef enum _FsrmTemplateApplyOptions {
    FsrmTemplateApplyOptions_ApplyToDerivedMatching = 1,
    FsrmTemplateApplyOptions_ApplyToDerivedAll = 2
} FsrmTemplateApplyOptions;
typedef GUID FSRM_OBJECT_ID;
#endif
/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __fsrmenums_h__ */
