WindowsXP-SP1/ds/adsi/ldapc/ldapsch.hxx
2020-09-30 16:53:49 +02:00

214 lines
3.9 KiB
C++

class FAR CSchemaLexer
{
public:
CSchemaLexer(LPTSTR szBuffer);
~CSchemaLexer();
BOOL
CSchemaLexer::IsKeyword(LPTSTR szToken, LPDWORD pdwToken);
TCHAR
CSchemaLexer::NextChar();
void
CSchemaLexer::PushbackChar();
HRESULT
CSchemaLexer::GetNextToken(LPTSTR szToken, LPDWORD pdwToken);
HRESULT
CSchemaLexer::GetNextToken2(LPTSTR szToken, LPDWORD pdwToken);
HRESULT
CSchemaLexer::PushBackToken();
private:
LPTSTR _ptr;
LPTSTR _Buffer;
DWORD _dwLastTokenLength;
DWORD _dwLastToken;
DWORD _dwEndofString;
BOOL _fInQuotes;
};
HRESULT
LdapGetSchema(
LPTSTR pszLDAPPath,
SCHEMAINFO **ppSchemaInfo,
CCredentials& Credentials,
DWORD dwPort
);
HRESULT
LdapRemoveSchemaInfoOnServer(
LPTSTR pszLDAPPath,
CCredentials& Credentials,
DWORD dwPort,
BOOL fForce = FALSE
);
VOID
FreePropertyInfoArray(
PROPERTYINFO *aProperties,
DWORD nProperties
);
VOID
FreeClassInfoArray(
CLASSINFO *aClasses,
DWORD nClasses
);
int
FindEntryInSearchTable(
LPTSTR pszName,
SEARCHENTRY *aSearchTable,
DWORD nSearchTableSize
);
int FindSearchTableIndex(
LPTSTR pszName,
SEARCHENTRY *aSearchTable,
DWORD nSearchTableSize
);
VOID SortAndRemoveDuplicateOIDs(
int *aOIDs,
DWORD *pnNumOfOIDs
);
VOID
SchemaInit(
VOID
);
VOID
SchemaCleanup(
VOID
);
int _cdecl intcmp(
const void *s1,
const void *s2
);
HRESULT
ReadSubSchemaSubEntry(
LPWSTR pszLDAPServer,
LPWSTR * ppszSubSchemaEntry,
OUT BOOL * pfBoundOk, // OPTIONAL, can be NULL
CCredentials& Credentials,
DWORD dwPort
);
HRESULT
ReadPagingSupportedAttr(
LPWSTR pszLDAPServer,
BOOL * pfPagingSupported,
CCredentials& Credentials,
DWORD dwPort
);
HRESULT
ReadSortingSupportedAttr(
LPWSTR pszLDAPServer,
BOOL * pfSortingSupported,
CCredentials& Credentials,
DWORD dwPort
);
HRESULT
ReadVLVSupportedAttr(
LPWSTR pszLDAPServer,
BOOL * pfVLVSupported,
CCredentials& Credentials,
DWORD dwPort
);
HRESULT
ReadAttribScopedSupportedAttr(
LPWSTR pszLDAPServer,
BOOL * pfAttribScopedSupported,
CCredentials& Credentials,
DWORD dwPort
);
HRESULT
ReadSecurityDescriptorControlType(
LPWSTR pszLDAPServer,
DWORD *pdwSecDescType,
CCredentials& Credentials,
DWORD dwPort
);
HRESULT
ReadDomScopeSupportedAttr(
LPWSTR pszLDAPServer,
BOOL * pfDomScopeSupported,
CCredentials& Credentials,
DWORD dwPort
);
HRESULT
ReadServerSupportsIsADControl(
LPWSTR pszLDAPServer,
BOOL * pfDomScopeSupported,
CCredentials& Credentials,
DWORD dwPort
);
HRESULT
ReadServerSupportsIsEnhancedAD(
LPWSTR pszLDAPServer,
BOOL * pfServerIsEnhancedAD,
BOOL * pfServerIsADControl,
CCredentials& Credentials,
DWORD dwPort
);
//
// Helper function to process the schema info into the format
// that we use internally.
//
HRESULT
ProcessSchemaInfo(
SCHEMAINFO *pSchemaInfo,
LPTSTR *aValuesAttribTypes,
DWORD dwAttribCount,
LPTSTR *aValuesObjClasses,
DWORD dwObjClassesCount,
LPTSTR *aValuesRules,
DWORD dwRulesCount,
BOOL fProcessAUX
);
//
// To be used internally only to read the schema info in one shot.
//
HRESULT
HelperReadLDAPSchemaInfo(
LPWSTR pszLDAPServer,
LPWSTR pszSubSchemaSubEntry,
LPWSTR szAttributes[],
LPWSTR pszFilter,
LPTSTR **aValuesAttribTypes,
LPTSTR **aValuesObjClasses,
LPTSTR **aValuesRules,
int *nCountAttributes,
int *nCountObjClasses,
int *nCountRules,
CCredentials& Credentials,
DWORD dwPort
);
#define ADSI_LDAPC_SECDESC_NONE 0
#define ADSI_LDAPC_SECDESC_NT 1
#define ADSI_LDAPC_SECDESC_OTHER 2