210 lines
4 KiB
C++
210 lines
4 KiB
C++
typedef struct _property{
|
||
LPWSTR szPropertyName;
|
||
DWORD dwFlags;
|
||
DWORD dwNumValues; // Number of values
|
||
DWORD dwSyntaxId; // NDS Syntax Id
|
||
PNDSOBJECT pNdsObject; // Pointer to the NDS Object
|
||
}PROPERTY, *PPROPERTY;
|
||
|
||
#define PROPERTY_NAME(pProperty) pProperty->szPropertyName
|
||
#define PROPERTY_VALUES(pProperty) pProperty->lpValues
|
||
#define PROPERTY_NUMVALUES(pProperty) pProperty->dwNumValues
|
||
#define PROPERTY_SYNTAX(pProperty) pProperty->dwSyntaxId
|
||
#define PROPERTY_NDSOBJECT(pProperty) pProperty->pNdsObject
|
||
#define PROPERTY_FLAGS(pProperty) pProperty->dwFlags
|
||
|
||
#define CACHE_PROPERTY_INITIALIZED 0x0
|
||
#define CACHE_PROPERTY_MODIFIED 0x1
|
||
#define CACHE_PROPERTY_CLEARED 0x2
|
||
#define CACHE_PROPERTY_APPENDED 0x3
|
||
#define CACHE_PROPERTY_DELETED 0x4
|
||
|
||
class CPropertyCache {
|
||
|
||
public:
|
||
|
||
HRESULT
|
||
CPropertyCache::
|
||
addproperty(
|
||
LPWSTR szPropertyName,
|
||
DWORD dwSyntaxId
|
||
);
|
||
|
||
HRESULT
|
||
CPropertyCache::
|
||
updateproperty(
|
||
LPWSTR szPropertyName,
|
||
DWORD dwSyntaxId,
|
||
DWORD dwNumValues,
|
||
PNDSOBJECT pNdsObject,
|
||
BOOL fExplicit
|
||
);
|
||
|
||
HRESULT
|
||
CPropertyCache::
|
||
findproperty(
|
||
LPWSTR szPropertyName,
|
||
PDWORD pdwIndex
|
||
);
|
||
|
||
HRESULT
|
||
CPropertyCache::
|
||
deleteproperty(
|
||
DWORD dwIndex
|
||
);
|
||
|
||
HRESULT
|
||
CPropertyCache::
|
||
getproperty(
|
||
LPWSTR szPropertyName,
|
||
PDWORD pdwSyntaxId,
|
||
PDWORD pdwNumValues,
|
||
PNDSOBJECT * ppNdsObject
|
||
);
|
||
|
||
HRESULT
|
||
CPropertyCache::
|
||
unboundgetproperty(
|
||
LPWSTR szPropertyName,
|
||
PDWORD pdwSyntaxId,
|
||
PDWORD pdwNumValues,
|
||
PNDSOBJECT * ppNdsObject
|
||
);
|
||
|
||
|
||
HRESULT
|
||
CPropertyCache::
|
||
unboundgetproperty(
|
||
DWORD dwIndex,
|
||
PDWORD pdwSyntaxId,
|
||
PDWORD pdwNumValues,
|
||
PNDSOBJECT * ppNdsObject
|
||
);
|
||
|
||
|
||
HRESULT
|
||
CPropertyCache::
|
||
putproperty(
|
||
LPWSTR szPropertyName,
|
||
DWORD dwFlags,
|
||
DWORD dwSyntaxId,
|
||
DWORD dwNumValues,
|
||
PNDSOBJECT pNdsObject
|
||
);
|
||
|
||
void
|
||
CPropertyCache::
|
||
flushpropcache();
|
||
|
||
void
|
||
CPropertyCache::
|
||
reset_propindex(
|
||
);
|
||
|
||
BOOL
|
||
CPropertyCache::
|
||
index_valid(
|
||
);
|
||
|
||
BOOL
|
||
CPropertyCache::
|
||
index_valid(
|
||
DWORD dwIndex
|
||
);
|
||
|
||
HRESULT
|
||
CPropertyCache::
|
||
skip_propindex(
|
||
DWORD dwElements
|
||
);
|
||
|
||
HRESULT
|
||
CPropertyCache::
|
||
get_PropertyCount(
|
||
PDWORD pdwMaxProperties
|
||
);
|
||
|
||
DWORD
|
||
CPropertyCache::
|
||
get_CurrentIndex(
|
||
);
|
||
|
||
|
||
LPWSTR
|
||
CPropertyCache::
|
||
get_CurrentPropName(
|
||
);
|
||
|
||
|
||
LPWSTR
|
||
CPropertyCache::
|
||
get_PropName(
|
||
DWORD dwIndex
|
||
);
|
||
|
||
|
||
CPropertyCache::
|
||
CPropertyCache();
|
||
|
||
CPropertyCache::
|
||
~CPropertyCache();
|
||
|
||
static
|
||
HRESULT
|
||
CPropertyCache::
|
||
createpropertycache(
|
||
CCoreADsObject FAR * pCoreADsObject,
|
||
CPropertyCache FAR * FAR * ppPropertyCache
|
||
);
|
||
|
||
HRESULT
|
||
CPropertyCache::
|
||
unmarshallproperty(
|
||
LPWSTR szPropertyName,
|
||
LPBYTE lpValue,
|
||
DWORD dwNumValues,
|
||
DWORD dwSyntaxId,
|
||
BOOL fExplicit
|
||
);
|
||
|
||
HRESULT
|
||
CPropertyCache::
|
||
NDSUnMarshallProperties(
|
||
HANDLE hOperationData,
|
||
BOOL fExplicit
|
||
);
|
||
|
||
|
||
HRESULT
|
||
CPropertyCache::
|
||
marshallproperty(
|
||
HANDLE hOperationData,
|
||
LPWSTR szPropertyName,
|
||
DWORD dwFlags,
|
||
LPBYTE lpValues,
|
||
DWORD dwNumValues,
|
||
DWORD dwSyntaxId
|
||
);
|
||
|
||
HRESULT
|
||
CPropertyCache::
|
||
NDSMarshallProperties(
|
||
HANDLE hOperationData
|
||
);
|
||
|
||
|
||
|
||
protected:
|
||
|
||
DWORD _dwMaxProperties;
|
||
|
||
DWORD _dwCurrentIndex;
|
||
|
||
|
||
PPROPERTY _pProperties;
|
||
DWORD _cb;
|
||
|
||
CCoreADsObject FAR * _pCoreADsObject;
|
||
};
|
||
|
||
|