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

79 lines
1.8 KiB
C++

#include "shellprv.h"
#pragma hdrstop
#define EXPIRATION_NEVER 0xFFFFFFFF
class CSubDataProvider;
typedef BOOL (CSubDataProvider::*SUBDATACB)(PVOID pvData);
typedef BOOL (*STATICSUBDATACB)(PVOID pvData);
class CSubData
{
///////////////////////////////////////////////////////////////////////////////
// Public methods
///////////////////////////////////////////////////////////////////////////////
public:
// Only one of the following two fcts should be called
BOOL Init(CSubDataProvider* pSDProv, SUBDATACB fctCB, PVOID pvData);
BOOL InitStatic(STATICSUBDATACB fctStaticCB, PVOID pvData);
BOOL InitExpiration(DWORD cTick);
virtual BOOL Update();
virtual void Invalidate();
void HoldUpdates();
void ResumeUpdates();
CSubData();
///////////////////////////////////////////////////////////////////////////////
// Miscellaneous helpers
///////////////////////////////////////////////////////////////////////////////
private:
BOOL _Call();
protected:
void _SetTickLastUpdate(DWORD dwTick);
DWORD _GetTickLastUpdate();
DWORD* _GetTickLastUpdatePtr();
PVOID _GetDataPtr();
void _SetDataPtr(PVOID pvData);
BOOL _IsExpired();
BOOL _IsValid();
///////////////////////////////////////////////////////////////////////////////
// Data
///////////////////////////////////////////////////////////////////////////////
protected:
CSubDataProvider* _pSDProv;
union
{
SUBDATACB _fctCB;
STATICSUBDATACB _fctStaticCB;
};
DWORD _dwTickLast;
PVOID _pvData;
DWORD _cTickExpiration;
BOOL _fHoldUpdate;
BOOL _fStatic;
BOOL _fInvalid;
private:
#ifdef DEBUG
BOOL _fInited;
#endif
};
class CSubDataProvider
{
};