windows-nt/Source/XPSP1/NT/printscan/wia/inc/wiamindr.idl
2020-09-26 16:20:57 +08:00

454 lines
13 KiB
Plaintext

/****************************************************************************
*
* (C) COPYRIGHT 1998-2000, MICROSOFT CORP.
*
* FILE: wiamindr.idl
*
* VERSION: 2.0
*
* DATE: 8/28/1998
*
* DESCRIPTION:
* IDL source for the WIA mini driver.
*
*****************************************************************************/
interface IWiaMiniDrv;
interface IWiaMiniDrvCallBack;
interface IWiaDrvItem;
interface IWiaItem;
interface IWiaPropertyStorage;
import "unknwn.idl";
import "oaidl.idl";
import "propidl.idl";
import "wia.idl";
/**************************************************************************\
*
* MINIDRV_TRANSFER_CONTEXT - Minidriver data transfer context
*
\**************************************************************************/
typedef struct _MINIDRV_TRANSFER_CONTEXT{
LONG lSize;
LONG lWidthInPixels;
LONG lLines;
LONG lDepth;
LONG lXRes;
LONG lYRes;
LONG lCompression;
GUID guidFormatID;
LONG tymed;
LONG hFile;
LONG cbOffset;
LONG lBufferSize;
LONG lActiveBuffer;
LONG lNumBuffers;
BYTE *pBaseBuffer;
BYTE *pTransferBuffer;
BOOL bTransferDataCB;
BOOL bClassDrvAllocBuf;
LONG lClientAddress;
IWiaMiniDrvCallBack *pIWiaMiniDrvCallBack;
LONG lImageSize;
LONG lHeaderSize;
LONG lItemSize;
LONG cbWidthInBytes;
LONG lPage;
LONG lCurIfdOffset;
LONG lPrevIfdOffset;
} MINIDRV_TRANSFER_CONTEXT, *PMINIDRV_TRANSFER_CONTEXT;
/*******************************************************************************
*
* WIA_DEV_CAP_DRV - Device capabilities
*
*******************************************************************************/
typedef struct _WIA_DEV_CAP_DRV {
GUID *guid;
ULONG ulFlags;
LPOLESTR wszName;
LPOLESTR wszDescription;
LPOLESTR wszIcon;
} WIA_DEV_CAP_DRV,*PWIA_DEV_CAP_DRV;
/*******************************************************************************
*
* IWiaMiniDrvItem interface
*
*******************************************************************************/
[
object,
uuid(d8cdee14-3c6c-11d2-9a35-00c04fa36145),
helpstring("WIA Mini Driver Interface"),
pointer_default(unique)
]
interface IWiaMiniDrv : IUnknown
{
[helpstring("Initialize WIA, build item tree, etc")]
HRESULT drvInitializeWia(
[in] BYTE*,
[in] LONG,
[in] BSTR,
[in] BSTR,
[in] IUnknown*,
[in] IUnknown*,
[out] IWiaDrvItem**,
[out] IUnknown**,
[out] LONG*);
[helpstring("Acquire data from the device item")]
HRESULT drvAcquireItemData(
[in] BYTE*,
[in] LONG,
[in, out] PMINIDRV_TRANSFER_CONTEXT,
[out] LONG*);
[helpstring("Initialize the device item properties")]
HRESULT drvInitItemProperties(
[in] BYTE*,
[in] LONG,
[out] LONG*);
[helpstring("Mini driver validatation of the device item properties")]
HRESULT drvValidateItemProperties(
[in] BYTE*,
[in] LONG,
[in] ULONG,
[in] const PROPSPEC*,
[out] LONG*);
[helpstring("Mini driver write of the device item properties")]
HRESULT drvWriteItemProperties(
[in] BYTE*,
[in] LONG,
[in] PMINIDRV_TRANSFER_CONTEXT,
[out] LONG*);
[helpstring("Mini driver read of the device item properties")]
HRESULT drvReadItemProperties(
[in] BYTE*,
[in] LONG,
[in] ULONG,
[in] const PROPSPEC*,
[out] LONG*);
[helpstring("Lock Device")]
HRESULT drvLockWiaDevice(
[in] BYTE*,
[in] LONG,
[out] LONG*);
[helpstring("UnLock Device")]
HRESULT drvUnLockWiaDevice(
[in] BYTE*,
[in] LONG,
[out] LONG*);
[helpstring("Look at item and create sub-items if needed")]
HRESULT drvAnalyzeItem(
[in] BYTE*,
[in] LONG,
[in] LONG*);
[helpstring("Map a device error value to a string")]
HRESULT drvGetDeviceErrorStr(
[in] LONG,
[in] LONG,
[out] LPOLESTR*,
[out] LONG*);
[helpstring("Issue a device command")]
HRESULT drvDeviceCommand(
[in] BYTE*,
[in] LONG,
[in] const GUID*,
[out] IWiaDrvItem**,
[out] LONG*);
[helpstring("Get the device capabilities")]
HRESULT drvGetCapabilities(
[in] BYTE*,
[in] LONG,
[out] LONG*,
[out] WIA_DEV_CAP_DRV**,
[out] LONG*);
[helpstring("Delete the item from the device")]
HRESULT drvDeleteItem(
[in] BYTE*,
[in] LONG,
[out] LONG*);
[helpstring("Free driver item context")]
HRESULT drvFreeDrvItemContext(
[in] LONG,
[in] BYTE*,
[out] LONG*);
[helpstring("Get the FORMAT and TYMED")]
HRESULT drvGetWiaFormatInfo(
[in] BYTE*,
[in] LONG,
[out] LONG*,
[out] WIA_FORMAT_INFO**,
[out] LONG*);
[helpstring("Notify Pnp event received by device manager")]
HRESULT drvNotifyPnpEvent(
[in] const GUID *pEventGUID,
[in] BSTR bstrDeviceID,
[in] ULONG ulReserved);
[helpstring("UnInitialize WIA, remove resources attached to item, etc")]
HRESULT drvUnInitializeWia(
[in] BYTE*);
};
/*******************************************************************************
*
* IWiaMiniDrvCallBack interface
*
*******************************************************************************/
[
object,
uuid(33a57d5a-3de8-11d2-9a36-00c04fa36145),
helpstring("WIA Mini Driver Call Back Interface"),
pointer_default(unique)
]
interface IWiaMiniDrvCallBack : IUnknown
{
[id(1), helpstring("Acquire data from the device")]
HRESULT MiniDrvCallback(
[in] LONG lReason,
[in] LONG lStatus,
[in] LONG lPercentComplete,
[in] LONG lOffset,
[in] LONG lLength,
[in] PMINIDRV_TRANSFER_CONTEXT pTranCtx,
[in] LONG lReserved);
};
/**************************************************************************\
*
* IWiaDrvItem interface
*
\**************************************************************************/
[
object,
uuid(1f02b5c5-b00c-11d2-a094-00c04f72dc3c),
helpstring("WIA Mini Driver DrvItem Interface"),
pointer_default(unique)
]
interface IWiaDrvItem : IUnknown
{
HRESULT GetItemFlags(
[out] LONG*);
HRESULT GetDeviceSpecContext(
[out] BYTE**);
HRESULT GetFullItemName(
[out] BSTR*);
HRESULT GetItemName(
[out] BSTR*);
HRESULT AddItemToFolder(
[in] IWiaDrvItem*);
HRESULT UnlinkItemTree(
[in] LONG);
HRESULT RemoveItemFromFolder(
[in] LONG);
HRESULT FindItemByName(
[in] LONG,
[in] BSTR,
[out] IWiaDrvItem**);
HRESULT FindChildItemByName(
[in] BSTR,
[out] IWiaDrvItem**);
HRESULT GetParentItem(
[out] IWiaDrvItem**);
HRESULT GetFirstChildItem(
[out] IWiaDrvItem**);
HRESULT GetNextSiblingItem(
[out] IWiaDrvItem**);
HRESULT DumpItemData(
[out] BSTR*);
};
/*******************************************************************************
*
* WIA_PROPERTY_INFO - Stores default access and valid values for item properties
*
*******************************************************************************/
typedef struct _WIA_PROPERTY_INFO
{
ULONG lAccessFlags;
VARTYPE vt;
union {
struct {
LONG Min;
LONG Nom;
LONG Max;
LONG Inc;
} Range;
struct {
DOUBLE Min;
DOUBLE Nom;
DOUBLE Max;
DOUBLE Inc;
} RangeFloat;
struct {
LONG cNumList;
LONG Nom;
BYTE *pList;
} List;
struct {
LONG cNumList;
DOUBLE Nom;
BYTE *pList;
} ListFloat;
struct {
LONG cNumList;
GUID Nom;
GUID *pList;
} ListGuid;
struct {
LONG cNumList;
BSTR Nom;
BSTR *pList;
} ListBStr;
struct {
LONG Nom;
LONG ValidBits;
} Flag;
struct {
LONG Dummy;
} None;
} ValidVal;
}WIA_PROPERTY_INFO, *PWIA_PROPERTY_INFO;
/*******************************************************************************
*
* WIA_PROPERTY_CONTEXT - Stores property id and flag indicating whether the
* application is changing the property
*
*******************************************************************************/
typedef struct _WIA_PROPERTY_CONTEXT{
ULONG cProps;
PROPID *pProps;
BOOL *pChanged;
} WIA_PROPERTY_CONTEXT, *PWIA_PROPERTY_CONTEXT;
/*******************************************************************************
*
* WIAS_CHANGED_VALUE_INFO - Stores current and previous values for a property
*
*******************************************************************************/
typedef struct _WIAS_CHANGED_VALUE_INFO{
BOOL bChanged;
LONG vt;
union {
LONG lVal;
FLOAT fltVal;
BSTR bstrVal;
GUID guidVal;
} Old;
union {
LONG lVal;
FLOAT fltVal;
BSTR bstrVal;
GUID guidVal;
} Current;
} WIAS_CHANGED_VALUE_INFO, *PWIAS_CHANGED_VALUE_INFO;
/*******************************************************************************
*
* WIAS_DOWN_SAMPLE_INFO - Used by wiasDownSampleBuffer
*
*******************************************************************************/
typedef struct _WIAS_DOWN_SAMPLE_INFO {
ULONG ulOriginalWidth;
ULONG ulOriginalHeight;
ULONG ulBitsPerPixel;
ULONG ulXRes;
ULONG ulYRes;
ULONG ulDownSampledWidth;
ULONG ulDownSampledHeight;
ULONG ulActualSize;
ULONG ulDestBufSize;
ULONG ulSrcBufSize;
BYTE *pSrcBuffer;
BYTE *pDestBuffer;
} WIAS_DOWN_SAMPLE_INFO, *PWIAS_DOWN_SAMPLE_INFO;
/*******************************************************************************
*
* WIAS_ENDORSER_VALUE - Stores endorser strings
*
*******************************************************************************/
typedef struct _WIAS_ENDORSER_VALUE {
LPWSTR wszTokenName;
LPWSTR wszValue;
} WIAS_ENDORSER_VALUE, *PWIAS_ENDORSER_VALUE;
/*******************************************************************************
*
* WIAS_ENDORSER_INFO - Stores token/value pairs for endorser
*
*******************************************************************************/
typedef struct _WIAS_ENDORSER_INFO {
ULONG ulPageCount;
ULONG ulNumEndorserValues;
WIAS_ENDORSER_VALUE *pEndorserValues;
} WIAS_ENDORSER_INFO, *PWIAS_ENDORSER_INFO;
cpp_quote("#include \"wiamdef.h\"")