Click here to Skip to main content
15,890,897 members

Lim Bio Liong - Professional Profile



Summary

    Blog RSS
64,911
Author
1,663
Authority
588
Debator
112
Organiser
1,019
Participant
0
Editor
0
Enquirer
Lim Bio Liong is a Specialist at a leading Software House in Singapore.

Bio has been in software development for over 10 years. He specialises in C/C++ programming and Windows software development.

Bio has also done device-driver development and enjoys low-level programming. Bio has recently picked up C# programming and has been researching in this area.

Reputation

Weekly Data. Recent events may not appear immediately. For information on Reputation please see the FAQ.

Privileges

Members need to achieve at least one of the given member levels in the given reputation categories in order to perform a given action. For example, to store personal files in your account area you will need to achieve Platinum level in either the Author or Authority category. The "If Owner" column means that owners of an item automatically have the privilege. The member types column lists member types who gain the privilege regardless of their reputation level.

ActionAuthorAuthorityDebatorEditorEnquirerOrganiserParticipantIf OwnerMember Types
Have no restrictions on voting frequencysilversilversilversilver
Bypass spam checks when posting contentsilversilversilversilversilversilvergoldSubEditor, Mentor, Protector, Editor
Store personal files in your account areaplatinumplatinumSubEditor, Editor
Have live hyperlinks in your profilebronzebronzebronzebronzebronzebronzesilverSubEditor, Protector, Editor
Have the ability to include a biography in your profilebronzebronzebronzebronzebronzebronzesilverSubEditor, Protector, Editor
Edit a Question in Q&AsilversilversilversilverYesSubEditor, Protector, Editor
Edit an Answer in Q&AsilversilversilversilverYesSubEditor, Protector, Editor
Delete a Question in Q&AYesSubEditor, Protector, Editor
Delete an Answer in Q&AYesSubEditor, Protector, Editor
Report an ArticlesilversilversilversilverSubEditor, Mentor, Protector, Editor
Approve/Disapprove a pending ArticlegoldgoldgoldgoldSubEditor, Mentor, Protector, Editor
Edit other members' articlesSubEditor, Protector, Editor
Create an article without requiring moderationplatinumSubEditor, Mentor, Protector, Editor
Approve/Disapprove a pending QuestionProtector
Approve/Disapprove a pending AnswerProtector
Report a forum messagesilversilverbronzeProtector, Editor
Approve/Disapprove a pending Forum MessageProtector
Have the ability to send direct emails to members in the forumsProtector
Create a new tagsilversilversilversilver
Modify a tagsilversilversilversilver

Actions with a green tick can be performed by this member.


 
GeneralQuestion about IRpcChannelBuffer From MSDN COM Newsgroup Pin
Lim Bio Liong10-Nov-05 17:35
Lim Bio Liong10-Nov-05 17:35 
GeneralRe: Question about IRpcChannelBuffer From MSDN COM Newsgroup Pin
Lim Bio Liong10-Nov-05 17:35
Lim Bio Liong10-Nov-05 17:35 
GeneralAbout Reference Counting Pin
Lim Bio Liong10-Nov-05 17:21
Lim Bio Liong10-Nov-05 17:21 
GeneralRe: About Reference Counting Pin
Lim Bio Liong10-Nov-05 17:22
Lim Bio Liong10-Nov-05 17:22 
GeneralHow to: Determine If a File Is an Assembly (C# Programming Guide) Pin
Lim Bio Liong27-Oct-05 4:44
Lim Bio Liong27-Oct-05 4:44 
GeneralATL Attributes (a.k.a. Embedded IDL). Pin
Lim Bio Liong21-Oct-05 22:19
Lim Bio Liong21-Oct-05 22:19 
GeneralBasic COM/.NET Interop Techniques Pin
Lim Bio Liong12-Oct-05 1:54
Lim Bio Liong12-Oct-05 1:54 
GeneralRe: Basic COM/.NET Interop Techniques Pin
Lim Bio Liong12-Oct-05 14:03
Lim Bio Liong12-Oct-05 14:03 
A Short Refresher on IDL
The common practice in COM development is to start the definition of an interface using IDL (interface definition language). On this note, it is important to grasp the intended purpose of IDL and understand how it realizes OO principles. An IDL file is not just "another one of Microsoft's proprietary file types". It deserves deeper understanding.

Although I have stated that I wil assume the reader has prior knowledge of IDL, I will go on just a little anyway to explain here some of the more important concepts behind the IDL and the coclass (an IDL keyword) in particular :

A coclass is COM's (language independent) way of defining a class (class in the object-oriented sense).

An IDL file is what COM provides that allows developers to define such language independent object-oriented classes.

An IDL file is compiled by the MIDL compiler into a Type Library (.TLB file) which is a binary form of an IDL file meant to be processed by various language compilers (e.g. VB, VC++, Delphi, etc).

The end result of such .TLB processing is that the specific language compiler produces the language-specific constructs (VB classes for VB, C++ classes, various structs, macros and typedefs for VC++) that REPRESENT the coclass defined in the .TLB (and ultimately that which was defined in the originating .IDL).

When you look at an example coclass definition in an IDL :

coclass MyObject
{
[default] interface IMyObject;
[default, source] dispinterface _IMyObjectEvents;
};

it is declaring a COM class named MyObject which must implement an interface named IMyObject and which supports (not implement) the event interface _IMyObjectEvents.

This is conceptually equivalent to defining a C++ class like this :

class CSomeObject : public ISomeInterface
{
...
...
...
};

where ISomeInterface is a C++ virtual class.

It is up to the individual language compiler to produce whatever code (in the specific compiler's language) is necessary for its user to implement and ultimately produce a binary which can be deemed by COM to be of coclass MyObject.

Now, in languages like C++, we can use CoCreateInstance() in which we can specify the CLSID of the coclass and select the interface from that coclass that we want to use to interact with that coclass. Calling CoCreateInstance() like this :

CoCreateInstance
(
CLSID_MyObject,
NULL,
CLSCTX_INPROC_SERVER,
IID_IMyObject,
(void**)&m_pIMyObject
);

is conceptually equivalent to the following C++ code :

ISomeInterface* pISomeInterface = NULL;

pISomeInterface = new CSomeObject();

In the first case, we are saying to the COM sub-system that we want to obtain a pointer to an object that implements the IMyObject interface and we want coclass CLSID_MyObject's particular implementation of this interface.

In the second case, we are saying that we want to create an instance of a C++ class that implements the interface ISomeInterface and we are using CSomeObject as that C++ class.

Do you see the equivalence ? A coclass, then, is an object-oriented class in the COM world. The main feature of the coclass is that it is (1) binary in nature and consequently (2) programming language-independent.

-- modified at 19:18 Sunday 16th October, 2005
GeneralRe: Basic COM/.NET Interop Techniques Pin
Lim Bio Liong18-Oct-05 5:50
Lim Bio Liong18-Oct-05 5:50 
GeneralRe: Basic COM/.NET Interop Techniques Pin
Lim Bio Liong18-Oct-05 7:01
Lim Bio Liong18-Oct-05 7:01 
GeneralSome Interesting Information About Struct Alignment Pin
Lim Bio Liong28-Sep-05 2:50
Lim Bio Liong28-Sep-05 2:50 
GeneralIDispatch Property Setting Pin
Lim Bio Liong9-Aug-05 2:56
Lim Bio Liong9-Aug-05 2:56 
GeneralRe: IDispatch Property Setting Pin
Lim Bio Liong9-Aug-05 3:01
Lim Bio Liong9-Aug-05 3:01 
Generalhow to make MIDL not mangle enum names Pin
Lim Bio Liong8-Aug-05 3:48
Lim Bio Liong8-Aug-05 3:48 
GeneralInterface Shims Pin
Lim Bio Liong17-Jul-05 20:50
Lim Bio Liong17-Jul-05 20:50 
GeneralRe: Interface Shims Pin
Lim Bio Liong17-Jul-05 20:54
Lim Bio Liong17-Jul-05 20:54 
GeneralRe: Interface Shims Pin
Lim Bio Liong17-Jul-05 20:55
Lim Bio Liong17-Jul-05 20:55 
GeneralRe: Interface Shims Pin
Lim Bio Liong17-Jul-05 20:56
Lim Bio Liong17-Jul-05 20:56 
GeneralTake Note when adding a new ATL ActiveX Property Into the Property Map Pin
Lim Bio Liong15-Jul-05 20:28
Lim Bio Liong15-Jul-05 20:28 
GeneralUsing CComVariant and VarCmp Pin
Lim Bio Liong16-Apr-05 0:16
Lim Bio Liong16-Apr-05 0:16 
GeneralProperly Transferring Memory Objects In Method Calls. Pin
Lim Bio Liong7-Mar-05 2:00
Lim Bio Liong7-Mar-05 2:00 
GeneralInstantiating Member Data Which Are References Pin
Lim Bio Liong22-Feb-05 16:52
Lim Bio Liong22-Feb-05 16:52 
GeneralRegistry Location of Services and Device Drivers Pin
Lim Bio Liong31-Jan-05 20:07
Lim Bio Liong31-Jan-05 20:07 
GeneralNew Year @ CodeProject Pin
Lim Bio Liong31-Dec-04 17:05
Lim Bio Liong31-Dec-04 17:05 
GeneralRe: New Year @ CodeProject Pin
ThatsAlok1-Jan-06 23:42
ThatsAlok1-Jan-06 23:42 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.