windows-nt/Source/XPSP1/NT/shell/inc/evtmon/emrulini.h
2020-09-26 16:20:57 +08:00

144 lines
5.1 KiB
C

/*****************************************************************************
emrulini.h
Owner: DaleG
Copyright (c) 1992-1997 Microsoft Corporation
General Rule-Network Propagation Engine initialization types.
*****************************************************************************/
#ifndef EMRULINI_H
#define EMRULINI_H
MSOEXTERN_C_BEGIN // ***************** Begin extern "C" ********************
/*************************************************************************
Types:
rullims Rule limits/sizes structure.
ruldef Rule node initial definition structure.
rulinit Rule initialization structure.
*************************************************************************/
/* R U L L I M S */
/*----------------------------------------------------------------------------
%%Structure: RULLIMS
%%Contact: daleg
Rule base limits structure.
----------------------------------------------------------------------------*/
typedef struct _RULLIMS
{
short irulRulesMax; // Number of nodes
short irulVarsMax; // Number of var nds
short rulevtMax; // Num of event_types
short rulevlMax; // Num of eval levels
short rulgGroupMax; // Num dependency grps
short rulgRegularMax; // Num non-context grps
short clprulDependMax; // Num forward depends
short clprulBackDependMax; // Num backwrd depends
short ckwdMax; // Number of KWD recs
short cchKwdTextMax; // Len kwd text buffer
unsigned short cchNamesMax; // Name/string buf len
} RULLIMS;
/* R U L D E F */
/*----------------------------------------------------------------------------
%%Structure: RULDEF
%%Contact: daleg
Rule base node initialization structure.
----------------------------------------------------------------------------*/
typedef struct _RULDEF
{
short rulevl; // Event_type/Level
short bwDepend; // Fwd depend offset
short bwBackDepend; // Bkwd depend offset
const XCHAR *xstzKeywordName; // Keyword string
} RULDEF;
/* L P F N R U L C X T */
/*----------------------------------------------------------------------------
%%Structure: LPFNRULCXT
%%Contact: daleg
Rule base Context group callback function
----------------------------------------------------------------------------*/
typedef void (* LPFNRULCXT) (int irul, struct _RULCXT *lprulcxt);
/* R U L I N I T */
/*----------------------------------------------------------------------------
%%Structure: RULINIT
%%Contact: daleg
Rule base global initialization structure.
----------------------------------------------------------------------------*/
typedef int (WIN_CALLBACK *PFNEVAL)(short irul); // Rule Eval function
typedef struct _RULINIT
{
const RULLIMS *lprullims; // Rulebase limits
const RULDEF *lprulinit; // Rulebase def
const short *rgrulevlRulevt; // Event_type eval lvls
const short *rgirultkRulevtHistoryMax; // Evt history depths
const short *lprulgAppendTo; // Group linkages
const short *lprulgAppendedFrom; // Group linkages
const LPFNRULCXT *lplpfnrulcxt; // Context grp callbks
const short* const *lplpirulDependents; // Dependent lists
const short* const *lplpirulBackDependsOn; // DependsOn lists
PFNEVAL lpfnEvalRule; // Evaluate rule code
MSOKWTB **rgpkwtbKeyTables; // Keyword tables
const char * const *lpszRulNames; // Node names
} RULINIT;
typedef int (WIN_CALLBACK *LPFNRulinit)(struct _RULS *lpruls);
// Initialize pre-constructed rulebase of static nodes
MSOAPI_(int) MsoFInitStaticRuls(
struct _RULS *pruls,
struct _RULS *prulsInit
);
// Create and initialize rulebase of static nodes from compressed rulebase
MSOAPI_(int) MsoFInitCompressedRulebase(
struct _RULS *lpruls,
const RULINIT *lprulinit
);
#ifndef pNil
#define pNil NULL
#endif /* !pNil */
#define IN_DATASEG
#define NOT_IN_DATASEG
// Rule node type flags: shared with rule.h
#define rultRule 0x00 // Rule
#define rultEvent 0x01 // Event/Variable
#define rultPrimaryRule 0x02 // Rule auto-scheduled
#define rultActionRule 0x00 // Not really a flag
///#define rultNonTermRule 0x08
///#define rultSeqRule 0x10
MSOEXTERN_C_END // ****************** End extern "C" *********************
#endif /* EMRULINI_H */