COM DCOM Interview Questions And Answers
Download COM DCOM Interview Questions and Answers PDF
Optimize your COM DCOM interview preparation with our curated set of 25 questions. These questions are specifically selected to challenge and enhance your knowledge in COM DCOM. Perfect for all proficiency levels, they are key to your interview success. Get the free PDF download to access all 25 questions and excel in your COM DCOM interview. This comprehensive guide is essential for effective study and confidence building.
25 COM DCOM Questions and Answers:
COM DCOM Job Interview Questions Table of Contents:
1 :: How do you make a NET component talk to a COM component?
RCW is used for making a NET compnent talk to a com component.
CCW is used for Com to .NET communication
Read MoreCCW is used for Com to .NET communication
2 :: What are queued components?
Queued Components, a key feature of COM+ and based on
Microsoft Message Queuing Services (MSMQ), provides an easy
way to invoke and execute components asynchronously.
Processing can occur without regard to the availability or
accessibility of either the sender or receiver. A home
shopping network is an example of the type of application
that might benefit from asynchronous processing. In this
asynchronous, disconnected scenario where viewers phone in
to several operators, orders are taken en masse and are
then queued for later retrieval and processing by the
server.
Read MoreMicrosoft Message Queuing Services (MSMQ), provides an easy
way to invoke and execute components asynchronously.
Processing can occur without regard to the availability or
accessibility of either the sender or receiver. A home
shopping network is an example of the type of application
that might benefit from asynchronous processing. In this
asynchronous, disconnected scenario where viewers phone in
to several operators, orders are taken en masse and are
then queued for later retrieval and processing by the
server.
3 :: C is aggregated by B, which in turn aggregated by A. Our client requested C. What will happen?
QueryInterface to A will delegate request to B which, in
turn, will delegate request for the interface to C. This
pointer will be returned to the client.
Read Moreturn, will delegate request for the interface to C. This
pointer will be returned to the client.
4 :: How does a DCOM component know where to instantiate itself?
While accessing the DCOM component you have to provide
COSERVERINFO structure. This structure is having the
information about where the component is.
Read MoreCOSERVERINFO structure. This structure is having the
information about where the component is.
5 :: What kind of components can be used as DCOM servers?
There are two kind components
1. InProc
2. OutProc
We can use both as DCOM servers, its upto our design.
Read More1. InProc
2. OutProc
We can use both as DCOM servers, its upto our design.
6 :: What are the different compatibility types when we create a COM component?
No Compatibility
Project Compatibility
Binary Compatibility
Read MoreProject Compatibility
Binary Compatibility
7 :: How to Use structs in COM interfaces when Automation compatibility is not an issue?
Structs, also known as User Defined Types (UDTs), can be
used in Automation- compatible interfaces
An Automation- compatible struct may contain only primitive
Automation types as its members.
Nesting structs is not allowed, but VARIANT is allowed thus
enabling nested structs (you can store a struct in a
VARIANT).
In order for a struct to be usable for Automation-
compatible interfaces, the struct must be described in a
type library and it must be declared with its own GUID:
[uuid(21602F40-CC62-11d4-AA2B-00A0CC39CFE0)]
struct MyStruct
{
[helpstring("A long value")]
long nLongValue;
[helpstring("A string")]
BSTR bstrStringValue;
};
// Later in the IDL file
[uuid(...), version(...), helpstring(...)]
library MyLib
{
...
struct MyStruct;
};
Read Moreused in Automation- compatible interfaces
An Automation- compatible struct may contain only primitive
Automation types as its members.
Nesting structs is not allowed, but VARIANT is allowed thus
enabling nested structs (you can store a struct in a
VARIANT).
In order for a struct to be usable for Automation-
compatible interfaces, the struct must be described in a
type library and it must be declared with its own GUID:
[uuid(21602F40-CC62-11d4-AA2B-00A0CC39CFE0)]
struct MyStruct
{
[helpstring("A long value")]
long nLongValue;
[helpstring("A string")]
BSTR bstrStringValue;
};
// Later in the IDL file
[uuid(...), version(...), helpstring(...)]
library MyLib
{
...
struct MyStruct;
};
8 :: Do COM keep track of all the object references (Accounting)?
Object references in COM is accounted using two methods of
IUnknown Interface (AddRef and Release).
AddRef: Increments a reference count whereas "Release"
decrements the count.
When the count of the reference is zero the DLL is unloaded
from memory.
Read MoreIUnknown Interface (AddRef and Release).
AddRef: Increments a reference count whereas "Release"
decrements the count.
When the count of the reference is zero the DLL is unloaded
from memory.
9 :: how to call a dll as a COM dll?
Inorder to call your DLL as COM dll, you have to follow
some rules to develop the dll. If those rules are there
then only your DLL will be called as COM dll.
COM is a specification set of rules to develope binaries,
COM is not a language.
Read Moresome rules to develop the dll. If those rules are there
then only your DLL will be called as COM dll.
COM is a specification set of rules to develope binaries,
COM is not a language.
10 :: Define and explain about COM?
COM (Component Object Model) technology in the Microsoft
Windows-family of Operating Systems enables software
components to communicate. COM is used by developers to
create re-usable software components, link components
together to build applications, and take advantage of
Windows services.
Read MoreWindows-family of Operating Systems enables software
components to communicate. COM is used by developers to
create re-usable software components, link components
together to build applications, and take advantage of
Windows services.
11 :: Differentiate normal DLL to COM DLL?
COM Dll exposes Interface on the contrary to normal DLL
that exports functions. Clients create the pointer to
COMDLL's interface to call the methods defined by the
component that implements the interface.
That results in isolation of implementation and definition
of method in the interface. Client doesnt need to relink or
recompile the code if method in the com dll changes as far
as the definition of the interface remains same.
Read Morethat exports functions. Clients create the pointer to
COMDLL's interface to call the methods defined by the
component that implements the interface.
That results in isolation of implementation and definition
of method in the interface. Client doesnt need to relink or
recompile the code if method in the com dll changes as far
as the definition of the interface remains same.
12 :: When you call CoInitialize(NULL) function how it works internally?
CoInitialize will initialize the COM library and will move
the executing thread to a STA or Single Threaded Apartment
Apartment is the logical entity where threads live.
Read Morethe executing thread to a STA or Single Threaded Apartment
Apartment is the logical entity where threads live.
13 :: Explain Futures of COM?
1. Defines a binary standard for component interoperability
2. Is programming language-independent
3. Is provided on multiple platforms (Microsoft® Windows®,
4. Microsoft Windows NT™, Apple® Macintosh®, UNIX®)
5. Provides for robust evolution of component-based
applications and systems
6. Is extensible
Read More2. Is programming language-independent
3. Is provided on multiple platforms (Microsoft® Windows®,
4. Microsoft Windows NT™, Apple® Macintosh®, UNIX®)
5. Provides for robust evolution of component-based
applications and systems
6. Is extensible
14 :: How do you know it is general dll or com dll?
Open the dll in dependency walker application
(depends.exe). If the dll is having following functions
DLLRegisterServer
DLLUnRegisterServer
DLLCanUnloadNow
DLLGetClassObject
It is a COM DLL otherwise it is not.
Read More(depends.exe). If the dll is having following functions
DLLRegisterServer
DLLUnRegisterServer
DLLCanUnloadNow
DLLGetClassObject
It is a COM DLL otherwise it is not.
15 :: Can a COM interface be implemented by more than one COM class in the same COM component?
NO
Read More16 :: Which tool is used to configure the port range and protocols for DCOM communications?
use DCOMCONFIG.EXE
Read More17 :: What are the purposes of AddRef, Release and QueryInterface functions?
Query Interface method is used to get the pointer to the
interface specified in one of the parameters of this
method. Client then uses this pointer to call the method of
the component.
AddRef and Release are used to increase and decrease the
count of the instance of component loaded in memory
respectively. when the count reaches zero the component is
unloaded.
Read Moreinterface specified in one of the parameters of this
method. Client then uses this pointer to call the method of
the component.
AddRef and Release are used to increase and decrease the
count of the instance of component loaded in memory
respectively. when the count reaches zero the component is
unloaded.
18 :: What is IUnknown? What methods are provided by IUnknown?
IUnknown is a type of COM Interface.
Every COM class implements an interface named IUnKnown.
IUnKnown contains three methods:
1) HRESULT QueryInterface()
2) ULONG AddRef()
3) ULONG Release()
Read MoreEvery COM class implements an interface named IUnKnown.
IUnKnown contains three methods:
1) HRESULT QueryInterface()
2) ULONG AddRef()
3) ULONG Release()
19 :: What should QueryInterface functions do if requested object was not found?
eturns a pointer to the current interface if successful or
E_NOINTERFACE otherwise.
Read MoreE_NOINTERFACE otherwise.
20 :: What happens when client calls CoCreateInstance?
- Reads Root\Classes\ProgId for the matching ProgID
- Reads Root\Classes\ProgId for the matching CLSID. The
CLSID is read from the above step.
- From the CLSID key, the server type and image filename is
known.
- Depending upon the server type, it starts the server.
- Calls CoGetClassObject function to get a handle to the
factory object.
- Then calls createinstance on the factory interface to get
the pointer to the derived object.
Read More- Reads Root\Classes\ProgId for the matching CLSID. The
CLSID is read from the above step.
- From the CLSID key, the server type and image filename is
known.
- Depending upon the server type, it starts the server.
- Calls CoGetClassObject function to get a handle to the
factory object.
- Then calls createinstance on the factory interface to get
the pointer to the derived object.
21 :: How to create an instance of the object in COM?
To create the instance of COM componet use the following
WIN32 APIs
To access the component that was there in local system use
following API
CoCreateInstance(clsid,NULL(used for
aggregation),CLSCTX_ALL,Interface_GUID,(void**)
&pRequestedInterface );
To access the COM componet remotely use the following API
CoCreateInstanceEx
(CLSID,NULL,CLSCTX_ALL,COSERVERINFO,Interface_GUID,MULTI_QI*
);
Read MoreWIN32 APIs
To access the component that was there in local system use
following API
CoCreateInstance(clsid,NULL(used for
aggregation),CLSCTX_ALL,Interface_GUID,(void**)
&pRequestedInterface );
To access the COM componet remotely use the following API
CoCreateInstanceEx
(CLSID,NULL,CLSCTX_ALL,COSERVERINFO,Interface_GUID,MULTI_QI*
);
22 :: What is the difference, if any, between OLE and COM?
OLE is a set of technologies to support linking and
embedding. COM lies in OLE as one of the technologies. COM
defines a binary standard / set of rules for developing
reusable components.
Read Moreembedding. COM lies in OLE as one of the technologies. COM
defines a binary standard / set of rules for developing
reusable components.
23 :: What is a moniker?
An object that implements the IMoniker interface. A moniker
acts as a name that uniquely identifies a COM object. In
the same way that a path identifies a file in the file
system, a moniker identifies a COM object in the directory
namespace.
Read Moreacts as a name that uniquely identifies a COM object. In
the same way that a path identifies a file in the file
system, a moniker identifies a COM object in the directory
namespace.
24 :: Suppose we have object B and aggregated object C (in- proc server), created by B. Can you access any interface of B from C? What?s the difference between aggregated and contained objects?
For the first question, Yes, we can since the QueryInterface
() rules of thumb suggest that if we can query an interface
of C from B, we should be able to query the viceversa.
The IUnknown implementation of both the objects has to do
the 'magic'.
For the second question, Aggregation bounds outer and inner
objects together and gives the user the interface pointers
of either objects to access it directly so that the user
never knows the objects are aggregated.
But when containment is used, the interface of inner object
never exposed to the client directly rather the outer
object receives the calls and forwards internally. Here
also, the user doesn't know the objects are contained.
Read More() rules of thumb suggest that if we can query an interface
of C from B, we should be able to query the viceversa.
The IUnknown implementation of both the objects has to do
the 'magic'.
For the second question, Aggregation bounds outer and inner
objects together and gives the user the interface pointers
of either objects to access it directly so that the user
never knows the objects are aggregated.
But when containment is used, the interface of inner object
never exposed to the client directly rather the outer
object receives the calls and forwards internally. Here
also, the user doesn't know the objects are contained.
25 :: What is In-proc?
In-proc server is a COM component, when instance is the
server is loaded into the caller process space. In-Proc
server can be easily identified by .dll extension.
Out-of-Proc server is a COM component that run in its own
process space and for any instances created by the users, a
proxy is created within the users process space. Proxy is
responsible for interacting with the server to carry out
operation on behalf of the client. (.exe extension).
Read Moreserver is loaded into the caller process space. In-Proc
server can be easily identified by .dll extension.
Out-of-Proc server is a COM component that run in its own
process space and for any instances created by the users, a
proxy is created within the users process space. Proxy is
responsible for interacting with the server to carry out
operation on behalf of the client. (.exe extension).