mirror of https://github.com/tongzx/nt5src
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.
91 lines
2.7 KiB
91 lines
2.7 KiB
#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
|
|
|
|
|