From da3f44c338b40c51d0f289d8aebcaf45e6770ce8 Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <[email protected]>
Date: Tue, 6 Jun 2023 21:46:02 +0530
Subject: [PATCH 1/2] headers: Add wia.idl

Tested with 
https://learn.microsoft.com/en-us/windows/win32/wia/-wia-creating-a-wia-device-manager

Signed-off-by: Biswapriyo Nath <[email protected]>
---
 mingw-w64-headers/Makefile.am     |   1 +
 mingw-w64-headers/include/wia.idl | 842 ++++++++++++++++++++++++++++++
 2 files changed, 843 insertions(+)
 create mode 100644 mingw-w64-headers/include/wia.idl

diff --git a/mingw-w64-headers/Makefile.am b/mingw-w64-headers/Makefile.am
index 7c6ef85..4bc7160 100644
--- a/mingw-w64-headers/Makefile.am
+++ b/mingw-w64-headers/Makefile.am
@@ -248,6 +248,7 @@ IDL_SRCS = \
   include/wbemprov.idl \
   include/wbemtran.idl \
   include/wdstptmgmt.idl \
+  include/wia.idl \
   include/mediaobj.idl \
   include/medparam.idl \
   include/mmstream.idl \
diff --git a/mingw-w64-headers/include/wia.idl 
b/mingw-w64-headers/include/wia.idl
new file mode 100644
index 0000000..e2ce2fc
--- /dev/null
+++ b/mingw-w64-headers/include/wia.idl
@@ -0,0 +1,842 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+import "unknwn.idl";
+import "oaidl.idl";
+import "propidl.idl";
+
+cpp_quote("#include <winapifamily.h>")
+
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
+
+interface IEnumWIA_DEV_INFO;
+interface IWiaItem;
+interface IWiaEventCallback;
+interface IWiaPropertyStorage;
+interface IEnumWIA_FORMAT_INFO;
+interface IEnumWiaItem;
+interface IEnumWIA_DEV_CAPS;
+interface IWiaItem2;
+interface IWiaTransferCallback;
+
+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;
+
+/*
+ * wiadef.h requires WIA_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;
+  WINBOOL 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, WIA_EVENT_HANDLER, *PWIA_EVENT_HANDLER;
+
+typedef struct _WiaTransferParams {
+  LONG lMessage;
+  LONG lPercentComplete;
+  ULONG64 ulTransferredBytes;
+  HRESULT hrErrorStatus;
+} WiaTransferParams;
+
+[
+  object,
+  uuid(5eb2502a-8cf1-11d1-bf92-0060081ed811)
+]
+interface IWiaDevMgr : IUnknown
+{
+  HRESULT EnumDeviceInfo(
+    [in] LONG lFlag,
+    [retval, out] IEnumWIA_DEV_INFO **ppIEnum);
+
+  HRESULT CreateDevice(
+    [in] BSTR bstrDeviceID,
+    [out] IWiaItem **ppWiaItemRoot);
+
+  HRESULT SelectDeviceDlg(
+    [in] HWND hwndParent,
+    [in] LONG lDeviceType,
+    [in] LONG lFlags,
+    [in, out] BSTR *pbstrDeviceID,
+    [retval, out] IWiaItem **ppItemRoot);
+
+  HRESULT SelectDeviceDlgID(
+    [in] HWND hwndParent,
+    [in] LONG lDeviceType,
+    [in] LONG lFlags,
+    [retval, out] BSTR *pbstrDeviceID);
+
+  HRESULT GetImageDlg(
+    [in] HWND hwndParent,
+    [in] LONG lDeviceType,
+    [in] LONG lFlags,
+    [in] LONG lIntent,
+    [in] IWiaItem *pItemRoot,
+    [in] BSTR bstrFilename,
+    [in, out] GUID *pguidFormat);
+
+  HRESULT RegisterEventCallbackProgram(
+    [in] LONG lFlags,
+    [in] BSTR bstrDeviceID,
+    [in] const GUID *pEventGUID,
+    [in] BSTR bstrCommandline,
+    [in] BSTR bstrName,
+    [in] BSTR bstrDescription,
+    [in] BSTR bstrIcon);
+
+  HRESULT RegisterEventCallbackInterface(
+    [in] LONG lFlags,
+    [in] BSTR bstrDeviceID,
+    [in] const GUID *pEventGUID,
+    [unique, in] IWiaEventCallback *pIWiaEventCallback,
+    [out] IUnknown **pEventObject);
+
+  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 AddDeviceDlg(
+    [in] HWND hwndParent,
+    [in] LONG lFlags);
+}
+
+[
+  object,
+  uuid(5e38b83c-8cf1-11d1-bf92-0060081ed811)
+]
+interface IEnumWIA_DEV_INFO : IUnknown
+{
+  HRESULT Next(
+    [in] ULONG celt,
+    [out] IWiaPropertyStorage **rgelt,
+    [unique, out, in] ULONG *pceltFetched);
+
+  HRESULT Skip(
+    [in] ULONG celt);
+
+  HRESULT Reset(void);
+
+  HRESULT Clone(
+    [out] IEnumWIA_DEV_INFO **ppIEnum);
+
+  HRESULT GetCount(
+    [out] ULONG *celt);
+}
+
+[
+  object,
+  uuid(ae6287b0-0084-11d2-973b-00a0c9068f2e)
+]
+interface IWiaEventCallback : IUnknown
+{
+  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);
+}
+
+[
+  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(
+    [in, out] 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);
+}
+
+[
+  object,
+  uuid(4db1ad10-3391-11d2-9a33-00c04fa36145)
+]
+interface IWiaItem : IUnknown
+{
+  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,
+    [in, out] 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(98b5e8a0-29cc-491a-aac0-e6db4fdcceb6)
+]
+interface IWiaPropertyStorage : IUnknown
+{
+  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,
+    [in, out] 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] WINBOOL *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,
+    [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,
+    [out] IWiaItem2 **ppWiaItem2Root);
+
+  HRESULT SelectDeviceDlg(
+    [in] HWND hwndParent,
+    [in] LONG lDeviceType,
+    [in] LONG lFlags,
+    [in, out] 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,
+    [in, out] 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 {}
+
+cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */")
-- 
2.41.0

_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to