windows-nt/Source/XPSP1/NT/shell/ext/webcheck/subitem.h
2020-09-26 16:20:57 +08:00

92 lines
2.7 KiB
C++

#ifndef _subitem_h
#define _subitem_h
HRESULT BlobToVariant(BYTE *pData, DWORD cbData, VARIANT *pVar, DWORD *pcbUsed, BOOL fStream = FALSE);
class CEnumItemProperties : public IEnumItemProperties
{
public:
CEnumItemProperties();
HRESULT Initialize(const SUBSCRIPTIONCOOKIE *pCookie, ISubscriptionItem *psi);
HRESULT CopyItem(ITEMPROP *pip, WCHAR *pwszName, VARIANT *pVar);
HRESULT CopyRange(ULONG nStart, ULONG nCount, ITEMPROP *ppip, ULONG *pnCopied);
// IUnknown members
STDMETHODIMP QueryInterface(REFIID riid, void **ppv);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
// IEnumItemProperties
STDMETHODIMP Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ITEMPROP *rgelt,
/* [out] */ ULONG *pceltFetched);
STDMETHODIMP Skip(
/* [in] */ ULONG celt);
STDMETHODIMP Reset( void);
STDMETHODIMP Clone(
/* [out] */ IEnumItemProperties **ppenum);
STDMETHODIMP GetCount(
/* [out] */ ULONG *pnCount);
private:
~CEnumItemProperties();
ULONG m_cRef;
ULONG m_nCurrent;
ULONG m_nCount;
ITEMPROP *m_pItemProps;
};
class CSubscriptionItem : public ISubscriptionItem
{
public:
CSubscriptionItem(const SUBSCRIPTIONCOOKIE *pCookie, HKEY hkey);
HRESULT Read(HKEY hkeyIn, const WCHAR *pwszValueName, BYTE *pData, DWORD dwDataSize);
HRESULT ReadWithAlloc(HKEY hkeyIn, const WCHAR *pwszValueName, BYTE **ppData, DWORD *pdwDataSize);
HRESULT Write(HKEY hkeyIn, const WCHAR *pwszValueName, BYTE *pData, DWORD dwDataSize);
// IUnknown members
STDMETHODIMP QueryInterface(REFIID riid, void **ppv);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
// ISubscriptionItem
STDMETHODIMP GetCookie(SUBSCRIPTIONCOOKIE *pCookie);
STDMETHODIMP GetSubscriptionItemInfo(
/* [out] */ SUBSCRIPTIONITEMINFO *pSubscriptionItemInfo);
STDMETHODIMP SetSubscriptionItemInfo(
/* [in] */ const SUBSCRIPTIONITEMINFO *pSubscriptionItemInfo);
STDMETHODIMP ReadProperties(
ULONG nCount,
/* [size_is][in] */ const LPCWSTR rgwszName[],
/* [size_is][out] */ VARIANT rgValue[]);
STDMETHODIMP WriteProperties(
ULONG nCount,
/* [size_is][in] */ const LPCWSTR rgwszName[],
/* [size_is][in] */ const VARIANT rgValue[]);
STDMETHODIMP EnumProperties(
/* [out] */ IEnumItemProperties **ppEnumItemProperties);
STDMETHODIMP NotifyChanged();
private:
~CSubscriptionItem();
ULONG m_cRef;
SUBSCRIPTIONCOOKIE m_Cookie;
DWORD m_dwFlags;
};
#endif // _subitem_h