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.
 
 
 
 
 
 

133 lines
3.8 KiB

/*++
Copyright (C) 1999- Microsoft Corporation
Module Name:
ptpprop.h
Abstract:
This module declares CProperty and its derived classes
Author:
William Hsieh (williamh) created
Revision History:
--*/
#ifndef PTPPROP__H_
#define PTPPROP__H_
//
// This class represnets a property.
//
class CPTPProperty
{
public:
CPTPProperty()
{
m_bstrWiaPropName = NULL;
m_WiaDataType = VT_EMPTY;
ZeroMemory(&m_WiaPropInfo, sizeof(m_WiaPropInfo));
ZeroMemory(&m_DefaultValue, sizeof(m_DefaultValue));
ZeroMemory(&m_CurrentValue, sizeof(m_CurrentValue));
}
CPTPProperty(WORD PTPPropCode, WORD PTPDataType);
virtual ~CPTPProperty();
virtual HRESULT Initialize(PTP_PROPDESC *pPTPPropDesc, PROPID WiaPropId,
VARTYPE WiaDataType, LPCWSTR WiaPropName);
HRESULT GetCurrentValue(PROPVARIANT *pPropVar);
HRESULT GetCurrentValue(PTP_PROPVALUE *pPropValue);
HRESULT GetDefaultValue(PROPVARIANT *pPropVar);
HRESULT GetDefaultValue(PTP_PROPVALUE *pPropValue);
HRESULT SetValue(PROPVARIANT *ppropVar);
HRESULT SetValue(PTP_PROPVALUE *pPropValue);
HRESULT Reset();
const WIA_PROPERTY_INFO * GetWiaPropInfo()
{
return &m_WiaPropInfo;
}
const PTP_PROPVALUE * GetCurrentValue()
{
return &m_CurrentValue;
}
const PTP_PROPVALUE * GetDefaultValue()
{
return &m_DefaultValue;
}
const LPWSTR GetWiaPropName()
{
return m_bstrWiaPropName;
}
WORD GetPTPPropCode()
{
return m_PtpPropCode;
}
PROPID GetWiaPropId()
{
return m_WiaPropId;
}
WORD GetPTPPropDataType()
{
return m_PtpDataType;
}
VARTYPE GetWiaPropDataType()
{
return m_WiaDataType;
}
LONG GetWiaAccessFlags()
{
return m_WiaPropInfo.lAccessFlags;
}
protected:
//
// Override the following functions to provide different data
// restreiving and recording methods
//
virtual HRESULT GetPropValueLong(PTP_PROPVALUE *pPropValue, long *plValue);
virtual HRESULT GetPropValueBSTR(PTP_PROPVALUE *pPropValue, BSTR *pbstrValue);
virtual HRESULT GetPropValueVector(PTP_PROPVALUE *pPropValue, void *pVector,
VARTYPE BasicType);
virtual HRESULT SetPropValueLong(PTP_PROPVALUE *pPropValue, long lValue);
virtual HRESULT SetPropValueBSTR(PTP_PROPVALUE *pPropValue, BSTR bstrValue);
virtual HRESULT SetPropValueVector(PTP_PROPVALUE *pPropValue,
void *pVector, VARTYPE BasicType);
HRESULT PropValue2Variant(PROPVARIANT *pPropVar, PTP_PROPVALUE *pPropValue);
HRESULT Variant2PropValue(PTP_PROPVALUE *pPropValue, PROPVARIANT *pPropVar);
WORD m_PtpPropCode;
PROPID m_WiaPropId;
WORD m_PtpDataType;
VARTYPE m_WiaDataType;
PTP_PROPVALUE m_CurrentValue;
PTP_PROPVALUE m_DefaultValue;
WIA_PROPERTY_INFO m_WiaPropInfo;
BSTR m_bstrWiaPropName;
};
class CPTPPropertyDateTime : public CPTPProperty
{
public:
CPTPPropertyDateTime(WORD PtpPropCode,
WORD PtpDataType
);
protected:
virtual HRESULT GetPropValueVector(PTP_PROPVALUE *pPropValue,
void *pVector,
VARTYPE BasicType
);
virtual HRESULT SetPropValueVector(PTP_PROPVALUE *pPropValue,
void *pVector,
VARTYPE BasicType
);
};
#endif // #ifndef PTPPROP__H_