Lesson 5 | COM method properties |
Objective | List the binary requirements of a COM method. |
COM Method Properties (binary requirements)
COM is a binary standard. This means that at its lowest level, COM methods and interfaces must follow a prescribed
in-memory layout. COM also constrains the return type of a COM method. The following list summarizes the properties of a COM method.
Calling conventions
COM methods are called using a hybrid of
C and PASCAL calling conventions.
In Visual C++ 5.0/6.0, the
__stdcall
attribute can be placed in front of a function to set up this calling convention.
Return types
COM methods return type HRESULT
. An HRESULT
is a 32-bit value that indicates the success or failure of a COM call. Core COM methods define specific error codes as HRESULTs
. In general, COM methods do not return application-specific error codes as return values.
Two standard HRESULT
return values are S_OK
for no error and E_FAIL
for a generic error. Two macros are defined to help process error codes: FAILED and SUCCEEDED. Each takes in an HRESULT
return value and returns zero or non-zero. For example, passing in an HRESULT
return value that indicates an error condition to FAILED will return non-zero, meaning the COM method call returned an error.
Two widely used COM methods, AddRef
and Release
of IUnknown
, return unsigned long, or ULONG
. This works because a ULONG
is the same size as an HRESULT
.
First parameter
The first parameter passed to a COM method must be a pointer to the COM interface containing the method being called.
We will discuss this in more detail in the following lesson. For example, COM interface IMyComInterface
contains methods Fx1
and Fx2
:
interface IMyComInterface {
HRESULT __stdcall Fx1(CHAR *buf);
HRESULT __stdcall Fx2();
};
COM methods also have another requirement, they must be in a Vtable. The following lessons will discuss this.
COM ClientServer Interaction - Quiz