stream.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 2k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. //***   stream.h --
  2. //
  3. // NOTES
  4. //  BUGBUG this inheritance is *backwards*! should have:
  5. //      CRegStrPropBag : CRegStrFS, IPropertyBag
  6. // fix this soon i hope...
  7. class CRegStrPropBag : public IPropertyBag
  8. {
  9. public:
  10.     //*** IUnknown
  11.     virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppv);
  12.     virtual STDMETHODIMP_(ULONG) AddRef(void);
  13.     virtual STDMETHODIMP_(ULONG) Release(void);
  14.     //*** IPropertyBag
  15.     virtual STDMETHODIMP Read(/*[in]*/ LPCOLESTR pwzPropName,
  16.         /*[inout]*/ VARIANT *pVar, /*[in]*/ IErrorLog *pErrorLog);
  17.     // currently unused (see #if 0 in stream.cpp)
  18.     virtual STDMETHODIMP Write(/*[in]*/ LPCOLESTR pwzPropName,
  19.         /*[in]*/ VARIANT *pVar) { ASSERT(0); return E_NOTIMPL; };
  20.     //*** THISCLASS
  21.     virtual HRESULT Initialize(HKEY hkey, DWORD grfMode);
  22.     HRESULT SetRoot(HKEY hkey, DWORD grfMode);
  23.     HRESULT ChDir(LPCTSTR pszSubKey);
  24.     // fast versions, no OLESTR nonsense
  25.     HRESULT QueryValueStr(LPCTSTR pszName, LPTSTR pszValue, LPDWORD pcbValue);
  26.     HRESULT SetValueStr(LPCTSTR pszName, LPCTSTR pszValue);
  27.     HRESULT SetValueStrEx(LPCTSTR pszName, DWORD dwType, LPCTSTR pszValue);
  28. protected:
  29.     CRegStrPropBag() { _cRef = 1; };
  30.     virtual ~CRegStrPropBag();
  31.     friend CRegStrPropBag *CRegStrPropBag_Create(HKEY hkey, DWORD grfMode);
  32.     int     _cRef;
  33.     HKEY    _hkey;
  34.     int     _grfMode;   // read/write (subset of STGM_* values)
  35. };
  36. HRESULT IPBag_ReadStr(IPropertyBag *pPBag, LPCOLESTR pwzPropName, LPTSTR buf, int cch);
  37. #if 0 // currently unused (see #if 0 in stream.cpp)
  38. HRESULT IPBag_WriteStr(IPropertyBag *pPBag, LPCOLESTR pwzPropName, LPTSTR buf);
  39. #endif
  40. HRESULT IUnknown_LoadBag(IUnknown *punk, IPropertyBag *pPBag);
  41. HKEY Reg_CreateOpenKey(HKEY hkey, LPCTSTR pszSubKey, DWORD grfMode);
  42. HKEY Reg_DupKey(HKEY hkey);
  43. class CRegStrFS : public CRegStrPropBag
  44. {
  45. public:
  46.     /*virtual HRESULT Initialize(HKEY hk, DWORD grfMode);*/
  47.     HRESULT QueryValue(LPCTSTR pszName, BYTE *pbData, LPDWORD pcbData);
  48.     HRESULT SetValue(LPCTSTR pszName, DWORD dwType, const BYTE *pbData, DWORD cbData);
  49.     HRESULT DeleteValue(LPCTSTR pszName);
  50.     HRESULT RmDir(LPCTSTR pszName, BOOL fRecurse);
  51.     HKEY GetHkey()  { return _hkey; }
  52. protected:
  53.     friend CRegStrFS *CRegStrFS_Create(HKEY hk, DWORD grfMode);
  54. #if 0
  55.     HKEY _hkeyRoot;
  56. #endif
  57. };