windows-nt/Source/XPSP1/NT/ds/adsi/ldapc/schutil.hxx
2020-09-26 16:20:57 +08:00

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
);