Leaked source code of windows server 2003
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

/*****************************************************************************
*
* (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
};