From: Biswapriyo Nath nathbappai@gmail.com
--- include/wia_lh.idl | 757 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 727 insertions(+), 30 deletions(-)
diff --git a/include/wia_lh.idl b/include/wia_lh.idl index 2e3ecf44945..4f157b75414 100644 --- a/include/wia_lh.idl +++ b/include/wia_lh.idl @@ -20,14 +20,87 @@ import "unknwn.idl"; import "oaidl.idl"; import "propidl.idl";
+typedef struct _WIA_DITHER_PATTERN_DATA +{ + LONG lSize; + BSTR bstrPatternName; + LONG lPatternWidth; + LONG lPatternLength; + LONG 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; + cpp_quote("#include <wiadef.h>")
+typedef struct _WIA_DATA_CALLBACK_HEADER +{ + LONG lSize; + GUID guidFormatID; + LONG lBufferSize; + LONG lPageCount; +} WIA_DATA_CALLBACK_HEADER, *PWIA_DATA_CALLBACK_HEADER; + +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; + +typedef struct _WIA_EXTENDED_TRANSFER_INFO +{ + ULONG ulSize; + ULONG ulMinBufferSize; + ULONG ulOptimalBufferSize; + ULONG ulMaxBufferSize; + ULONG ulNumBuffers; +} WIA_EXTENDED_TRANSFER_INFO, *PWIA_EXTENDED_TRANSFER_INFO; + +typedef struct _WIA_DEV_CAP +{ + GUID guid; + ULONG ulFlags; + BSTR bstrName; + BSTR bstrDescription; + BSTR bstrIcon; + BSTR bstrCommandline; +} WIA_DEV_CAP, *PWIA_DEV_CAP; + +typedef struct _WIA_DEV_CAP WIA_EVENT_HANDLER, *PWIA_EVENT_HANDLER; + +typedef struct _WiaTransferParams +{ + LONG lMessage; + LONG lPercentComplete; + ULONG64 ulTransferredBytes; + HRESULT hrErrorStatus; +} WiaTransferParams; + interface IEnumWIA_DEV_INFO; interface IWiaPropertyStorage; interface IWiaItem; interface IWiaEventCallback; - -cpp_quote("DEFINE_GUID(CLSID_WiaDevMgr, 0xa1f4e726,0x8cf1,0x11d1,0xbf,0x92,0x00,0x60,0x08,0x1e,0xd8,0x11);") +interface IEnumWIA_FORMAT_INFO; +interface IEnumWiaItem; +interface IEnumWIA_DEV_CAPS; +interface IWiaItem2; +interface IWiaTransferCallback;
[ object, @@ -101,34 +174,79 @@ interface IWiaDevMgr : IUnknown ] interface IEnumWIA_DEV_INFO : IUnknown { - HRESULT Next( - [in] ULONG celt, - [out, size_is(celt), length_is(*pceltFetched)] IWiaPropertyStorage **rgelt, - [out] ULONG *pceltFetched - ); + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] IWiaPropertyStorage **rgelt, + [out] ULONG *pceltFetched);
- HRESULT Skip( - [in] ULONG celt - ); + HRESULT Skip( + [in] ULONG celt);
- HRESULT Reset(); + HRESULT Reset(void);
- HRESULT Clone( - [out] IEnumWIA_DEV_INFO **ppIEnum - ); + HRESULT Clone( + [out] IEnumWIA_DEV_INFO **ppIEnum);
- HRESULT GetCount( - [out] ULONG *celt - ); + HRESULT GetCount( + [out] ULONG *celt); }
[ object, - uuid(98B5E8A0-29CC-491a-AAC0-E6DB4FDCCEB6) + uuid(ae6287b0-0084-11d2-973b-00a0c9068f2e) ] -interface IWiaPropertyStorage : IUnknown +interface IWiaEventCallback : IUnknown { - /* FIXME: fill in */ + HRESULT ImageEventCallback( + [in] const GUID *pEventGUID, + [in] BSTR bstrEventDescription, + [in] BSTR bstrDeviceID, + [in] BSTR bstrDeviceDescription, + [in] DWORD dwDeviceType, + [in] BSTR bstrFullItemName, + [out, in] ULONG *pulEventType, + [in] ULONG ulReserved); +} + +[ + object, + uuid(a558a866-a5b0-11d2-a08f-00c04f72dc3c) +] +interface IWiaDataCallback : IUnknown +{ + HRESULT BandedDataCallback( + [in] LONG lMessage, + [in] LONG lStatus, + [in] LONG lPercentComplete, + [in] LONG lOffset, + [in] LONG lLength, + [in] LONG lReserved, + [in] LONG lResLength, + [in] BYTE *pbBuffer); +} + +[ + object, + uuid(a6cef998-a5b0-11d2-a08f-00c04f72dc3c) +] +interface IWiaDataTransfer : IUnknown +{ + HRESULT idtGetData( + [out, in] LPSTGMEDIUM pMedium, + [unique, in] IWiaDataCallback *pIWiaDataCallback); + + HRESULT idtGetBandedData( + [unique, in] PWIA_DATA_TRANSFER_INFO pWiaDataTransInfo, + [unique, in] IWiaDataCallback *pIWiaDataCallback); + + HRESULT idtQueryGetData( + [unique, in] WIA_FORMAT_INFO *pfe); + + HRESULT idtEnumWIA_FORMAT_INFO( + [out] IEnumWIA_FORMAT_INFO **ppEnum); + + HRESULT idtGetExtendedTransferInfo( + [out] PWIA_EXTENDED_TRANSFER_INFO pExtendedTransferInfo); }
[ @@ -137,22 +255,601 @@ interface IWiaPropertyStorage : IUnknown ] interface IWiaItem : IUnknown { - /* FIXME: fill in */ + HRESULT GetItemType( + [out] LONG *pItemType); + + HRESULT AnalyzeItem( + [in] LONG lFlags); + + HRESULT EnumChildItems( + [out] IEnumWiaItem **ppIEnumWiaItem); + + HRESULT DeleteItem( + [in] LONG lFlags); + + HRESULT CreateChildItem( + [in] LONG lFlags, + [in] BSTR bstrItemName, + [in] BSTR bstrFullItemName, + [out] IWiaItem **ppIWiaItem); + + HRESULT EnumRegisterEventInfo( + [in] LONG lFlags, + [in] const GUID *pEventGUID, + [out] IEnumWIA_DEV_CAPS **ppIEnum); + + HRESULT FindItemByName( + [in] LONG lFlags, + [in] BSTR bstrFullItemName, + [out] IWiaItem **ppIWiaItem); + + HRESULT DeviceDlg( + [in] HWND hwndParent, + [in] LONG lFlags, + [in] LONG lIntent, + [out] LONG *plItemCount, + [out] IWiaItem ***ppIWiaItem); + + HRESULT DeviceCommand( + [in] LONG lFlags, + [in] const GUID *pCmdGUID, + [out, in] IWiaItem **pIWiaItem); + + HRESULT GetRootItem( + [out] IWiaItem **ppIWiaItem); + + HRESULT EnumDeviceCapabilities( + [in] LONG lFlags, + [out] IEnumWIA_DEV_CAPS **ppIEnumWIA_DEV_CAPS); + + HRESULT DumpItemData( + [out] BSTR *bstrData); + + HRESULT DumpDrvItemData( + [out] BSTR *bstrData); + + HRESULT DumpTreeItemData( + [out] BSTR *bstrData); + + HRESULT Diagnostic( + [in] ULONG ulSize, + [in] BYTE *pBuffer); }
[ object, - uuid(ae6287b0-0084-11d2-973b-00a0c9068f2e) + uuid(98b5e8a0-29cc-491a-aac0-e6db4fdcceb6) ] -interface IWiaEventCallback : IUnknown +interface IWiaPropertyStorage : IUnknown { - HRESULT ImageEventCallback( + HRESULT ReadMultiple( + [in] ULONG cpspec, + [in] const PROPSPEC rgpspec[], + [out] PROPVARIANT rgpropvar[]); + + HRESULT WriteMultiple( + [in] ULONG cpspec, + [in] const PROPSPEC rgpspec[], + [in] const PROPVARIANT rgpropvar[], + [in] PROPID propidNameFirst); + + HRESULT DeleteMultiple( + [in] ULONG cpspec, + [in] const PROPSPEC rgpspec[]); + + HRESULT ReadPropertyNames( + [in] ULONG cpropid, + [in] const PROPID rgpropid[], + [out] LPOLESTR rglpwstrName[]); + + HRESULT WritePropertyNames( + [in] ULONG cpropid, + [in] const PROPID rgpropid[], + [in] const LPOLESTR rglpwstrName[]); + + HRESULT DeletePropertyNames( + [in] ULONG cpropid, + [in] const PROPID rgpropid[]); + + HRESULT Commit( + [in] DWORD grfCommitFlags); + + HRESULT Revert(void); + + HRESULT Enum( + [out] IEnumSTATPROPSTG **ppenum); + + HRESULT SetTimes( + [in] const FILETIME *pctime, + [in] const FILETIME *patime, + [in] const FILETIME *pmtime); + + HRESULT SetClass( + [in] REFCLSID clsid); + + HRESULT Stat( + [out] STATPROPSETSTG *pstatpsstg); + + HRESULT GetPropertyAttributes( + [in] ULONG cpspec, + [in] PROPSPEC rgpspec[], + [out] ULONG rgflags[], + [out] PROPVARIANT rgpropvar[]); + + HRESULT GetCount( + [out] ULONG *pulNumProps); + + HRESULT GetPropertyStream( + [out] GUID *pCompatibilityId, + [out] IStream **ppIStream); + + HRESULT SetPropertyStream( + [in] GUID *pCompatibilityId, + [unique, in] IStream *pIStream); +} + +[ + object, + uuid(5e8383fc-3391-11d2-9a33-00c04fa36145) +] +interface IEnumWiaItem : IUnknown +{ + HRESULT Next( + [in] ULONG celt, + [out] IWiaItem **ppIWiaItem, + [unique, out, in] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(void); + + HRESULT Clone( + [out] IEnumWiaItem **ppIEnum); + + HRESULT GetCount( + [out] ULONG *celt); +} + +[ + object, + uuid(1fcc4287-aca6-11d2-a093-00c04f72dc3c) +] +interface IEnumWIA_DEV_CAPS : IUnknown +{ + HRESULT Next( + [in] ULONG celt, + [out] WIA_DEV_CAP *rgelt, + [unique, out, in] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(void); + + HRESULT Clone( + [out] IEnumWIA_DEV_CAPS **ppIEnum); + + HRESULT GetCount( + [out] ULONG *pcelt); +} + +[ + object, + uuid(81befc5b-656d-44f1-b24c-d41d51b4dc81) +] +interface IEnumWIA_FORMAT_INFO : IUnknown +{ + HRESULT Next( + [in] ULONG celt, + [out] WIA_FORMAT_INFO *rgelt, + [unique, out, in] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(void); + + HRESULT Clone( + [out] IEnumWIA_FORMAT_INFO **ppIEnum); + + HRESULT GetCount( + [out] ULONG *pcelt); +} + +[ + object, + uuid(a00c10b6-82a1-452f-8b6c-86062aad6890) +] +interface IWiaLog : IUnknown +{ + HRESULT InitializeLog( + [in] LONG hInstance); + + HRESULT hResult( + [in] HRESULT hResult); + + HRESULT Log( + [in] LONG lFlags, + [in] LONG lResID, + [in] LONG lDetail, + [in] BSTR bstrText); +} + +[ + object, + uuid(af1f22ac-7a40-4787-b421-aeb47a1fbd0b) +] +interface IWiaLogEx : IUnknown +{ + HRESULT InitializeLogEx( + [in] BYTE *hInstance); + + HRESULT hResult( + [in] HRESULT hResult); + + HRESULT Log( + [in] LONG lFlags, + [in] LONG lResID, + [in] LONG lDetail, + [in] BSTR bstrText); + + HRESULT hResultEx( + [in] LONG lMethodId, + [in] HRESULT hResult); + + HRESULT LogEx( + [in] LONG lMethodId, + [in] LONG lFlags, + [in] LONG lResID, + [in] LONG lDetail, + [in] BSTR bstrText); +} + +[ + object, + uuid(70681ea0-e7bf-4291-9fb1-4e8813a3f78e) +] +interface IWiaNotifyDevMgr : IUnknown +{ + HRESULT NewDeviceArrival(void); +} + +[ + object, + uuid(6291ef2c-36ef-4532-876a-8e132593778d) +] +interface IWiaItemExtras : IUnknown +{ + HRESULT GetExtendedErrorInfo( + [out] BSTR *bstrErrorText); + + HRESULT Escape( + [in] DWORD dwEscapeCode, + [in] BYTE *lpInData, + [in] DWORD cbInDataSize, + [out] BYTE *pOutData, + [in] DWORD dwOutDataSize, + [out] DWORD *pdwActualDataSize); + + HRESULT CancelPendingIO(void); +} + +[ + object, + uuid(6c16186c-d0a6-400c-80f4-d26986a0e734) +] +interface IWiaAppErrorHandler : IUnknown +{ + HRESULT GetWindow( + [out] HWND *phwnd); + + HRESULT ReportStatus( + [in] LONG lFlags, + [in] IWiaItem2 *pWiaItem2, + [in] HRESULT hrStatus, + [in] LONG lPercentComplete); +} + +[ + object, + uuid(0e4a51b1-bc1f-443d-a835-72e890759ef3) +] +interface IWiaErrorHandler : IUnknown +{ + HRESULT ReportStatus( + [in] LONG lFlags, + [in] HWND hwndParent, + [in] IWiaItem2 *pWiaItem2, + [in] HRESULT hrStatus, + [in] LONG lPercentComplete); + + HRESULT GetStatusDescription( + [in] LONG lFlags, + [in] IWiaItem2 *pWiaItem2, + [in] HRESULT hrStatus, + [out] BSTR *pbstrDescription); +} + +[ + object, + uuid(c39d6942-2f4e-4d04-92fe-4ef4d3a1de5a) +] +interface IWiaTransfer : IUnknown +{ + HRESULT Download( + [in] LONG lFlags, + [in] IWiaTransferCallback *pIWiaTransferCallback); + + HRESULT Upload( + [in] LONG lFlags, + [in] IStream *pSource, + [in] IWiaTransferCallback *pIWiaTransferCallback); + + HRESULT Cancel(void); + + HRESULT EnumWIA_FORMAT_INFO( + [out] IEnumWIA_FORMAT_INFO **ppEnum); +} + +[ + object, + uuid(27d4eaaf-28a6-4ca5-9aab-e678168b9527) +] +interface IWiaTransferCallback : IUnknown +{ + HRESULT TransferCallback( + [in] LONG lFlags, + [in] WiaTransferParams *pWiaTransferParams); + + HRESULT GetNextStream( + [in] LONG lFlags, + [in] BSTR bstrItemName, + [in] BSTR bstrFullItemName, + [out] IStream **ppDestination); +} + +[ + object, + uuid(ec46a697-ac04-4447-8f65-ff63d5154b21) +] +interface IWiaSegmentationFilter : IUnknown +{ + HRESULT DetectRegions( + [in] LONG lFlags, + [in] IStream *pInputStream, + [in] IWiaItem2 *pWiaItem2); +} + +[ + object, + uuid(a8a79ffa-450b-41f1-8f87-849ccd94ebf6) +] +interface IWiaImageFilter : IUnknown +{ + HRESULT InitializeFilter( + [in] IWiaItem2 *pWiaItem2, + [in] IWiaTransferCallback *pWiaTransferCallback); + + HRESULT SetNewCallback( + [in] IWiaTransferCallback *pWiaTransferCallback); + + HRESULT FilterPreviewImage( + [in] LONG lFlags, + [in] IWiaItem2 *pWiaChildItem2, + [in] RECT InputImageExtents, + [in] IStream *pInputStream); + + HRESULT ApplyProperties( + [in] IWiaPropertyStorage *pWiaPropertyStorage); +} + +[ + object, + uuid(95c2b4fd-33f2-4d86-ad40-9431f0df08f7) +] +interface IWiaPreview : IUnknown +{ + HRESULT GetNewPreview( + [in] LONG lFlags, + [in] IWiaItem2 *pWiaItem2, + [in] IWiaTransferCallback *pWiaTransferCallback); + + HRESULT UpdatePreview( + [in] LONG lFlags, + [in] IWiaItem2 *pChildWiaItem2, + [in] IWiaTransferCallback *pWiaTransferCallback); + + HRESULT DetectRegions( + [in] LONG lFlags); + + HRESULT Clear(void); +} + +[ + object, + uuid(59970af4-cd0d-44d9-ab24-52295630e582) +] +interface IEnumWiaItem2 : IUnknown +{ + HRESULT Next( + [in] ULONG cElt, + [out] IWiaItem2 **ppIWiaItem2, + [unique, out, in] ULONG *pcEltFetched); + + HRESULT Skip( + [in] ULONG cElt); + + HRESULT Reset(void); + + HRESULT Clone( + [out] IEnumWiaItem2 **ppIEnum); + + HRESULT GetCount( + [out] ULONG *cElt); +} + +[ + object, + uuid(6cba0075-1287-407d-9b77-cf0e030435cc) +] +interface IWiaItem2 : IUnknown +{ + HRESULT CreateChildItem( + [in] LONG lItemFlags, + [in] LONG lCreationFlags, + [in] BSTR bstrItemName, + [out] IWiaItem2 **ppIWiaItem2); + + HRESULT DeleteItem( + [in] LONG lFlags); + + HRESULT EnumChildItems( + [unique, in] const GUID *pCategoryGUID, + [out] IEnumWiaItem2 **ppIEnumWiaItem2); + + HRESULT FindItemByName( + [in] LONG lFlags, + [in] BSTR bstrFullItemName, + [out] IWiaItem2 **ppIWiaItem2); + + HRESULT GetItemCategory( + [out] GUID *pItemCategoryGUID); + + HRESULT GetItemType( + [out] LONG *pItemType); + + HRESULT DeviceDlg( + [in] LONG lFlags, + [in] HWND hwndParent, + [in] BSTR bstrFolderName, + [in] BSTR bstrFilename, + [out] LONG *plNumFiles, + [out] BSTR **ppbstrFilePaths, + [out] IWiaItem2 **ppItem); + + HRESULT DeviceCommand( + [in] LONG lFlags, + [in] const GUID *pCmdGUID, + [out, in] IWiaItem2 **ppIWiaItem2); + + HRESULT EnumDeviceCapabilities( + [in] LONG lFlags, + [out] IEnumWIA_DEV_CAPS **ppIEnumWIA_DEV_CAPS); + + HRESULT CheckExtension( + [in] LONG lFlags, + [in] BSTR bstrName, + [in] REFIID riidExtensionInterface, + [out] BOOL *pbExtensionExists); + + HRESULT GetExtension( + [in] LONG lFlags, + [in] BSTR bstrName, + [in] REFIID riidExtensionInterface, + [out, iid_is(riidExtensionInterface)] void **ppOut); + + HRESULT GetParentItem( + [out] IWiaItem2 **ppIWiaItem2); + + HRESULT GetRootItem( + [out] IWiaItem2 **ppIWiaItem2); + + HRESULT GetPreviewComponent( + [in] LONG lFlags, + [out] IWiaPreview **ppWiaPreview); + + HRESULT EnumRegisterEventInfo( + [in] LONG lFlags, [in] const GUID *pEventGUID, - [in] BSTR bstrEventDescription, + [out] IEnumWIA_DEV_CAPS **ppIEnum); + + HRESULT Diagnostic( + [in] ULONG ulSize, + [in] BYTE *pBuffer); +} + +[ + object, + uuid(79c07cf1-cbdd-41ee-8ec3-f00080cada7a) +] +interface IWiaDevMgr2 : IUnknown +{ + HRESULT EnumDeviceInfo( + [in] LONG lFlags, + [retval, out] IEnumWIA_DEV_INFO **ppIEnum); + + HRESULT CreateDevice( + [in] LONG lFlags, [in] BSTR bstrDeviceID, - [in] BSTR bstrDeviceDescription, - [in] DWORD dwDeviceType, - [in] BSTR bstrFullItemName, - [in,out] ULONG *pulEventType, - [in] ULONG ulReserved); + [out] IWiaItem2 **ppWiaItem2Root); + + HRESULT SelectDeviceDlg( + [in] HWND hwndParent, + [in] LONG lDeviceType, + [in] LONG lFlags, + [out, in] BSTR *pbstrDeviceID, + [retval, out] IWiaItem2 **ppItemRoot); + + HRESULT SelectDeviceDlgID( + [in] HWND hwndParent, + [in] LONG lDeviceType, + [in] LONG lFlags, + [retval, out] BSTR *pbstrDeviceID); + + HRESULT RegisterEventCallbackInterface( + [in] LONG lFlags, + [in] BSTR bstrDeviceID, + [in] const GUID *pEventGUID, + [unique, in] IWiaEventCallback *pIWiaEventCallback, + [out] IUnknown **pEventObject); + + HRESULT RegisterEventCallbackProgram( + [in] LONG lFlags, + [in] BSTR bstrDeviceID, + [in] const GUID *pEventGUID, + [in] BSTR bstrFullAppName, + [in] BSTR bstrCommandLineArg, + [in] BSTR bstrName, + [in] BSTR bstrDescription, + [in] BSTR bstrIcon); + + HRESULT RegisterEventCallbackCLSID( + [in] LONG lFlags, + [in] BSTR bstrDeviceID, + [in] const GUID *pEventGUID, + [unique, in] const GUID *pClsID, + [in] BSTR bstrName, + [in] BSTR bstrDescription, + [in] BSTR bstrIcon); + + HRESULT GetImageDlg( + [in] LONG lFlags, + [in] BSTR bstrDeviceID, + [in] HWND hwndParent, + [in] BSTR bstrFolderName, + [in] BSTR bstrFilename, + [out] LONG *plNumFiles, + [out] BSTR **ppbstrFilePaths, + [out, in] IWiaItem2 **ppItem); } + +[ + uuid(a1f4e726-8cf1-11d1-bf92-0060081ed811) +] +coclass WiaDevMgr {} + +[ + uuid(b6c292bc-7c88-41ee-8b54-8ec92617e599) +] +coclass WiaDevMgr2 {} + +[ + uuid(a1e75357-881a-419e-83e2-bb16db197c68) +] +coclass WiaLog {} + +[ + uuid(99f74582-8cf1-11d1-bf92-0060081ed811) +] +library WiaDevMgr {}