Cambios recientes

2012-08-21

Últimos archivo liberados

BonDecoder (1.0.0)2012-08-21 00:03

Wiki Guide

Sidebar

BonDecoder IDL definitions

BonDecoder IDL includes two parts,

* IBonDecoder is standard dual (IDispatch automation) interface implements. * IRawBonDecoder is custom (More fast data transfer) interface implements.

"Decode" and "Finish" method data argument type is VARIANT/SAFEARRAY. "DecodeDirect" and "FinishDirect" method data argument type is direct point buffer address.

(BonDecoder contains proxy/stub marshal data, can over apartment boundary calls, but direct point buffer address is not direct.)

[
	uuid(D0D538A0-CAC8-4938-8257-0DCC89639754)
]
enum UsingInstructions
{
	UsingInstruction_Normal,
	UsingInstruction_SSE2,
	UsingInstruction_SSSE3
};

[
	uuid(0F255E0D-1DF5-4FB4-B917-DACF9C3311A5)
]
enum CardTypes
{
	CardType_PrePaid	= 0x00,
	CardType_Standard	= 0x01,
	CardType_Invalid	= 0xFF
};

[
	object,
	uuid(454BE5FE-862F-4A20-9F75-9C4C8D2FEC5B),
	dual,
	nonextensible,
	helpstring("IBonDecoder interface"),
	pointer_default(unique)
]
interface IBonDecoder : IDispatch
{
	[propget, id(1), helpstring("Property WinSCardPath")] HRESULT WinSCardPath([out, retval] BSTR* pVal);
	[propput, id(1), helpstring("Property WinSCardPath")] HRESULT WinSCardPath([in] BSTR newVal);
	[propget, id(2), helpstring("Property EMMProcess")] HRESULT EMMProcess([out, retval] VARIANT_BOOL* pVal);
	[propput, id(2), helpstring("Property EMMProcess")] HRESULT EMMProcess([in] VARIANT_BOOL newVal);
	[propget, id(3), helpstring("Property ServiceID")] HRESULT ServiceID([out, retval] USHORT* pVal);
	[propput, id(3), helpstring("Property ServiceID")] HRESULT ServiceID([in] USHORT newVal);
	[propget, id(4), helpstring("Property PATGeneration")] HRESULT PATGeneration([out, retval] VARIANT_BOOL* pVal);
	[propput, id(4), helpstring("Property PATGeneration")] HRESULT PATGeneration([in] VARIANT_BOOL newVal);
	[propget, id(5), helpstring("Property TransportStreamID")] HRESULT TransportStreamID([out, retval] USHORT* pVal);
	[propput, id(5), helpstring("Property TransportStreamID")] HRESULT TransportStreamID([in] USHORT newVal);

	[propget, id(10), helpstring("Property Running")] HRESULT Running([out, retval] VARIANT_BOOL* pVal);
	[propget, id(11), helpstring("Property UsingInstruction")] HRESULT UsingInstruction([out, retval] enum UsingInstructions* pVal);
	[propget, id(12), helpstring("Property CardID")] HRESULT CardID([out, retval] ULONGLONG* pVal);
	[propget, id(13), helpstring("Property CardType")] HRESULT CardType([out, retval] enum CardTypes* pVal);
	[propget, id(14), helpstring("Property CardManufacturerID")] HRESULT CardManufacturerID([out, retval] UCHAR* pVal);
	[propget, id(15), helpstring("Property CardVersion")] HRESULT CardVersion([out, retval] UCHAR* pVal);
	[propget, id(16), helpstring("Property CardReaderName")] HRESULT CardReaderName([out, retval] BSTR* pVal);
	[id(17), helpstring("Method GetEcmPIDByServiceID")] HRESULT GetEcmPIDByServiceID([in] USHORT serviceID, [out, retval] USHORT* pVal);

	[id(20), helpstring("Method Start")] HRESULT Start();
	[id(21), helpstring("Method Decode")] HRESULT Decode([in] VARIANT sourceData, [in] ULONG maxResultSize, [out, retval] VARIANT *pRetVal);
	[id(22), helpstring("Method Finish")] HRESULT Finish([in] ULONG maxResultSize, [out, retval] VARIANT *pRetVal);
	[id(23), helpstring("Method Flush")] HRESULT Flush();
	[id(24), helpstring("Method Reset")] HRESULT Reset();
};

[
	object,
	uuid(454BE5FF-862F-4A20-9F75-9C4C8D2FEC5B),
	nonextensible,
	helpstring("IRawBonDecoder interface"),
	pointer_default(unique)
]
interface IRawBonDecoder : IUnknown
{
	[propget, helpstring("Property WinSCardPath")] HRESULT WinSCardPath([out, retval] BSTR* pVal);
	[propput, helpstring("Property WinSCardPath")] HRESULT WinSCardPath([in] BSTR newVal);
	[propget, helpstring("Property EMMProcess")] HRESULT EMMProcess([out, retval] VARIANT_BOOL* pVal);
	[propput, helpstring("Property EMMProcess")] HRESULT EMMProcess([in] VARIANT_BOOL newVal);
	[propget, helpstring("Property ServiceID")] HRESULT ServiceID([out, retval] USHORT* pVal);
	[propput, helpstring("Property ServiceID")] HRESULT ServiceID([in] USHORT newVal);
	[propget, helpstring("Property PATGeneration")] HRESULT PATGeneration([out, retval] VARIANT_BOOL* pVal);
	[propput, helpstring("Property PATGeneration")] HRESULT PATGeneration([in] VARIANT_BOOL newVal);
	[propget, helpstring("Property TransportStreamID")] HRESULT TransportStreamID([out, retval] USHORT* pVal);
	[propput, helpstring("Property TransportStreamID")] HRESULT TransportStreamID([in] USHORT newVal);

	[propget, helpstring("Property Running")] HRESULT Running([out, retval] VARIANT_BOOL* pVal);
	[propget, helpstring("Property UsingInstruction")] HRESULT UsingInstruction([out, retval] enum UsingInstructions* pVal);
	[propget, helpstring("Property CardID")] HRESULT CardID([out, retval] ULONGLONG* pVal);
	[propget, helpstring("Property CardType")] HRESULT CardType([out, retval] enum CardTypes* pVal);
	[propget, helpstring("Property CardManufacturerID")] HRESULT CardManufacturerID([out, retval] UCHAR* pVal);
	[propget, helpstring("Property CardVersion")] HRESULT CardVersion([out, retval] UCHAR* pVal);
	[propget, helpstring("Property CardReaderName")] HRESULT CardReaderName([out, retval] BSTR* pVal);
	[helpstring("Method GetEcmPIDByServiceID")] HRESULT GetEcmPIDByServiceID([in] USHORT serviceID, [out, retval] USHORT* pVal);

	[helpstring("Method Start")] HRESULT Start();
	[helpstring("Method Decode")] HRESULT Decode([in] SAFEARRAY(UCHAR) sourceData, [in] ULONG maxResultSize, [out, retval] SAFEARRAY(UCHAR) *pRetVal);
	[helpstring("Method DecodeDirect")] HRESULT DecodeDirect(
		[in] ULONG sourceSize, [in, size_is(sourceSize)] UCHAR *pSourceData,
		[in] ULONG maxResultSize, [out] ULONG *pResultSize, [out, size_is(maxResultSize), length_is(*pResultSize)] UCHAR *pResultData);
	[helpstring("Method Finish")] HRESULT Finish([in] ULONG maxResultSize, [out, retval] SAFEARRAY(UCHAR) *pRetVal);
	[helpstring("Method FinishDirect")] HRESULT FinishDirect(
		[in] ULONG maxResultSize, [out] ULONG *pResultSize, [out, size_is(maxResultSize), length_is(*pResultSize)] UCHAR *pResultData);
	[helpstring("Method Flush")] HRESULT Flush();
	[helpstring("Method Reset")] HRESULT Reset();
};

[
	uuid(00298FEF-4F7E-44CD-B424-0FB9C91C17DD),
	version(1.0),
	helpstring("BonDecoder 1.0 Type library")
]
library BonDecoderLib
{
	importlib("stdole2.tlb");

	[
		uuid(20A53A0A-A803-41EC-8C42-3FDF9BF538F0),
		helpstring("BonDecoder Class")
	]
	coclass BonDecoder
	{
		[default] interface IBonDecoder;
		interface IRawBonDecoder;
	};
};