/*++ Copyright (c) 1999 Microsoft Corporation Module Name: exclist.h Abstract: Set of APIs to manage exclusion lists of objects of various well-known types. Author: Ovidiu Temereanca (ovidiut) 23-Nov-1999 Revision History: --*/ // // Macro expansion list // #define EXCLUSIONLIST_TYPES \ DEFMAC(ELT_UNUSED, "Unused") \ DEFMAC(ELT_REGISTRY, "Registry") \ DEFMAC(ELT_FILE, "File") \ DEFMAC(ELT_EXTRA1, "Extra1") \ DEFMAC(ELT_EXTRA2, "Extra2") \ DEFMAC(ELT_EXTRA3, "Extra3") \ DEFMAC(ELT_EXTRA4, "Extra4") \ DEFMAC(ELT_EXTRA5, "Extra5") \ DEFMAC(ELT_EXTRA6, "Extra6") \ DEFMAC(ELT_EXTRA7, "Extra7") \ DEFMAC(ELT_EXTRA8, "Extra8") \ // this needs work in order to work with extensible types // // Types // #define DEFMAC(TypeId,TypeName) TypeId, // // these should map 1:1 with MIG_*_TYPE in ism.h for ease of use // typedef enum { EXCLUSIONLIST_TYPES /* , */ ELT_LAST }; #undef DEFMAC // // API // BOOL ElInitialize ( VOID ); VOID ElTerminateA ( VOID ); VOID ElTerminateW ( VOID ); DWORD ElGetTypeId ( IN PCSTR TypeName ); PCSTR ElGetTypeName ( IN DWORD TypeId ); BOOL ElAddA ( IN DWORD ObjectType, IN PCSTR ObjectName ); BOOL ElAddW ( IN DWORD ObjectType, IN PCWSTR ObjectName ); VOID ElRemoveAllA ( VOID ); VOID ElRemoveAllW ( VOID ); BOOL ElIsExcludedA ( IN DWORD ObjectType, IN PCSTR Object ); BOOL ElIsExcludedW ( IN DWORD ObjectType, IN PCWSTR Object ); BOOL ElIsExcluded2A ( IN DWORD ObjectType, IN PCSTR Node, OPTIONAL IN PCSTR Leaf OPTIONAL ); BOOL ElIsExcluded2W ( IN DWORD ObjectType, IN PCWSTR Node, OPTIONAL IN PCWSTR Leaf OPTIONAL ); BOOL ElIsTreeExcludedA ( IN DWORD ObjectType, IN PCSTR TreePattern ); BOOL ElIsTreeExcludedW ( IN DWORD ObjectType, IN PCWSTR TreePattern ); BOOL ElIsTreeExcluded2A ( IN DWORD ObjectType, IN PCSTR Root, IN PCSTR LeafPattern OPTIONAL ); BOOL ElIsTreeExcluded2W ( IN DWORD ObjectType, IN PCWSTR Root, IN PCWSTR Leaf OPTIONAL ); BOOL ElIsObsPatternExcludedA ( IN DWORD ObjectType, IN POBSPARSEDPATTERNA Pattern ); BOOL ElIsObsPatternExcludedW ( IN DWORD ObjectType, IN POBSPARSEDPATTERNW Pattern ); // // Macros // #ifdef UNICODE #define ElAdd ElAddW #define ElTerminate ElTerminateW #define ElRemoveAll ElRemoveAllW #define ElIsExcluded ElIsExcludedW #define ElIsExcluded2 ElIsExcluded2W #define ElIsTreeExcluded ElIsTreeExcludedW #define ElIsTreeExcluded2 ElIsTreeExcluded2W #define ElIsObsPatternExcluded ElIsObsPatternExcludedW #else #define ElAdd ElAddA #define ElTerminate ElTerminateA #define ElRemoveAll ElRemoveAllA #define ElIsExcluded ElIsExcludedA #define ElIsExcluded2 ElIsExcluded2A #define ElIsTreeExcluded ElIsTreeExcludedA #define ElIsTreeExcluded2 ElIsTreeExcluded2A #define ElIsObsPatternExcluded ElIsObsPatternExcludedA #endif