mirror of https://github.com/tongzx/nt5src
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
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;
|
|
};
|
|
|
|
};
|
|
|