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.
139 lines
4.3 KiB
139 lines
4.3 KiB
|
|
/*****************************************************************************
|
|
*
|
|
* (C) COPYRIGHT MICROSOFT CORP., 1999
|
|
*
|
|
* TITLE: wiapsc.h
|
|
*
|
|
* VERSION: 1.0
|
|
*
|
|
* AUTHOR: ByronC
|
|
*
|
|
* DATE: 2 June, 1999
|
|
*
|
|
* DESCRIPTION:
|
|
* Declarations and definitions for the WIA Property Storage class.
|
|
* This class contains the IProperty storages used for an item's
|
|
* properties (current value, old value, valid values and access flags).
|
|
*
|
|
*****************************************************************************/
|
|
|
|
#define NUM_PROP_STG 7
|
|
#define NUM_BACKUP_STG 4
|
|
|
|
//
|
|
// These defines indicate the index in which the specified property storage
|
|
// and stream reside in the arrays i.e. m_pIPropStg[WIA_VALID_STG] will give
|
|
// a pointer to the valid value storage, and m_pIStream[WIA_OLD_STG] will
|
|
// give the pointer to the backing stream used by the old value property
|
|
// storage. The normal storage indexes run from top to bottom, while their
|
|
// corresponding backup storage indexes run from bottom to top - this is
|
|
// to simplify the implementation of Backup()
|
|
//
|
|
|
|
#define WIA_CUR_STG 0
|
|
#define WIA_VALID_STG 1
|
|
#define WIA_ACCESS_STG 2
|
|
#define WIA_OLD_STG 3
|
|
|
|
#define WIA_ACCESS_BAK 4
|
|
#define WIA_VALID_BAK 5
|
|
#define WIA_CUR_BAK 6
|
|
|
|
#define WIA_NUM_PROPS_ID 111111
|
|
class CWiaPropStg {
|
|
public:
|
|
|
|
//
|
|
// Methods to get a property storage/stream
|
|
//
|
|
|
|
IPropertyStorage* _stdcall CurStg(); // Current value storage
|
|
IPropertyStorage* _stdcall OldStg(); // Old value storage
|
|
IPropertyStorage* _stdcall ValidStg(); // Valid value storage
|
|
IPropertyStorage* _stdcall AccessStg(); // Access flags storage
|
|
|
|
IStream* _stdcall CurStm(); // Returns stream for Current values
|
|
IStream* _stdcall OldStm(); // Returns stream for Old values
|
|
IStream* _stdcall ValidStm(); // Returns stream for Valid values
|
|
IStream* _stdcall AccessStm(); // Returns stream for Access flags
|
|
|
|
//
|
|
// Methods used in WriteMultiple.
|
|
//
|
|
|
|
HRESULT _stdcall NamesToPropIDs(
|
|
LONG celt,
|
|
PROPSPEC *pPropSpecIn,
|
|
PROPSPEC **ppPropSpecOut);
|
|
HRESULT _stdcall GetPropIDFromName(
|
|
PROPSPEC *pPropSpecIn,
|
|
PROPSPEC *pPropSpecOut);
|
|
HRESULT _stdcall CheckPropertyAccess(
|
|
BOOL bShowErrors,
|
|
LONG cpspec,
|
|
PROPSPEC *rgpspec);
|
|
HRESULT _stdcall CheckPropertyType(
|
|
IPropertyStorage *pIPropStg,
|
|
LONG cpspec,
|
|
PROPSPEC *rgpspec,
|
|
PROPVARIANT *rgpvar);
|
|
|
|
HRESULT _stdcall Backup();
|
|
HRESULT _stdcall Undo();
|
|
HRESULT _stdcall ReleaseBackups();
|
|
|
|
//
|
|
// Other public methods
|
|
//
|
|
|
|
HRESULT _stdcall WriteItemPropNames(
|
|
LONG cItemProps,
|
|
PROPID *ppId,
|
|
LPOLESTR *ppszNames);
|
|
HRESULT _stdcall GetPropertyStream(
|
|
GUID *pCompatibilityId,
|
|
LPSTREAM *ppstmProp);
|
|
HRESULT _stdcall SetPropertyStream(
|
|
GUID *pCompatibilityId,
|
|
IWiaItem *pItem,
|
|
LPSTREAM pstmProp);
|
|
|
|
CWiaPropStg();
|
|
HRESULT _stdcall Initialize();
|
|
~CWiaPropStg();
|
|
|
|
private:
|
|
|
|
//
|
|
// Private helpers
|
|
//
|
|
|
|
HRESULT CopyItemProp(
|
|
IPropertyStorage *pIPropStgSrc,
|
|
IPropertyStorage *pIPropStgDst,
|
|
PROPSPEC *pps,
|
|
LPSTR pszErr);
|
|
HRESULT CopyProps(
|
|
IPropertyStorage *src,
|
|
IPropertyStorage *dest);
|
|
HRESULT CreateStorage(
|
|
ULONG ulIndex);
|
|
HRESULT CopyRWStreamProps(
|
|
LPSTREAM pstmPropSrc,
|
|
LPSTREAM pstmPropDst,
|
|
GUID *pCompatibilityId);
|
|
HRESULT GetPropsFromStorage(
|
|
IPropertyStorage *pSrc,
|
|
ULONG *cPSpec,
|
|
PROPSPEC **ppPSpec,
|
|
PROPVARIANT **ppVar);
|
|
|
|
//
|
|
// member variables
|
|
//
|
|
|
|
IPropertyStorage *m_pIPropStg[NUM_PROP_STG]; // Array of Property storages
|
|
IStream *m_pIStream[NUM_PROP_STG]; // Array of Streams for the Prop storages
|
|
};
|
|
|