bzdashek
Joined: 15 Feb 2012
Posts: 147
Location: Tolstokvashino, Russia
|
Dear all,
I'm trying to make use of one COM object, but have no clue how to do it right.
I have a type library, which works ok (tested it using C#). I'm trying to invoke different methods but they doesn't seem to work.
CoCreateInstance works ok:
section '.code' code readable executable
start:
invoke CoInitialize,NULL
cmp eax,S_OK
jne error
invoke CoCreateInstance,CLSID_SiebelDataBusObjInterface,NULL,CLSCTX_INPROC_SERVER,IID_SiebelApplication,sApp ;initializing interface
cmp eax,S_OK
jne error
cmp [sApp],0
jz error
;...
section '.data' data readable writeable
CLSID_SiebelDataBusObjInterface GUID 6AD52085-E86F-11CF-A52E-00C04FD20274
IID_SiebelApplication GUID 6AD52084-E86F-11CF-A52E-00C04FD20274
sApp SiebelApplication
But then, when I'm trying to cominvk different methods, I'm receiving unexpected results. here's the definition I made manually from the typelib:
interface SiebelApplication,\
LoadObjects,\
Login,\
GetBusObject,\
GetLastErrText,\
LoginId,\
LoginName,\
PositionId,\
PositionName,\
CurrencyCode,\
GetSharedGlobal,\
SetSharedGlobal,\
TraceOn,\
TraceOff,\
InvokeMethod,\
Trace,\
GetService,\
NewPropertySet,\
GetProfileAttr,\
SetProfileAttr,\
SetPositionId,\
SetPositionName
I'm thinking that there's something I'm doing the way it shouldn't be done. Any advice would be appreciated.
Here's the typelib:
// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: sobjsrv.tlb
[
uuid(6AD52081-E86F-11CF-A52E-00C04FD20274),
version(1.0),
helpstring("Siebel Data BusObject Interfaces"),
custom(DE77BA64-517C-11D1-A2DA-0000F8773CE9, 100663657),
custom(DE77BA63-517C-11D1-A2DA-0000F8773CE9, 1213811687),
custom(DE77BA65-517C-11D1-A2DA-0000F8773CE9, "Created by MIDL version 6.00.0361 at Wed Jun 18 11:54:42 2008
")
]
library SiebelDataServer
{
// TLib : // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
importlib("stdole2.tlb");
// Forward declare all types defined in this typelib
dispinterface SiebelApplication;
dispinterface SiebelBusObject;
dispinterface SiebelBusComp;
dispinterface SiebelService;
dispinterface SiebelPropertySet;
[
uuid(6AD52084-E86F-11CF-A52E-00C04FD20274)
]
dispinterface SiebelApplication {
properties:
methods:
[id(0x00000001)]
void LoadObjects(
BSTR Configuration,
short* errCode);
[id(0x00000002)]
void Login(
BSTR UserName,
BSTR Password,
short* errCode);
[id(0x00000003)]
IDispatch* GetBusObject(
BSTR BusObjectName,
short* errCode);
[id(0x00000004)]
BSTR GetLastErrText();
[id(0x00000005)]
BSTR LoginId(short* errCode);
[id(0x00000006)]
BSTR LoginName(short* errCode);
[id(0x00000007)]
BSTR PositionId(short* errCode);
[id(0x00000008)]
BSTR PositionName(short* errCode);
[id(0x00000009)]
BSTR CurrencyCode(short* errCode);
[id(0x0000000a)]
BSTR GetSharedGlobal(
BSTR varName,
short* errCode);
[id(0x0000000b)]
void SetSharedGlobal(
BSTR varName,
BSTR value,
short* errCode);
[id(0x0000000c)]
void TraceOn(
BSTR FileName,
BSTR Category,
BSTR Source,
short* errCode);
[id(0x0000000d)]
void TraceOff(short* errCode);
[id(0x0000000e)]
BSTR InvokeMethod(
BSTR methodName,
VARIANT* methodArgs,
short* errCode);
[id(0x0000000f)]
void Trace(
BSTR Message,
short* errCode);
[id(0x00000010)]
IDispatch* GetService(
BSTR ServiceName,
short* errCode);
[id(0x00000011)]
IDispatch* NewPropertySet(short* errCode);
[id(0x00000012)]
BSTR GetProfileAttr(
BSTR name,
short* errCode);
[id(0x00000013)]
void SetProfileAttr(
BSTR name,
BSTR value,
short* errCode);
[id(0x00000014)]
void SetPositionId(
BSTR value,
short* errCode);
[id(0x00000015)]
void SetPositionName(
BSTR value,
short* errCode);
};
[
uuid(6AD52086-E86F-11CF-A52E-00C04FD20274)
]
dispinterface SiebelBusObject {
properties:
methods:
[id(0x00000001)]
IDispatch* GetBusComp(
BSTR BusCompName,
short* errCode);
[id(0x00000002)]
BSTR name(short* errCode);
};
[
uuid(6AD52089-E86F-11CF-A52E-00C04FD20274)
]
dispinterface SiebelBusComp {
properties:
methods:
[id(0x00000001)]
void SetSortSpec(
BSTR SortSpec,
short* errCode);
[id(0x00000002)]
void ExecuteQuery(
VARIANT_BOOL cursorMode,
short* errCode);
[id(0x00000003)]
VARIANT_BOOL FirstRecord(short* errCode);
[id(0x00000004)]
VARIANT_BOOL NextRecord(short* errCode);
[id(0x00000005)]
BSTR GetFieldValue(
BSTR FieldName,
short* errCode);
[id(0x00000006)]
void SetFieldValue(
BSTR FieldName,
BSTR FieldValue,
short* errCode);
[id(0x00000007)]
void WriteRecord(short* errCode);
[id(0x00000008)]
VARIANT_BOOL LastRecord(short* errCode);
[id(0x00000009)]
VARIANT_BOOL PreviousRecord(short* errCode);
[id(0x0000000a)]
void SetSearchSpec(
BSTR FieldName,
BSTR SearchSpec,
short* errCode);
[id(0x0000000b)]
void NewRecord(
short where,
short* errCode);
[id(0x0000000c)]
void DeleteRecord(short* errCode);
[id(0x0000000d)]
BSTR name(short* errCode);
[id(0x0000000e)]
void ClearToQuery(short* errCode);
[id(0x0000000f)]
void RefineQuery(short* errCode);
[id(0x00000010)]
IDispatch* GetMVGBusComp(
BSTR FieldName,
short* errCode);
[id(0x00000011)]
IDispatch* GetAssocBusComp(short* errCode);
[id(0x00000012)]
IDispatch* ParentBusComp(short* errCode);
[id(0x00000013)]
void DeactivateFields(short* errCode);
[id(0x00000014)]
void ActivateField(
BSTR FieldName,
short* errCode);
[id(0x00000015)]
IDispatch* GetPicklistBusComp(
BSTR FieldName,
short* errCode);
[id(0x00000016)]
short GetViewMode(short* errCode);
[id(0x00000017)]
void SetViewMode(
short mode,
short* errCode);
[id(0x00000018)]
void Pick(short* errCode);
[id(0x00000019)]
void Associate(
short where,
short* errCode);
[id(0x0000001a)]
void SetUserProperty(
BSTR Property,
BSTR value,
short* errCode);
[id(0x0000001b)]
BSTR GetUserProperty(
BSTR Property,
short* errCode);
[id(0x0000001c), hidden]
BSTR InvokeMethod(
BSTR methodName,
VARIANT* methodArgs,
short* errCode);
[id(0x0000001d)]
void ExecuteQuery2(
VARIANT_BOOL cursorMode,
VARIANT_BOOL ignoreMaxCursorSize,
short* errCode);
[id(0x0000001e)]
BSTR GetFormattedFieldValue(
BSTR FieldName,
short* errCode);
[id(0x0000001f)]
void SetFormattedFieldValue(
BSTR FieldName,
BSTR FieldValue,
short* errCode);
[id(0x00000020)]
BSTR GetNamedSearch(
BSTR searchName,
short* errCode);
[id(0x00000021)]
void SetNamedSearch(
BSTR searchName,
BSTR searchText,
short* errCode);
[id(0x00000022)]
BSTR GetSearchSpec(
BSTR FieldName,
short* errCode);
[id(0x00000023)]
BSTR GetSearchExpr(short* errCode);
[id(0x00000024)]
void SetSearchExpr(
BSTR searchText,
short* errCode);
[id(0x00000025)]
void UndoRecord(short* errCode);
[id(0x00000026)]
IDispatch* BusObject(short* errCode);
[id(0x00000027)]
void ActivateMultipleFields(
IDispatch* fields,
short* errCode);
[id(0x00000028)]
void GetMultipleFieldValues(
IDispatch* fields,
IDispatch* values,
short* errCode);
[id(0x00000029)]
void SetMultipleFieldValues(
IDispatch* values,
short* errCode);
[id(0x0000002a)]
BSTR GetSortSpec(short* errCode);
};
[
uuid(A98767CF-3D31-4305-98A0-A9E3615ED2F6)
]
dispinterface SiebelService {
properties:
methods:
[id(0x00000001)]
BSTR name(short* errCode);
[id(0x00000002)]
BSTR GetProperty(
BSTR propName,
short* errCode);
[id(0x00000003)]
void SetProperty(
BSTR propName,
BSTR propValue,
short* errCode);
[id(0x00000004)]
VARIANT_BOOL PropertyExists(
BSTR propName,
short* errCode);
[id(0x00000005)]
void RemoveProperty(
BSTR propName,
short* errCode);
[id(0x00000006)]
BSTR GetFirstProperty(short* errCode);
[id(0x00000007)]
BSTR GetNextProperty(short* errCode);
[id(0x00000008)]
void InvokeMethod(
BSTR method,
IDispatch* inputs,
IDispatch* outputs,
short* errCode);
};
[
uuid(0E991004-564A-439E-93A0-DDBD88D89642)
]
dispinterface SiebelPropertySet {
properties:
methods:
[id(0x00000001)]
BSTR GetType(short* errCode);
[id(0x00000002)]
void SetType(
BSTR type,
short* errCode);
[id(0x00000003)]
BSTR GetValue(short* errCode);
[id(0x00000004)]
void SetValue(
BSTR value,
short* errCode);
[id(0x00000005)]
BSTR GetProperty(
BSTR propName,
short* errCode);
[id(0x00000006)]
void SetProperty(
BSTR propName,
BSTR propValue,
short* errCode);
[id(0x00000007)]
VARIANT_BOOL PropertyExists(
BSTR propName,
short* errCode);
[id(0x00000008)]
void RemoveProperty(
BSTR propName,
short* errCode);
[id(0x00000009)]
BSTR GetFirstProperty(short* errCode);
[id(0x0000000a)]
BSTR GetNextProperty(short* errCode);
[id(0x0000000b)]
int AddChild(
IDispatch* child,
short* errCode);
[id(0x0000000c)]
IDispatch* GetChild(
int index,
short* errCode);
[id(0x0000000d)]
int GetChildCount(short* errCode);
[id(0x0000000e)]
void InsertChildAt(
IDispatch* child,
int index,
short* errCode);
[id(0x0000000f)]
void RemoveChild(
int index,
short* errCode);
[id(0x00000010)]
IDispatch* Copy(short* errCode);
[id(0x00000011)]
void Reset(short* errCode);
[id(0x00000012)]
int GetPropertyCount(short* errCode);
};
typedef [public]
__MIDL___MIDL_itf_sobjsrv_0000_0001 SiebelQueryConstants;
typedef enum {
ForwardBackward = 0,
ForwardOnly = 1
} __MIDL___MIDL_itf_sobjsrv_0000_0001;
typedef [public]
__MIDL___MIDL_itf_sobjsrv_0000_0002 SiebelNewRecordConstants;
typedef enum {
NewBefore = 0,
NewAfter = 1,
NewBeforeCopy = 2,
NewAfterCopy = 3
} __MIDL___MIDL_itf_sobjsrv_0000_0002;
typedef [public]
__MIDL___MIDL_itf_sobjsrv_0000_0003 SiebelViewModeConstants;
typedef enum {
SalesRepView = 0,
ManagerView = 1,
PersonalView = 2,
AllView = 3,
NoneSetView = 4,
OrgView = 5,
ContactView = 6,
SubOrgView = 7,
GroupView = 8,
CatalogView = 9
} __MIDL___MIDL_itf_sobjsrv_0000_0003;
typedef [public]
__MIDL___MIDL_itf_sobjsrv_0000_0004 SiebelEnumErrCode;
typedef enum {
SSGenErrInternal = 4096,
SSELErrAppletNotActive = 4097,
SSELErrAppletHasNoBusComp = 4098,
SSELErrBadNewWhere = 4099,
SSELErrBadViewModeNum = 4100,
SSELErrControlNotInApplet = 4101,
SSELErrGotoViewActiveBusObj = 4102,
SSELErrInactiveApplet = 4103,
SSELErrMethodNotSupported = 4104,
SSELErrNoAppletName = 4105,
SSELErrNoControlName = 4106,
SSELErrNoVariableName = 4107,
SSELErrNoViewName = 4108,
SSELErrNotAssocList = 4109,
SSELErrOutOfScope = 4110,
SSELErrUnknownApplet = 4111,
SSELErrUnknownControl = 4112,
SSELErrUnknownView = 4113,
SSOleErrOleDisabled = 4114,
SSOleErrInternal = 4115,
SSOleErrMemory = 4116,
SSOleErrMissingAppletArg = 4117,
SSOleErrMissingControlArg = 4118,
SSOleErrMissingStringArg = 4119,
SSOleErrMissingOrInvalidConfigFile = 4120,
SSOleErrStringArrayExpected = 4121,
SSOleErrUnableToLogin = 4122,
SSOMErrActRowChanged = 4123,
SSOMErrActiveRow = 4124,
SSOMErrAddAssoc = 4125,
SSOMErrAssocCurRow = 4126,
SSOMErrAssocList = 4127,
SSOMErrBOBusComp = 4128,
SSOMErrBOQuerySyntax = 4129,
SSOMErrBoundedPick = 4130,
SSOMErrBusObjProp = 4131,
SSOMErrConstrBusComp = 4132,
SSOMErrContextSyntax = 4133,
SSOMErrDeleteRecord = 4134,
SSOMErrEOWS = 4135,
SSOMErrEmptyMVGParent = 4136,
SSOMErrEnd = 4137,
SSOMErrExec = 4138,
SSOMErrGetBusComp = 4139,
SSOMErrGetContext = 4140,
SSOMErrGetMVGroup = 4141,
SSOMErrGetQuerySpec = 4142,
SSOMErrGotoBookmark = 4143,
SSOMErrHome = 4144,
SSOMErrInvalidLogin = 4145,
SSOMErrMVGCopyRec = 4146,
SSOMErrMVGQuery = 4147,
SSOMErrMVSrcInactive = 4148,
SSOMErrNewRecIdValue = 4149,
SSOMErrNewRecord = 4150,
SSOMErrNextRecord = 4151,
SSOMErrNextSet = 4152,
SSOMErrNoAssocList = 4153,
SSOMErrNoAssocMVGAllowed = 4154,
SSOMErrNoDelete = 4155,
SSOMErrNoInsert = 4156,
SSOMErrParentBCRequired = 4157,
SSOMErrParentMVGEmpty = 4158,
SSOMErrPickCurRow = 4159,
SSOMErrPopupRequired = 4160,
SSOMErrPriorRecord = 4161,
SSOMErrPriorSet = 4162,
SSOMErrScrollWorkSet = 4163,
SSOMErrSearchNotSupp = 4164,
SSOMErrSetActiveRow = 4165,
SSOMErrSetContext = 4166,
SSOMErrSetFieldValue = 4167,
SSOMErrSetMVGPrimaryId = 4168,
SSOMErrSortNotSupp = 4169,
SSOMErrUpdRecord = 4170,
SSOMErrUserAbort = 4171,
SSSqlErrAssocObj = 4172,
SSSqlErrBOF = 4173,
SSSqlErrDupConflict = 4174,
SSSqlErrDupConflict2 = 4175,
SSSqlErrEOF = 4176,
SSSqlErrEndNoSort = 4177,
SSSqlErrEndTrx = 4178,
SSSqlErrEvalFieldExpr = 4179,
SSSqlErrFieldExist = 4180,
SSSqlErrFieldNoQBE = 4181,
SSSqlErrFieldReadOnly = 4182,
SSSqlErrFieldSearch = 4183,
SSSqlErrLogon = 4184,
SSSqlErrRecordDeleted = 4185,
SSSqlErrReqField = 4186,
SSSqlErrRsltsDiscarded = 4187,
SSELErrBadAssocWhere = 4188,
SSELErrBadDrilldownName = 4189,
SSCorbaErrCorbaDisabled = 4190,
SSCorbaErrInternal = 4191,
SSCorbaErrMemory = 4192,
SSCorbaErrMissingAppletArg = 4193,
SSCorbaErrMissingControlArg = 4194,
SSCorbaErrMissingStringArg = 4195,
SSCorbaErrMissingOrInvalidConfigFile = 4196,
SSCorbaErrStringArrayExpected = 4197,
SSCorbaErrUnableToLogin = 4198,
SSELErrBusCompNameRequired = 4199,
SSELErrCannotCreateService = 4200,
SSELErrMethodNameRequired = 4201,
SSELErrServiceNameRequired = 4202,
SSELErrUserDefinedError = 4203
} __MIDL___MIDL_itf_sobjsrv_0000_0004;
};
|