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.
 
 
 
 
 
 

151 lines
4.5 KiB

/*******************************************************************************
*
* (C) COPYRIGHT MICROSOFT CORP., 1997
*
* TITLE: DevInfo.h
*
* VERSION: 2.0
*
* AUTHOR: ReedB
*
* DATE: 26 Dec, 1997
*
* DESCRIPTION:
* Declaration and definitions for WIA device enumerator and
* WIA device information objects.
*
*******************************************************************************/
class CEnumWIADevInfo : public IEnumWIA_DEV_INFO
{
public:
// IUnknown methods
HRESULT _stdcall QueryInterface(const IID& iid, void** ppv);
ULONG _stdcall AddRef();
ULONG _stdcall Release();
private:
// IEnumWIA_DEV_INFO methods
HRESULT __stdcall Next(
ULONG celt,
IWiaPropertyStorage **rgelt,
ULONG *pceltFetched);
HRESULT __stdcall Skip(ULONG celt);
HRESULT __stdcall Reset(void);
HRESULT __stdcall Clone(IEnumWIA_DEV_INFO **ppIEnum);
HRESULT __stdcall GetCount(ULONG*);
// Helpers
public:
// Constructor, initialization and destructor methods.
CEnumWIADevInfo();
HRESULT Initialize(LONG lFlags);
~CEnumWIADevInfo();
private:
ULONG m_cRef; // Reference count for this object.
LONG m_lType; // Original enumeration device type.
IWiaPropertyStorage **m_pIWiaPropStg; // Pointers Dev. Info. property storages
ULONG m_cDevices; // Number of WIA devices.
ULONG m_ulIndex; // Index for IEnumWIA_DEV_INFO methods.
};
class CWIADevInfo : public IWiaPropertyStorage
{
public:
// IUnknown methods
HRESULT _stdcall QueryInterface(const IID& iid, void** ppv);
ULONG _stdcall AddRef();
ULONG _stdcall Release();
public:
// IWiaPropertyStorage methods
HRESULT _stdcall ReadMultiple(
ULONG cpspec,
const PROPSPEC rgpspec[],
PROPVARIANT rgpropvar[]);
HRESULT _stdcall WriteMultiple(
ULONG cpspec,
const PROPSPEC rgpspec[],
const PROPVARIANT rgpropvar[],
PROPID propidNameFirst);
HRESULT _stdcall ReadPropertyNames(
ULONG cpropid,
const PROPID rgpropid[],
LPOLESTR rglpwstrName[]);
HRESULT _stdcall WritePropertyNames(
ULONG cpropid,
const PROPID rgpropid[],
const LPOLESTR rglpwstrName[]);
HRESULT _stdcall Enum(
IEnumSTATPROPSTG **ppenum);
HRESULT _stdcall GetPropertyAttributes(
ULONG cpspec,
PROPSPEC rgpspec[],
ULONG rgflags[],
PROPVARIANT rgpropvar[]);
HRESULT _stdcall GetCount(
ULONG *pulNumProps);
HRESULT _stdcall GetPropertyStream(
GUID *pCompatibilityId,
IStream **ppIStream);
HRESULT _stdcall SetPropertyStream(
GUID *pCompatibilityId,
IStream *pIStream);
HRESULT _stdcall DeleteMultiple(
ULONG cpspec,
PROPSPEC const rgpspec[]);
HRESULT _stdcall DeletePropertyNames(
ULONG cpropid,
PROPID const rgpropid[]);
HRESULT _stdcall SetClass(
REFCLSID clsid);
HRESULT _stdcall Commit(
DWORD grfCommitFlags);
HRESULT _stdcall Revert();
HRESULT _stdcall Stat(
STATPROPSETSTG *pstatpsstg);
HRESULT _stdcall SetTimes(
FILETIME const * pctime,
FILETIME const * patime,
FILETIME const * pmtime);
private:
// Helpers
HRESULT UpdateDeviceProperties(
ULONG cpspec,
const PROPSPEC *rgpspec,
const PROPVARIANT *rgpropvar);
public:
// Constructor, initialization and destructor methods.
CWIADevInfo();
HRESULT Initialize();
~CWIADevInfo();
IPropertyStorage *m_pIPropStg; // Device info. property storage.
private:
ULONG m_cRef; // Reference count for this object.
ITypeInfo* m_pITypeInfo; // Pointer to type information.
IStream *m_pIStm; // Pointer to a property stream
};