252 lines
4.7 KiB
C++
252 lines
4.7 KiB
C++
typedef struct {
|
|
LPTSTR pszName;
|
|
DWORD nIndex;
|
|
} SEARCHENTRY;
|
|
|
|
typedef HANDLE LDAP_SCHEMA_HANDLE;
|
|
|
|
#define ATTR_USAGE_USERAPPLICATIONS 1
|
|
#define ATTR_USAGE_DIRECTORYOPERATION 2
|
|
#define ATTR_USAGE_DISTRIBUTEDOPERATION 3
|
|
#define ATTR_USAGE_DSAOPERATION 4
|
|
|
|
typedef struct _PropertyInfo
|
|
{
|
|
LPTSTR pszPropertyName;
|
|
LPTSTR pszOID;
|
|
|
|
LPTSTR pszSyntax;
|
|
long lMaxRange;
|
|
long lMinRange;
|
|
BOOL fSingleValued;
|
|
|
|
LPTSTR pszDescription;
|
|
LPTSTR pszOIDSup;
|
|
|
|
LPTSTR pszOIDEquality;
|
|
LPTSTR pszOIDOrdering;
|
|
LPTSTR pszOIDSubstr;
|
|
|
|
BOOL fObsolete;
|
|
BOOL fCollective;
|
|
BOOL fDynamic;
|
|
BOOL fNoUserModification;
|
|
|
|
DWORD dwUsage; // contain ATTR_USAGE... defined above
|
|
|
|
BOOL fProcessedSuperiorClass;
|
|
|
|
} PROPERTYINFO, *PPROPERTYINFO;
|
|
|
|
#define CLASS_TYPE_STRUCTURAL 1 // same as NT's definition
|
|
#define CLASS_TYPE_ABSTRACT 2
|
|
#define CLASS_TYPE_AUXILIARY 3
|
|
|
|
typedef struct _ClassInfo
|
|
{
|
|
LPTSTR pszName;
|
|
LPTSTR pszOID;
|
|
DWORD dwType; // contain CLASS_TYPE... defined above
|
|
|
|
const GUID *pCLSID;
|
|
const GUID *pPrimaryInterfaceGUID;
|
|
LPTSTR pszHelpFileName;
|
|
long lHelpFileContext;
|
|
|
|
LPTSTR pszDescription;
|
|
BOOL fObsolete;
|
|
|
|
LPTSTR *pOIDsSuperiorClasses;
|
|
|
|
LPTSTR *pOIDsAuxClasses;
|
|
|
|
int *pOIDsMustContain; // contain indexes into the aPropertiesSearchTable
|
|
DWORD nNumOfMustContain;
|
|
|
|
int *pOIDsMayContain; // contain indexes into the aPropertiesSearchTable
|
|
DWORD nNumOfMayContain;
|
|
|
|
int *pOIDsNotContain; // contain indexes into the aPropertiesSearchTable
|
|
DWORD nNumOfNotContain;
|
|
|
|
BOOL fProcessedSuperiorClasses;
|
|
|
|
BOOL IsContainer; // can contain -1 if we have not processed it
|
|
|
|
} CLASSINFO, *PCLASSINFO;
|
|
|
|
typedef struct _SyntaxInfo
|
|
{
|
|
LPTSTR pszName;
|
|
long lOleAutoDataType;
|
|
} SYNTAXINFO, *PSYNTAXINFO;
|
|
|
|
class SCHEMAINFO
|
|
{
|
|
private:
|
|
DWORD _cRef;
|
|
BOOL _fObsolete;
|
|
|
|
public:
|
|
BOOL fDefaultSchema;
|
|
BOOL fAppearsV3;
|
|
|
|
LPTSTR pszServerName;
|
|
LPTSTR pszSubSchemaSubEntry;
|
|
LPTSTR pszTime;
|
|
|
|
LPWSTR pszUserName;
|
|
|
|
SCHEMAINFO *Next;
|
|
|
|
CLASSINFO *aClasses;
|
|
DWORD nNumOfClasses;
|
|
SEARCHENTRY *aClassesSearchTable;
|
|
|
|
PROPERTYINFO *aProperties;
|
|
DWORD nNumOfProperties;
|
|
SEARCHENTRY *aPropertiesSearchTable;
|
|
|
|
SCHEMAINFO();
|
|
~SCHEMAINFO();
|
|
|
|
DWORD AddRef();
|
|
DWORD Release();
|
|
|
|
BOOL IsObsolete()
|
|
{ return _fObsolete; }
|
|
|
|
BOOL IsRefCountZero()
|
|
{ return (_cRef == 0 ); }
|
|
|
|
VOID MakeObsolete()
|
|
{ _fObsolete = TRUE; }
|
|
|
|
VOID MakeCurrent()
|
|
{ _fObsolete = FALSE; }
|
|
|
|
};
|
|
|
|
DWORD
|
|
LdapGetSyntaxIdOfAttribute(
|
|
LPWSTR pszStringSyntax
|
|
);
|
|
|
|
HRESULT
|
|
LdapGetSyntaxOfAttributeOnServer(
|
|
LPTSTR pszServerPath,
|
|
LPTSTR pszAttrName,
|
|
DWORD *pdwSyntaxId,
|
|
CCredentials& Credentials,
|
|
DWORD dwPort,
|
|
BOOL fFromServer = FALSE
|
|
);
|
|
|
|
HRESULT
|
|
LdapIsClassNameValidOnServer(
|
|
LPTSTR pszServerPath,
|
|
LPTSTR pszClassName,
|
|
BOOL *pfValid,
|
|
CCredentials& Credentials,
|
|
DWORD dwPort
|
|
);
|
|
|
|
HRESULT
|
|
LdapGetSchemaObjectCount(
|
|
LPTSTR pszServerPath,
|
|
DWORD *pnNumOfClasses,
|
|
DWORD *pnNumOfProperties,
|
|
CCredentials& Credentials,
|
|
DWORD dwPort
|
|
);
|
|
|
|
HRESULT
|
|
LdapGetSubSchemaSubEntryPath(
|
|
LPTSTR pszServerPath,
|
|
LPTSTR *ppszSubSchemaSubEntryPath,
|
|
CCredentials& Credentials,
|
|
DWORD dwPort
|
|
);
|
|
|
|
HRESULT
|
|
LdapMakeSchemaCacheObsolete(
|
|
LPTSTR pszServerPath,
|
|
CCredentials& Credentials,
|
|
DWORD dwPort
|
|
);
|
|
|
|
HRESULT
|
|
SchemaOpen(
|
|
IN LPTSTR pszServerPath,
|
|
OUT LDAP_SCHEMA_HANDLE *phSchema,
|
|
IN CCredentials& Credentials,
|
|
DWORD dwPort
|
|
);
|
|
|
|
HRESULT
|
|
SchemaClose(
|
|
IN OUT LDAP_SCHEMA_HANDLE *phSchema
|
|
);
|
|
|
|
HRESULT
|
|
SchemaAddRef(
|
|
IN LDAP_SCHEMA_HANDLE hSchema
|
|
);
|
|
|
|
HRESULT
|
|
SchemaGetObjectCount(
|
|
LDAP_SCHEMA_HANDLE hSchema,
|
|
DWORD *pnNumOfClasses,
|
|
DWORD *pnNumOfProperties
|
|
);
|
|
|
|
HRESULT
|
|
SchemaGetClassInfoByIndex(
|
|
LDAP_SCHEMA_HANDLE hSchema,
|
|
DWORD dwIndex,
|
|
CLASSINFO **ppClassInfo
|
|
);
|
|
|
|
HRESULT
|
|
SchemaGetPropertyInfoByIndex(
|
|
LDAP_SCHEMA_HANDLE hSchema,
|
|
DWORD dwIndex,
|
|
PROPERTYINFO **ppPropertyInfo
|
|
);
|
|
|
|
HRESULT
|
|
SchemaGetClassInfo(
|
|
LDAP_SCHEMA_HANDLE hSchema,
|
|
LPTSTR pszClassName,
|
|
CLASSINFO **ppClassInfo
|
|
);
|
|
|
|
HRESULT
|
|
SchemaGetPropertyInfo(
|
|
LDAP_SCHEMA_HANDLE hSchema,
|
|
LPTSTR pszPropertyName,
|
|
PROPERTYINFO **ppPropertyInfo
|
|
);
|
|
|
|
HRESULT
|
|
SchemaGetSyntaxOfAttribute(
|
|
LDAP_SCHEMA_HANDLE hSchema,
|
|
LPTSTR pszAttrName,
|
|
DWORD *pdwSyntaxId
|
|
);
|
|
|
|
HRESULT
|
|
SchemaIsClassAContainer(
|
|
LDAP_SCHEMA_HANDLE hSchema,
|
|
LPTSTR pszClassName,
|
|
BOOL *pfContainer
|
|
);
|
|
|
|
HRESULT
|
|
SchemaGetStringsFromStringTable(
|
|
LDAP_SCHEMA_HANDLE hSchema,
|
|
int *proplist,
|
|
DWORD nCount,
|
|
LPWSTR **paStrings
|
|
);
|