348 lines
10 KiB
C
348 lines
10 KiB
C
|
#ifndef _schema_h_
|
||
|
#define _schema_h_
|
||
|
|
||
|
#include "globalconstants.h"
|
||
|
|
||
|
//
|
||
|
// Forward declarations
|
||
|
//
|
||
|
struct METABASE_KEYTYPE;
|
||
|
struct METABASE_KEYTYPE_NODE;
|
||
|
|
||
|
|
||
|
//
|
||
|
// DataTypes
|
||
|
//
|
||
|
struct METABASE_KEYTYPE
|
||
|
{
|
||
|
//
|
||
|
// Not populated automatically for static data
|
||
|
//
|
||
|
LPWSTR m_pszName;
|
||
|
|
||
|
//
|
||
|
// This is the list of keytypes that can contain this keytype
|
||
|
// (the opposite of the container class list)
|
||
|
//
|
||
|
// Populated automatically even for static data
|
||
|
//
|
||
|
METABASE_KEYTYPE_NODE* m_pKtListInverseCCL;
|
||
|
|
||
|
//
|
||
|
// Not populated automatically for static data
|
||
|
//
|
||
|
LPCWSTR m_pszDisallowDeletionNode;
|
||
|
};
|
||
|
|
||
|
struct METABASE_KEYTYPE_NODE
|
||
|
{
|
||
|
const METABASE_KEYTYPE* m_pKt;
|
||
|
METABASE_KEYTYPE_NODE* m_pKtNext;
|
||
|
};
|
||
|
|
||
|
struct WMI_METHOD_PARAM
|
||
|
{
|
||
|
LPWSTR pszParamName;
|
||
|
CIMTYPE type;
|
||
|
ULONG iInOut;
|
||
|
};
|
||
|
|
||
|
struct WMI_METHOD
|
||
|
{
|
||
|
LPWSTR pszMethodName;
|
||
|
DWORD dwMDId;
|
||
|
|
||
|
LPWSTR pszRetType;
|
||
|
WMI_METHOD_PARAM** ppParams;
|
||
|
|
||
|
LPWSTR pszDescription;
|
||
|
};
|
||
|
|
||
|
struct METABASE_PROPERTY
|
||
|
{
|
||
|
LPWSTR pszPropName;
|
||
|
DWORD dwMDIdentifier;
|
||
|
DWORD dwMDUserType;
|
||
|
DWORD dwMDDataType;
|
||
|
DWORD dwMDMask; // if this is set to all bits on, it means this is bool, but not part of a flag.
|
||
|
DWORD dwMDAttributes;
|
||
|
BOOL fReadOnly;
|
||
|
|
||
|
// if DWORD_METADATA, pDefaultValue points to the above dwDefaultValue.
|
||
|
// otherwise it points to memory in pool.
|
||
|
LPVOID pDefaultValue;
|
||
|
|
||
|
// used for DWORD_METADATA
|
||
|
DWORD dwDefaultValue;
|
||
|
};
|
||
|
|
||
|
struct WMI_CLASS
|
||
|
{
|
||
|
LPWSTR pszClassName;
|
||
|
LPWSTR pszMetabaseKey;
|
||
|
LPWSTR pszKeyName;
|
||
|
METABASE_PROPERTY** ppmbp;
|
||
|
METABASE_KEYTYPE* pkt;
|
||
|
WMI_METHOD** ppMethod;
|
||
|
DWORD dwExtended;
|
||
|
|
||
|
// This is only set for hardcoded wmi classes. Otherwise, the defaults
|
||
|
// at the top of this file are used.
|
||
|
LPWSTR pszParentClass;
|
||
|
|
||
|
//
|
||
|
// Whether we let users create instances of this class.
|
||
|
// Some examples where this is false are IIsFtpService, IIsWebService, etc.
|
||
|
//
|
||
|
bool bCreateAllowed;
|
||
|
|
||
|
// This pointer is only valid during initialization time.
|
||
|
// It points to mbschema.bin
|
||
|
LPWSTR pszDescription;
|
||
|
};
|
||
|
|
||
|
struct WMI_ASSOCIATION_TYPE
|
||
|
{
|
||
|
LPWSTR pszLeft;
|
||
|
LPWSTR pszRight;
|
||
|
|
||
|
LPWSTR pszParent;
|
||
|
LPWSTR pszExtParent;
|
||
|
};
|
||
|
|
||
|
struct WMI_ASSOCIATION
|
||
|
{
|
||
|
LPWSTR pszAssociationName;
|
||
|
WMI_CLASS* pcLeft;
|
||
|
WMI_CLASS* pcRight;
|
||
|
WMI_ASSOCIATION_TYPE *pType;
|
||
|
DWORD fFlags;
|
||
|
DWORD dwExtended;
|
||
|
|
||
|
LPWSTR pszParentClass;
|
||
|
};
|
||
|
|
||
|
|
||
|
//
|
||
|
// Hardcoded Data
|
||
|
//
|
||
|
struct METABASE_KEYTYPE_DATA
|
||
|
{
|
||
|
static METABASE_KEYTYPE s_IIsApplicationPool;
|
||
|
static METABASE_KEYTYPE s_IIsApplicationPools;
|
||
|
static METABASE_KEYTYPE s_IIsCertMapper;
|
||
|
static METABASE_KEYTYPE s_IIsCompressionScheme;
|
||
|
static METABASE_KEYTYPE s_IIsCompressionSchemes;
|
||
|
static METABASE_KEYTYPE s_IIsComputer;
|
||
|
static METABASE_KEYTYPE s_IIsCustomLogModule;
|
||
|
static METABASE_KEYTYPE s_IIsFilter;
|
||
|
static METABASE_KEYTYPE s_IIsFilters;
|
||
|
static METABASE_KEYTYPE s_IIsFtpInfo;
|
||
|
static METABASE_KEYTYPE s_IIsFtpServer;
|
||
|
static METABASE_KEYTYPE s_IIsFtpService;
|
||
|
static METABASE_KEYTYPE s_IIsFtpVirtualDir;
|
||
|
static METABASE_KEYTYPE s_IIsImapInfo;
|
||
|
static METABASE_KEYTYPE s_IIsImapService;
|
||
|
static METABASE_KEYTYPE s_IIsLogModule;
|
||
|
static METABASE_KEYTYPE s_IIsLogModules;
|
||
|
static METABASE_KEYTYPE s_IIsMimeMap;
|
||
|
static METABASE_KEYTYPE s_IIsNntpInfo;
|
||
|
static METABASE_KEYTYPE s_IIsNntpService;
|
||
|
static METABASE_KEYTYPE s_IIsObject;
|
||
|
static METABASE_KEYTYPE s_IIsPop3Info;
|
||
|
static METABASE_KEYTYPE s_IIsPop3Service;
|
||
|
static METABASE_KEYTYPE s_IIsSmtpInfo;
|
||
|
static METABASE_KEYTYPE s_IIsSmtpService;
|
||
|
static METABASE_KEYTYPE s_IIsWebDirectory;
|
||
|
static METABASE_KEYTYPE s_IIsWebFile;
|
||
|
static METABASE_KEYTYPE s_IIsWebInfo;
|
||
|
static METABASE_KEYTYPE s_IIsWebServer;
|
||
|
static METABASE_KEYTYPE s_IIsWebService;
|
||
|
static METABASE_KEYTYPE s_IIsWebVirtualDir;
|
||
|
|
||
|
static METABASE_KEYTYPE s_TYPE_AdminACL;
|
||
|
static METABASE_KEYTYPE s_TYPE_AdminACE;
|
||
|
static METABASE_KEYTYPE s_TYPE_IPSecurity;
|
||
|
static METABASE_KEYTYPE s_NO_TYPE;
|
||
|
|
||
|
static METABASE_KEYTYPE* s_MetabaseKeyTypes[];
|
||
|
};
|
||
|
|
||
|
struct METABASE_PROPERTY_DATA
|
||
|
{
|
||
|
static METABASE_PROPERTY s_KeyType;
|
||
|
static METABASE_PROPERTY s_ServerComment;
|
||
|
static METABASE_PROPERTY s_ServerBindings;
|
||
|
static METABASE_PROPERTY s_Path;
|
||
|
static METABASE_PROPERTY s_AppRoot;
|
||
|
|
||
|
static METABASE_PROPERTY* s_MetabaseProperties[];
|
||
|
};
|
||
|
|
||
|
struct WMI_METHOD_PARAM_DATA
|
||
|
{
|
||
|
static WMI_METHOD_PARAM s_Applications;
|
||
|
static WMI_METHOD_PARAM s_AppMode;
|
||
|
static WMI_METHOD_PARAM s_BackupDateTimeOut;
|
||
|
static WMI_METHOD_PARAM s_BackupFlags;
|
||
|
static WMI_METHOD_PARAM s_BackupLocation;
|
||
|
static WMI_METHOD_PARAM s_BackupLocation_io;
|
||
|
static WMI_METHOD_PARAM s_BackupVersion;
|
||
|
static WMI_METHOD_PARAM s_BackupVersionOut;
|
||
|
static WMI_METHOD_PARAM s_DestPath;
|
||
|
static WMI_METHOD_PARAM s_EnumIndex;
|
||
|
static WMI_METHOD_PARAM s_FileName;
|
||
|
static WMI_METHOD_PARAM s_HistoryTime;
|
||
|
static WMI_METHOD_PARAM s_IEnabled;
|
||
|
static WMI_METHOD_PARAM s_IEnabled_o;
|
||
|
static WMI_METHOD_PARAM s_IMethod;
|
||
|
static WMI_METHOD_PARAM s_IndexIn;
|
||
|
static WMI_METHOD_PARAM s_InProcFlag;
|
||
|
static WMI_METHOD_PARAM s_AppPoolName;
|
||
|
static WMI_METHOD_PARAM s_bCreate;
|
||
|
static WMI_METHOD_PARAM s_MajorVersion;
|
||
|
static WMI_METHOD_PARAM s_MajorVersion_o;
|
||
|
static WMI_METHOD_PARAM s_MDFlags;
|
||
|
static WMI_METHOD_PARAM s_MDHistoryLocation;
|
||
|
static WMI_METHOD_PARAM s_MDHistoryLocation_io;
|
||
|
static WMI_METHOD_PARAM s_MinorVersion;
|
||
|
static WMI_METHOD_PARAM s_MinorVersion_o;
|
||
|
static WMI_METHOD_PARAM s_NtAcct;
|
||
|
static WMI_METHOD_PARAM s_NtAcct_o;
|
||
|
static WMI_METHOD_PARAM s_NtPwd;
|
||
|
static WMI_METHOD_PARAM s_NtPwd_o;
|
||
|
static WMI_METHOD_PARAM s_Password;
|
||
|
static WMI_METHOD_PARAM s_Passwd;
|
||
|
static WMI_METHOD_PARAM s_PathOfRootVirtualDir;
|
||
|
static WMI_METHOD_PARAM s_Recursive;
|
||
|
static WMI_METHOD_PARAM s_ServerComment;
|
||
|
static WMI_METHOD_PARAM s_ServerBindings;
|
||
|
static WMI_METHOD_PARAM s_ServerId;
|
||
|
static WMI_METHOD_PARAM s_ServerMode;
|
||
|
static WMI_METHOD_PARAM s_SourcePath;
|
||
|
static WMI_METHOD_PARAM s_strName;
|
||
|
static WMI_METHOD_PARAM s_strName_o;
|
||
|
static WMI_METHOD_PARAM s_vCert;
|
||
|
static WMI_METHOD_PARAM s_vCert_o;
|
||
|
static WMI_METHOD_PARAM s_vKey;
|
||
|
|
||
|
static WMI_METHOD_PARAM* s_ServiceCreateNewServer[];
|
||
|
static WMI_METHOD_PARAM* s_GetCurrentMode[];
|
||
|
|
||
|
static WMI_METHOD_PARAM* s_AppCreate[];
|
||
|
static WMI_METHOD_PARAM* s_AppCreate2[];
|
||
|
static WMI_METHOD_PARAM* s_AppDelete[];
|
||
|
static WMI_METHOD_PARAM* s_AppUnLoad[];
|
||
|
static WMI_METHOD_PARAM* s_AppDisable[];
|
||
|
static WMI_METHOD_PARAM* s_AppEnable[];
|
||
|
|
||
|
static WMI_METHOD_PARAM* s_BackupWithPasswd[];
|
||
|
static WMI_METHOD_PARAM* s_DeleteBackup[];
|
||
|
static WMI_METHOD_PARAM* s_EnumBackups[];
|
||
|
static WMI_METHOD_PARAM* s_RestoreWithPasswd[];
|
||
|
static WMI_METHOD_PARAM* s_Export[];
|
||
|
static WMI_METHOD_PARAM* s_Import[];
|
||
|
static WMI_METHOD_PARAM* s_RestoreHistory[];
|
||
|
static WMI_METHOD_PARAM* s_EnumHistory[];
|
||
|
|
||
|
static WMI_METHOD_PARAM* s_CreateMapping[];
|
||
|
static WMI_METHOD_PARAM* s_DeleteMapping[];
|
||
|
static WMI_METHOD_PARAM* s_GetMapping[];
|
||
|
static WMI_METHOD_PARAM* s_SetAcct[];
|
||
|
static WMI_METHOD_PARAM* s_SetEnabled[];
|
||
|
static WMI_METHOD_PARAM* s_SetName[];
|
||
|
static WMI_METHOD_PARAM* s_SetPwd[];
|
||
|
|
||
|
static WMI_METHOD_PARAM* s_EnumAppsInPool[];
|
||
|
};
|
||
|
|
||
|
struct WMI_METHOD_DATA
|
||
|
{
|
||
|
static WMI_METHOD s_ServiceCreateNewServer;
|
||
|
static WMI_METHOD s_GetCurrentMode;
|
||
|
|
||
|
static WMI_METHOD s_ServerStart;
|
||
|
static WMI_METHOD s_ServerStop;
|
||
|
static WMI_METHOD s_ServerContinue;
|
||
|
static WMI_METHOD s_ServerPause;
|
||
|
|
||
|
static WMI_METHOD s_AppCreate;
|
||
|
static WMI_METHOD s_AppCreate2;
|
||
|
static WMI_METHOD s_AppDelete;
|
||
|
static WMI_METHOD s_AppUnLoad;
|
||
|
static WMI_METHOD s_AppDisable;
|
||
|
static WMI_METHOD s_AppEnable;
|
||
|
static WMI_METHOD s_AppGetStatus;
|
||
|
static WMI_METHOD s_AspAppRestart;
|
||
|
|
||
|
static WMI_METHOD s_SaveData;
|
||
|
static WMI_METHOD s_BackupWithPasswd;
|
||
|
static WMI_METHOD s_DeleteBackup;
|
||
|
static WMI_METHOD s_EnumBackups;
|
||
|
static WMI_METHOD s_RestoreWithPasswd;
|
||
|
static WMI_METHOD s_Export;
|
||
|
static WMI_METHOD s_Import;
|
||
|
static WMI_METHOD s_RestoreHistory;
|
||
|
static WMI_METHOD s_EnumHistory;
|
||
|
|
||
|
static WMI_METHOD s_CreateMapping;
|
||
|
static WMI_METHOD s_DeleteMapping;
|
||
|
static WMI_METHOD s_GetMapping;
|
||
|
static WMI_METHOD s_SetAcct;
|
||
|
static WMI_METHOD s_SetEnabled;
|
||
|
static WMI_METHOD s_SetName;
|
||
|
static WMI_METHOD s_SetPwd;
|
||
|
|
||
|
static WMI_METHOD s_EnumAppsInPool;
|
||
|
static WMI_METHOD s_RecycleAppPool;
|
||
|
static WMI_METHOD s_Start;
|
||
|
static WMI_METHOD s_Stop;
|
||
|
|
||
|
static WMI_METHOD* s_WebServiceMethods[];
|
||
|
static WMI_METHOD* s_ServiceMethods[];
|
||
|
static WMI_METHOD* s_ServerMethods[];
|
||
|
static WMI_METHOD* s_WebAppMethods[];
|
||
|
static WMI_METHOD* s_ComputerMethods[];
|
||
|
static WMI_METHOD* s_CertMapperMethods[];
|
||
|
static WMI_METHOD* s_AppPoolMethods[];
|
||
|
};
|
||
|
|
||
|
struct WMI_CLASS_DATA
|
||
|
{
|
||
|
static WMI_CLASS s_Computer;
|
||
|
static WMI_CLASS s_ComputerSetting;
|
||
|
static WMI_CLASS s_FtpService;
|
||
|
static WMI_CLASS s_FtpServer;
|
||
|
static WMI_CLASS s_FtpVirtualDir;
|
||
|
static WMI_CLASS s_WebService;
|
||
|
static WMI_CLASS s_WebFilter;
|
||
|
static WMI_CLASS s_WebServer;
|
||
|
static WMI_CLASS s_WebCertMapper;
|
||
|
static WMI_CLASS s_WebVirtualDir;
|
||
|
static WMI_CLASS s_WebDirectory;
|
||
|
static WMI_CLASS s_WebFile;
|
||
|
static WMI_CLASS s_ApplicationPool;
|
||
|
|
||
|
static WMI_CLASS s_AdminACL;
|
||
|
static WMI_CLASS s_ACE;
|
||
|
static WMI_CLASS s_IPSecurity;
|
||
|
|
||
|
static WMI_CLASS* s_WmiClasses[];
|
||
|
};
|
||
|
|
||
|
struct WMI_ASSOCIATION_TYPE_DATA
|
||
|
{
|
||
|
static WMI_ASSOCIATION_TYPE s_ElementSetting;
|
||
|
static WMI_ASSOCIATION_TYPE s_Component;
|
||
|
static WMI_ASSOCIATION_TYPE s_AdminACL;
|
||
|
static WMI_ASSOCIATION_TYPE s_IPSecurity;
|
||
|
};
|
||
|
|
||
|
struct WMI_ASSOCIATION_DATA
|
||
|
{
|
||
|
static WMI_ASSOCIATION s_AdminACLToACE;
|
||
|
static WMI_ASSOCIATION* s_WmiAssociations[];
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif
|