Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

1076 lines
35 KiB

/******************************************************************************
*
* (C) COPYRIGHT MICROSOFT CORP., 1998-1999
*
* TITLE: WIA.idl
*
* VERSION: 2.0
*
* DATE: 6 Jan, 1998
*
* DESCRIPTION:
* IDL source for WIA device manager. The MIDL compiler generates
* marshaling code and a type library from this file.
*
******************************************************************************/
interface IWiaDevMgr;
interface IWiaEventCallback;
interface IWiaDataCallback;
interface IWiaItem;
interface IWiaPropertyStorage;
interface IEnumWiaItem;
interface IEnumWIA_DEV_INFO;
interface IEnumWIA_DEV_CAPS;
interface IEnumWIA_FORMAT_INFO;
interface IStiDevice;
import "unknwn.idl";
import "oaidl.idl";
import "propidl.idl";
/*******************************************************************************
*
* Structures used by WIA
*
*******************************************************************************/
//
// Dither pattern specification structure used
// with WIA_DPS_DITHER_PATTERN_DATA
//
typedef struct _WIA_DITHER_PATTERN_DATA
{
LONG lSize;
BSTR bstrPatternName;
LONG lPatternWidth;
LONG lPatternLength;
LONG cbPattern;
[size_is(cbPattern)] BYTE *pbPattern;
} WIA_DITHER_PATTERN_DATA, *PWIA_DITHER_PATTERN_DATA;
typedef struct _WIA_PROPID_TO_NAME {
PROPID propid;
LPOLESTR pszName;
} WIA_PROPID_TO_NAME, *PWIA_PROPID_TO_NAME;
typedef struct _WIA_FORMAT_INFO
{
GUID guidFormatID;
LONG lTymed;
} WIA_FORMAT_INFO, *PWIA_FORMAT_INFO;
/*******************************************************************************
*
* Import header file which contains WIA constants and globals
*
*******************************************************************************/
cpp_quote("#include \"wiadef.h\"")
/*******************************************************************************
*
* WIA Device Manager Interface
*
*******************************************************************************/
[
object,
uuid(5eb2502a-8cf1-11d1-bf92-0060081ed811),
helpstring("WIA Device Manager Interface"),
pointer_default(unique)
]
interface IWiaDevMgr : IUnknown
{
[helpstring("Create an WIA device information enumerator")]
HRESULT EnumDeviceInfo(
[in] LONG lFlag,
[out, retval] IEnumWIA_DEV_INFO **ppIEnum);
//
// Creates/loads device.
//
[local]
HRESULT CreateDevice(
[in] BSTR bstrDeviceID,
[out] IWiaItem **ppWiaItemRoot);
[call_as(CreateDevice), helpstring("Create an WIA device object")]
HRESULT LocalCreateDevice(
[in] BSTR bstrDeviceID,
[out] IWiaItem **ppWiaItemRoot);
//
// Creates/loads user selected device. Client side only call.
//
[local]
HRESULT SelectDeviceDlg(
[in] HWND hwndParent,
[in] LONG lDeviceType,
[in] LONG lFlags,
[in,out] BSTR *pbstrDeviceID,
[out,retval] IWiaItem **ppItemRoot);
[call_as(SelectDeviceDlg), helpstring("Present UI to select then create an WIA device")]
HRESULT LocalSelectDeviceDlg(
[in] HWND hwndParent,
[in] LONG lDeviceType,
[in] LONG lFlags,
[in,out] BSTR *pbstrDeviceID,
[out, retval] IWiaItem **ppItemRoot);
//
// Returns the device ID of user selected device. Client side only call.
//
[local]
HRESULT SelectDeviceDlgID(
[in] HWND hwndParent,
[in] LONG lDeviceType,
[in] LONG lFlags,
[out, retval] BSTR *pbstrDeviceID );
[call_as(SelectDeviceDlgID), helpstring("Present UI to select then create an WIA device, returns BSTR")]
HRESULT LocalSelectDeviceDlgID(
[in] HWND hwndParent,
[in] LONG lDeviceType,
[in] LONG lFlags,
[out, retval] BSTR *pbstrDeviceID );
//
// Creates/loads user selected device and gets image. Client side only call.
//
[local]
HRESULT GetImageDlg(
[in] HWND hwndParent,
[in] LONG lDeviceType,
[in] LONG lFlags,
[in] LONG lIntent,
[in] IWiaItem *pItemRoot,
[in] BSTR bstrFilename,
[in,out] GUID *pguidFormat);
[call_as(GetImageDlg), helpstring("Get an image to file")]
HRESULT LocalGetImageDlg(
[in] HWND hwndParent,
[in] LONG lDeviceType,
[in] LONG lFlags,
[in] LONG lIntent,
[in] IWiaItem *pItemRoot,
[in] BSTR bstrFilename,
[in,out] GUID *pguidFormat);
//
// Event registration
//
[local]
HRESULT RegisterEventCallbackProgram(
[in] LONG lFlags,
[in] BSTR bstrDeviceID,
[in] const GUID *pEventGUID,
[in] BSTR bstrCommandline,
[in] BSTR bstrName,
[in] BSTR bstrDescription,
[in] BSTR bstrIcon);
[call_as(RegisterEventCallbackProgram), helpstring("Register application launch")]
HRESULT LocalRegisterEventCallbackProgram(
[in] LONG lFlags,
[in] BSTR bstrDeviceID,
[in] const GUID *pEventGUID,
[in] BSTR bstrCommandline,
[in] BSTR bstrName,
[in] BSTR bstrDescription,
[in] BSTR bstrIcon);
[helpstring("Registers a WIA Event Callback")]
HRESULT RegisterEventCallbackInterface(
[in] LONG lFlags,
[in] BSTR bstrDeviceID,
[in] const GUID *pEventGUID,
[in,unique] IWiaEventCallback *pIWiaEventCallback,
[out] IUnknown **pEventObject);
[local]
HRESULT RegisterEventCallbackCLSID(
[in] LONG lFlags,
[in] BSTR bstrDeviceID,
[in] const GUID *pEventGUID,
[in,unique] const GUID *pClsID,
[in] BSTR bstrName,
[in] BSTR bstrDescription,
[in] BSTR bstrIcon);
[call_as(RegisterEventCallbackCLSID), helpstring("Registers a WIA Event Callback via CLSID")]
HRESULT LocalRegisterEventCallbackCLSID(
[in] LONG lFlags,
[in] BSTR bstrDeviceID,
[in] const GUID *pEventGUID,
[in,unique] const GUID *pClsID,
[in] BSTR bstrName,
[in] BSTR bstrDescription,
[in] BSTR bstrIcon);
//
// add either a non-pnp local Wia device or a network device
//
[helpstring("Present UI to add a WIA device")]
HRESULT AddDeviceDlg(
[in] HWND hwndParent,
[in] LONG lFlags);
};
/*******************************************************************************
*
* WIA Device Information Enumeration Interface
*
*******************************************************************************/
[
object,
uuid(5e38b83c-8cf1-11d1-bf92-0060081ed811),
helpstring("WIA Device Information Enumeration Interface"),
pointer_default(unique)
]
interface IEnumWIA_DEV_INFO : IUnknown
{
[local]
HRESULT Next(
[in] ULONG celt,
[out,size_is(celt), length_is(*pceltFetched)] IWiaPropertyStorage **rgelt,
[in,out,unique] ULONG* pceltFetched);
[call_as(Next), helpstring("Gets the next device information IWiaPropertyStorage object")]
HRESULT RemoteNext(
[in] ULONG celt,
[out,size_is(celt), length_is(*pceltFetched)] IWiaPropertyStorage **rgelt,
[in,out,unique] ULONG* pceltFetched);
[helpstring("Skips the next device information IWiaPropertyStorage object")]
HRESULT Skip(
[in] ULONG celt);
[helpstring("Resets to first device information IWiaPropertyStorage object")]
HRESULT Reset(void);
[helpstring("Clones this IEnumWIA_DEV_INFO object")]
HRESULT Clone(
[out] IEnumWIA_DEV_INFO **ppIEnum);
[helpstring("Returns the number of elements stored by this enumerator")]
HRESULT GetCount(
[out] ULONG *celt);
}
/**************************************************************************\
*
* IWiaEventCallback Interface
*
*
*
*
*
*
* History:
*
* 2/11/1998
*
\**************************************************************************/
[
object,
uuid(ae6287b0-0084-11d2-973b-00a0c9068f2e),
helpstring("WIA Event callback"),
pointer_default(unique)
]
interface IWiaEventCallback : IUnknown
{
//
// WIA event notification
//
HRESULT ImageEventCallback(
[in] const GUID *pEventGUID,
[in] BSTR bstrEventDescription,
[in] BSTR bstrDeviceID,
[in] BSTR bstrDeviceDescription,
[in] DWORD dwDeviceType,
[in] BSTR bstrFullItemName,
[in, out] ULONG *pulEventType,
[in] ULONG ulReserved);
}
/**************************************************************************\
*
* WIA_DATA_CALLBACK_HEADER
*
* lSize - size of this structure
* lFormat - format of image
* lBufferSize - size of buffer needed for complete data transfer
* lPageCount - zero based count of total pages transfered
*
* History:
*
* 10/29/98
*
\**************************************************************************/
typedef struct _WIA_DATA_CALLBACK_HEADER{
LONG lSize;
GUID guidFormatID;
LONG lBufferSize;
LONG lPageCount;
}WIA_DATA_CALLBACK_HEADER,*PWIA_DATA_CALLBACK_HEADER;
/**************************************************************************\
*
* IWiaDataCallback interface
*
*
*
*
*
* History:
*
* 10/29/1998 Original Version
*
\**************************************************************************/
[
object,
uuid(a558a866-a5b0-11d2-a08f-00c04f72dc3c),
helpstring("WIA data callback"),
pointer_default(unique)
]
interface IWiaDataCallback : IUnknown
{
//
// image transfer status
//
[local]
HRESULT BandedDataCallback(
[in] LONG lMessage,
[in] LONG lStatus,
[in] LONG lPercentComplete,
[in] LONG lOffset,
[in] LONG lLength,
[in] LONG lReserved,
[in] LONG lResLength,
[in,size_is(lResLength)] BYTE *pbBuffer);
[call_as(BandedDataCallback) ,helpstring(" client data callback")]
HRESULT RemoteBandedDataCallback(
[in] LONG lMessage,
[in] LONG lStatus,
[in] LONG lPercentComplete,
[in] LONG lOffset,
[in] LONG lLength,
[in] LONG lReserved,
[in] LONG lResLength,
[in,size_is(lResLength),unique] BYTE *pbBuffer);
}
/**************************************************************************\
*
* WIA_DATA_TRANSFER_INFO
*
* ulSize - Size of this structure
* ulSection - Section provided by the client, otherwise NULL
* ulBufferSize - Size of the buffer used in data transfer
* bDoubleBuffer - Indicate whether the client want to use double buffer
* ulReserved1 - Must be ZERO
* ulReserved2 - Must be ZERO
* History:
*
* 10/29/98
*
\**************************************************************************/
typedef struct _WIA_DATA_TRANSFER_INFO {
ULONG ulSize;
ULONG ulSection;
ULONG ulBufferSize;
BOOL bDoubleBuffer;
ULONG ulReserved1;
ULONG ulReserved2;
ULONG ulReserved3;
} WIA_DATA_TRANSFER_INFO, *PWIA_DATA_TRANSFER_INFO;
/**************************************************************************\
*
* WIA_EXTENDED_TRANSFER_INFO
*
* ulSize - Size of this structure.
* ulMinBufferSize - Minimum size of buffer that can be requested.
* ulOptimalBufferSize - The device's optimal buffer size.
* ulMaxBufferSize - The maximum buffer size that can be requested.
* ulNumBuffers - Number of buffers the server may use.
*
* History:
*
* 01/20/2000
*
\**************************************************************************/
typedef struct _WIA_EXTENDED_TRANSFER_INFO {
ULONG ulSize;
ULONG ulMinBufferSize;
ULONG ulOptimalBufferSize;
ULONG ulMaxBufferSize;
ULONG ulNumBuffers;
} WIA_EXTENDED_TRANSFER_INFO, *PWIA_EXTENDED_TRANSFER_INFO;
/**************************************************************************\
*
* IWiaDataTransfer - Interface to use shared memory to transfer an image
*
*
*
*
*
*
*
* History:
*
* 4/1/1998
*
\**************************************************************************/
[
object,
uuid(a6cef998-a5b0-11d2-a08f-00c04f72dc3c),
helpstring("WIA Data Transfer Interface"),
pointer_default(unique)
]
interface IWiaDataTransfer : IUnknown
{
[local]
HRESULT idtGetData(
[in,out] LPSTGMEDIUM pMedium,
[in,unique] IWiaDataCallback *pIWiaDataCallback);
[call_as(idtGetData), helpstring("IDataObject style data transfer with progress callback")]
HRESULT idtGetDataEx(
[in,out] LPSTGMEDIUM pMedium,
[in,unique] IWiaDataCallback *pIWiaDataCallback);
[local]
HRESULT idtGetBandedData(
[in,unique] PWIA_DATA_TRANSFER_INFO pWiaDataTransInfo,
[in,unique] IWiaDataCallback *pIWiaDataCallback);
[call_as(idtGetBandedData), helpstring("transfer image into a buffer")]
HRESULT idtGetBandedDataEx(
[in,unique] PWIA_DATA_TRANSFER_INFO pWiaDataTransInfo,
[in,unique] IWiaDataCallback *pIWiaDataCallback);
[helpstring("Check if format is supported")]
HRESULT idtQueryGetData(
[in,unique] WIA_FORMAT_INFO* pfe);
[helpstring("Create format enumerator")]
HRESULT idtEnumWIA_FORMAT_INFO(
[out] IEnumWIA_FORMAT_INFO **ppEnum);
[helpstring("Returns extended transfer information")]
HRESULT idtGetExtendedTransferInfo(
[out] PWIA_EXTENDED_TRANSFER_INFO pExtendedTransferInfo);
}
/*******************************************************************************
*
* IWiaItem Interface
*
*******************************************************************************/
[
object,
uuid(4db1ad10-3391-11d2-9a33-00c04fa36145),
helpstring("WIA Device Item Interface"),
pointer_default(unique)
]
interface IWiaItem : IUnknown
{
[helpstring("Get item type")]
HRESULT GetItemType(
[out] LONG *pItemType);
[helpstring("Analyze an item")]
HRESULT AnalyzeItem(
[in] LONG lFlags);
[helpstring("Get item enumerator")]
HRESULT EnumChildItems(
[out] IEnumWiaItem **ppIEnumWiaItem);
[helpstring("Delete an item")]
HRESULT DeleteItem(
[in] LONG lFlags);
[helpstring("Create a new child item")]
HRESULT CreateChildItem(
[in] LONG lFlags,
[in] BSTR bstrItemName,
[in] BSTR bstrFullItemName,
[out] IWiaItem **ppIWiaItem);
[helpstring("Enumerate event info")]
HRESULT EnumRegisterEventInfo(
[in] LONG lFlags,
[in] const GUID *pEventGUID,
[out] IEnumWIA_DEV_CAPS **ppIEnum);
[helpstring("search for item by name")]
HRESULT FindItemByName(
[in] LONG lFlags,
[in] BSTR bstrFullItemName,
[out] IWiaItem **ppIWiaItem);
// Client side only call.
[local]
HRESULT DeviceDlg(
[in] HWND hwndParent,
[in] LONG lFlags,
[in] LONG lIntent,
[out] LONG *plItemCount,
[out] IWiaItem ***ppIWiaItem);
[call_as(DeviceDlg), helpstring("Display device data acquistion UI")]
HRESULT LocalDeviceDlg(
[in] HWND hwndParent,
[in] LONG lFlags,
[in] LONG lIntent,
[out] LONG *plItemCount,
[out] IWiaItem ***pIWiaItem);
[helpstring("Issue a device command")]
HRESULT DeviceCommand(
[in] LONG lFlags,
[in] const GUID *pCmdGUID,
[in, out] IWiaItem **pIWiaItem);
[helpstring("Get device root item")]
HRESULT GetRootItem(
[out] IWiaItem **ppIWiaItem);
[helpstring("Enumerate device events and commands")]
HRESULT EnumDeviceCapabilities(
[in] LONG lFlags,
[out] IEnumWIA_DEV_CAPS **ppIEnumWIA_DEV_CAPS);
[helpstring("Dump private item data, debug only")]
HRESULT DumpItemData(
[out] BSTR *bstrData);
[helpstring("Dump private driver item data, debug only")]
HRESULT DumpDrvItemData(
[out] BSTR *bstrData);
[helpstring("Dump private tree item data, debug only")]
HRESULT DumpTreeItemData(
[out] BSTR *bstrData);
[helpstring("Diagnostic")]
HRESULT Diagnostic(
[in] ULONG ulSize,
[in, size_is(ulSize)] BYTE *pBuffer);
};
/*******************************************************************************
*
* IWiaPropertyStorage Interface
*
*******************************************************************************/
[
object,
uuid(98B5E8A0-29CC-491a-AAC0-E6DB4FDCCEB6),
helpstring("WIA Property Storage Interface"),
pointer_default(unique)
]
interface IWiaPropertyStorage : IUnknown
{
/*
* Should be inherited really
*/
// When this IDL file is used for "IProp.dll" (the
// standalone property set DLL), we must have local
// and remotable routines (call_as routines are used
// to remove BSTRs, which are not remotable with some
// RPC run-times).
//
// For the remotable routines, we must use pointer
// parameters (e.g. "*rgspec" rather than "rgspec[]")
// so that the MIDL 2.0 compiler will generate an
// interpereted proxy/stub, rather than inline.
#ifdef IPROPERTY_DLL
[local]
#endif
HRESULT ReadMultiple(
[in] ULONG cpspec,
[in, size_is(cpspec)]
const PROPSPEC rgpspec[],
[out, size_is(cpspec)]
PROPVARIANT rgpropvar[]
);
#ifdef IPROPERTY_DLL
[call_as(ReadMultiple)]
HRESULT RemoteReadMultiple(
[out] BOOL *pfBstrPresent,
[in] ULONG cpspec,
[in, size_is(cpspec)]
const PROPSPEC *rgpspec,
[out, size_is(cpspec)]
PROPVARIANT *rgpropvar
);
#endif
#ifdef IPROPERTY_DLL
[local]
#endif
HRESULT WriteMultiple(
[in] ULONG cpspec,
[in, size_is(cpspec)]
const PROPSPEC rgpspec[],
[in, size_is(cpspec)]
const PROPVARIANT rgpropvar[],
[in] PROPID propidNameFirst
);
#ifdef IPROPERTY_DLL
[call_as(WriteMultiple)]
HRESULT RemoteWriteMultiple(
[in] BOOL fBstrPresent,
[in] ULONG cpspec,
[in, size_is(cpspec)]
const PROPSPEC *rgpspec,
[in, size_is(cpspec)]
const PROPVARIANT *rgpropvar,
[in] PROPID propidNameFirst
);
#endif
#ifdef IPROPERTY_DLL
[local]
#endif
HRESULT DeleteMultiple(
[in] ULONG cpspec,
[in, size_is(cpspec)]
const PROPSPEC rgpspec[]
);
#ifdef IPROPERTY_DLL
[call_as(DeleteMultiple)]
HRESULT RemoteDeleteMultiple(
[in] ULONG cpspec,
[in, size_is(cpspec)]
const PROPSPEC *rgpspec
);
#endif
HRESULT ReadPropertyNames(
[in] ULONG cpropid,
[in, size_is(cpropid)]
const PROPID rgpropid[],
[out, size_is(cpropid)]
LPOLESTR rglpwstrName[]
);
HRESULT WritePropertyNames(
[in] ULONG cpropid,
[in, size_is(cpropid)]
const PROPID rgpropid[],
[in, size_is(cpropid)]
const LPOLESTR rglpwstrName[]
);
HRESULT DeletePropertyNames(
[in] ULONG cpropid,
[in, size_is(cpropid)]
const PROPID rgpropid[]
);
HRESULT Commit(
[in] DWORD grfCommitFlags
);
HRESULT Revert();
HRESULT Enum(
[out] IEnumSTATPROPSTG ** ppenum
);
HRESULT SetTimes(
[in] FILETIME const * pctime,
[in] FILETIME const * patime,
[in] FILETIME const * pmtime
);
HRESULT SetClass(
[in] REFCLSID clsid
);
HRESULT Stat(
[out] STATPROPSETSTG * pstatpsstg
);
/*
*=====================================================================*
*/
[helpstring("Get property attribute information.")]
HRESULT GetPropertyAttributes(
[in] ULONG cpspec,
[in, size_is(cpspec)] PROPSPEC rgpspec[],
[out, size_is(cpspec)] ULONG rgflags[],
[out, size_is(cpspec)] PROPVARIANT rgpropvar[]);
[helpstring("Returns the current number of properties in this property storage.")]
HRESULT GetCount(
[out] ULONG *pulNumProps);
[helpstring("Get an items property stream")]
HRESULT GetPropertyStream(
[out] GUID *pCompatibilityId,
[out] IStream **ppIStream);
[helpstring("Set an items property stream")]
HRESULT SetPropertyStream(
[in] GUID *pCompatibilityId,
[in, unique] IStream *pIStream);
};
/*******************************************************************************
*
* IEnumWiaItem Interface
*
*******************************************************************************/
[
object,
uuid(5e8383fc-3391-11d2-9a33-00c04fa36145),
helpstring("WIA Device Class Item Enumeration Interface"),
pointer_default(unique)
]
interface IEnumWiaItem : IUnknown
{
[local]
HRESULT Next(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] IWiaItem **ppIWiaItem,
[in, out, unique] ULONG *pceltFetched);
[call_as(Next), helpstring("Gets the next IWiaItem object")]
HRESULT RemoteNext(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] IWiaItem **ppIWiaItem,
[in, out, unique] ULONG *pceltFetched);
[helpstring("Skips the next IWiaItem object")]
HRESULT Skip(
[in] ULONG celt);
[helpstring("Resets to first IWiaItem object")]
HRESULT Reset(void);
[helpstring("Clone IEnumWiaItem object")]
HRESULT Clone(
[out] IEnumWiaItem **ppIEnum);
[helpstring("Returns the number of elements stored by this enumerator")]
HRESULT GetCount(
[out] ULONG *celt);
}
/*******************************************************************************
*
* WIA_DEV_CAP
*
* WIA_DEV_CAP structure returns event and command information
* for the IEnumWIA_DEV_CAPS Interface
*
*******************************************************************************/
typedef struct _WIA_DEV_CAP {
GUID guid;
ULONG ulFlags; // Indicate the handler is default, etc
BSTR bstrName;
BSTR bstrDescription;
BSTR bstrIcon;
BSTR bstrCommandline;
} WIA_DEV_CAP, *PWIA_DEV_CAP, WIA_EVENT_HANDLER, *PWIA_EVENT_HANDLER;
/*******************************************************************************
*
* IEnumWIA_DEV_CAPS Interface
*
*******************************************************************************/
[
object,
uuid(1fcc4287-aca6-11d2-a093-00c04f72dc3c),
helpstring("WIA_DEV_CAPS Enumeration Interface"),
pointer_default(unique)
]
interface IEnumWIA_DEV_CAPS : IUnknown
{
[local]
HRESULT Next(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] WIA_DEV_CAP *rgelt,
[in,out,unique] ULONG *pceltFetched);
[call_as(Next), helpstring("Gets the next WIA_DEV_CAPS")]
HRESULT RemoteNext(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] WIA_DEV_CAP *rgelt,
[in,out,unique] ULONG *pceltFetched);
[helpstring("Skips the next WIA_DEV_CAPS")]
HRESULT Skip(
[in] ULONG celt);
[helpstring("Resets to first WIA_DEV_CAPS")]
HRESULT Reset(void);
[helpstring("Clone IEnumWIA_DEV_CAPS object")]
HRESULT Clone(
[out] IEnumWIA_DEV_CAPS **ppIEnum);
[helpstring("Returns the number of elements stored by this enumerator")]
HRESULT GetCount(
[out] ULONG *pcelt);
}
/*******************************************************************************
*
* IEnumWIA_FORMAT_INF Interface
*
*******************************************************************************/
[
object,
uuid(81BEFC5B-656D-44f1-B24C-D41D51B4DC81),
helpstring("WIA_FORMAT_INFO Enumeration Interface"),
pointer_default(unique)
]
interface IEnumWIA_FORMAT_INFO : IUnknown
{
[local]
HRESULT Next(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] WIA_FORMAT_INFO *rgelt,
[in,out,unique] ULONG *pceltFetched);
[call_as(Next), helpstring("Gets the next WIA_FORMAT_INFO")]
HRESULT RemoteNext(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] WIA_FORMAT_INFO *rgelt,
[in,out,unique] ULONG *pceltFetched);
[helpstring("Skips the next WIA_FORMAT_INFO")]
HRESULT Skip(
[in] ULONG celt);
[helpstring("Resets to first WIA_FORMAT_INFO")]
HRESULT Reset(void);
[helpstring("Clone IEnumWIA_FORMAT_INFO object")]
HRESULT Clone(
[out] IEnumWIA_FORMAT_INFO **ppIEnum);
[helpstring("Returns the number of elements stored by this enumerator")]
HRESULT GetCount(
[out] ULONG *pcelt);
}
/*******************************************************************************
*
* WIA Logging Interface
*
*******************************************************************************/
[
object,
uuid(A00C10B6-82A1-452f-8B6C-86062AAD6890),
helpstring("WIA Logging Interface"),
pointer_default(unique)
]
interface IWiaLog : IUnknown
{
[helpstring("Initialize Logging object")]
HRESULT InitializeLog(
[in] LONG hInstance);
[helpstring("Write ERRROR Information to log file, Translating HRESULT to error string")]
HRESULT hResult(
[in] HRESULT hResult);
[helpstring("Write TRACE,ERROR,WARNING, etc.. Information to log file, using service Resource ID")]
HRESULT Log(
[in] LONG lFlags,
[in] LONG lResID,
[in] LONG lDetail,
[in] BSTR bstrText);
};
/*******************************************************************************
*
* WIA Extended Logging Interface
*
*******************************************************************************/
[
object,
uuid(AF1F22AC-7A40-4787-B421-AEb47A1FBD0B),
helpstring("WIA (Extended) Logging Interface"),
pointer_default(unique)
]
interface IWiaLogEx : IUnknown
{
[helpstring("Initialize Logging object")]
HRESULT InitializeLogEx(
[in] BYTE *hInstance);
[helpstring("Write ERRROR Information to log file, Translating HRESULT to error string")]
HRESULT hResult(
[in] HRESULT hResult);
[helpstring("Write information to log - compatible with IWiaLog::Log(...)")]
HRESULT Log(
[in] LONG lFlags,
[in] LONG lResID,
[in] LONG lDetail,
[in] BSTR bstrText);
[helpstring("Write ERRROR Information to log file, Translating HRESULT to error string")]
HRESULT hResultEx(
[in] LONG lMethodId,
[in] HRESULT hResult);
[helpstring("Write TRACE,ERROR,WARNING, etc.. Information to log file, using service Resource ID")]
HRESULT LogEx(
[in] LONG lMethodId,
[in] LONG lFlags,
[in] LONG lResID,
[in] LONG lDetail,
[in] BSTR bstrText);
};
/*******************************************************************************
*
* WiaDevMgr General Notification Interface
*
*******************************************************************************/
[
object,
uuid(70681EA0-E7BF-4291-9FB1-4E8813A3F78E),
helpstring("WiaDevMgr Notification Interface"),
pointer_default(unique)
]
interface IWiaNotifyDevMgr : IUnknown
{
[helpstring("Notify of new device arrival")]
HRESULT NewDeviceArrival();
};
[
object,
uuid(6291ef2c-36ef-4532-876a-8e132593778d),
helpstring("WIA Item extras interface"),
pointer_default(unique)
]
interface IWiaItemExtras : IUnknown
{
[helpstring("Retrieve extended error string")]
HRESULT GetExtendedErrorInfo([out] BSTR *bstrErrorText);
[helpstring("Escape to driver")]
HRESULT Escape([in] DWORD dwEscapeCode,
[in, size_is(cbInDataSize)] BYTE * lpInData,
[in] DWORD cbInDataSize,
[out, size_is(dwOutDataSize), length_is((pdwActualDataSize) ? *pdwActualDataSize : dwOutDataSize)] BYTE * pOutData,
[in] DWORD dwOutDataSize,
[out] DWORD *pdwActualDataSize);
[helpstring("Cancel pending IO")]
HRESULT CancelPendingIO();
}
/*******************************************************************************
*
* C O M P O N E N T D E S C R I P T I O N S
*
*******************************************************************************/
[
uuid(99f74582-8cf1-11d1-bf92-0060081ed811),
version(1.0),
helpstring("WIA Type Library")
]
library WiaDevMgr
{
importlib("stdole32.tlb") ;
// WIA Device Manager
[
uuid(a1f4e726-8cf1-11d1-bf92-0060081ed811),
helpstring("WIA Device Manager")
]
coclass WiaDevMgr
{
[default] interface IWiaDevMgr;
};
// WIA Logging
[
uuid(A1E75357-881A-419e-83E2-BB16DB197C68),
helpstring("WIA Logging")
]
coclass WiaLog
{
interface IWiaLog;
};
};