// ScanProfiles.idl : IDL source for ScanProfiles
//

// This file will be processed by the MIDL tool to
// produce the type library (ScanProfiles.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";
import "propidl.idl";

interface IScanProfile; // forward declare

[
    object,
    uuid(34EAAE27-2D89-4278-84EF-61DEFA323FC1),
    dual,
    nonextensible,
    helpstring("IScanProfileMgr Interface"),
    pointer_default(unique)
]
interface IScanProfileMgr : IDispatch
{
    HRESULT GetNumProfiles([ref,out] ULONG * pulNumProfiles);
    HRESULT GetNumProfilesforDeviceID([in] BSTR bstrDeviceID, [ref,out] ULONG * pulNumProfiles);
    HRESULT GetProfiles([ref,in,out] ULONG * pulNumProfiles, [ref,out] IScanProfile ** ppScanProfile);
    HRESULT GetProfilesforDeviceID([in] BSTR bstrDeviceID, [ref,in,out] ULONG * pulNumProfiles, [ref,out] IScanProfile ** ppScanProfile);
    HRESULT GetDefaultProfile([in] BSTR bstrDeviceID, [ref,out] IScanProfile ** ppScanProfile);
    HRESULT CreateProfile([in] BSTR bstrDeviceID, [in] BSTR bstrName, [in] GUID guidCategory, [ref,out] IScanProfile ** ppScanProfile);
    HRESULT OpenProfile([in] GUID guid, [ref,out] IScanProfile ** ppScanProfile);
    HRESULT SetDefault([in] IScanProfile * pScanProfile);
    HRESULT DeleteProfile([in] IScanProfile * pScanProfile);
    HRESULT DeleteAllProfiles([in] BSTR bstrDeviceID);
    HRESULT DeleteAllProfilesForUser();
    HRESULT Refresh();
};

[
    object,
    uuid(D68A6C07-9FF8-47D1-9A2A-429D28FBC6A4),
    dual,
    nonextensible,
    helpstring("IScanProfile Interface"),
    pointer_default(unique)
]
interface IScanProfile : IDispatch
{
    HRESULT GetGUID([ref,out] GUID * pGUID);
    HRESULT GetDeviceID([ref,out] BSTR *pbstrDeviceID);
    HRESULT IsDefault([ref,out] BOOL * pbDefault);
    HRESULT GetProperty([in] ULONG num, [ref,in] PROPID * pid, [ref,out] PROPVARIANT * pvar);
    HRESULT SetProperty([in] ULONG num, [ref,in] PROPID * pid, [ref,in] PROPVARIANT * pvar);
    HRESULT GetAllPropIDs([ref,in,out] ULONG * num, [ref,out] PROPID * ppid);
    HRESULT GetNumPropIDS([ref,out] ULONG * num);
    HRESULT GetName([ref,out] BSTR * pbstrName);
    HRESULT SetName([in] BSTR pbstrName);
    HRESULT GetItem([ref,out] GUID * pguidCategory);
    HRESULT SetItem([in] GUID guidCategory);
    HRESULT Save();
    HRESULT RemoveProperty([in] ULONG num, [ref,in] PROPID * pid);
};

[
	object,
	uuid(B67CDDB7-2B20-473E-8D6C-3F1BD202E78D),
	dual,
	nonextensible,
	helpstring("IScanProfileUI Interface"),
	pointer_default(unique)
]
interface IScanProfileUI : IDispatch
{
    HRESULT ScanProfileDialog([in] HWND hwndParent);
};

[
    uuid(77A6BD8A-AB60-49FF-853C-B6EE7BABAF96),
    version(1.0),
    helpstring("ScanProfiles 1.0 Type Library")
]
library ScanProfilesLib
{
    importlib("stdole2.tlb");

    [
        uuid(CB0FC8E5-686A-478B-A252-FDECF8E167B7),
        helpstring("ScanProfileMgr Class")
    ]
    coclass ScanProfileMgr
    {
        [default] interface IScanProfileMgr;
    };

	[
		uuid(19603261-6059-43DF-B9E1-8B4352825A90),
		helpstring("ScanProfileUI Class")
	]
	coclass ScanProfileUI
	{
		[default] interface IScanProfileUI;
	};
};

