Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#ifndef _PROFILE_SCHEMA_H
#define _PROFILE_SCHEMA_H
#include "BstrHash.h"
#ifndef __no_msxml_dll_import__
#import <msxml.tlb> rename_namespace("MSXML")
#endif
typedef CRawCIBstrHash<int> RAWBSTR2INT;
#define INVALID_POS (UINT)(-1)
#define FULL_SCHEMA (DWORD)(-1)
class CProfileSchema { public: // Read the raw blob according to the schema, and output the positions of
// each element. Output array size MUST be >= Count()
HRESULT parseProfile(LPSTR raw, UINT size, UINT* positions, UINT* bitFlagPositions, DWORD* pdwAttrs);
enum AttrType { tText=0, tChar, tByte, tWord, tLong, tDate, tInvalid };
CProfileSchema(); ~CProfileSchema();
BOOL isOk() const { return m_isOk; } _bstr_t getErrorInfo() const { return m_szReason; } long GetAgeSeconds() const;
#ifndef __no_msxml_dll_import__
BOOL Read(MSXML::IXMLElementPtr &root); #endif
BOOL ReadFromArray(UINT numAttributes, LPTSTR names[], AttrType types[], short sizes[], BYTE readOnly[] = NULL); int m_maskPos;
// Number of attributes
int Count() const { return m_numAtts; }
// Find the index by name
int GetIndexByName(BSTR name) const; BSTR GetNameByIndex(int index) const;
// Get the type of an attribute
AttrType GetType(UINT index) const;
// Can I write to this attribute?
BOOL IsReadOnly(UINT index) const;
// Get the inherent size of an attribute
// Returns -1 if the type is length prefixed
int GetBitSize(UINT index) const; int GetByteSize(UINT index) const;
CProfileSchema* AddRef(); void Release();
protected: long m_refs;
BOOL m_isOk; _bstr_t m_szReason;
// Valid until this time
SYSTEMTIME m_validUntil;
// Array of attribute types
UINT m_numAtts; AttrType *m_atts; short *m_sizes; BYTE *m_readOnly; RAWBSTR2INT m_indexes; };
#endif
|