select face of the component in the assembly VC++(COM) programatically

Can any body help me , how to select the face of the of the component in the assembly.now from assembly i am getting component.from component body. then get first face. then seusequent face.so i have face pointer.If i can convert face to entity, then i can use the following method.Entity::Select4

status = Entity->Select4 (Append, Data, &retval  ).

From the face i am using the query interface to get the entity.But it is returning NULL.the code is here

status=FaceObj->QueryInterface(__uuidof(IEntity), reinterpret_cast(&swThisEntityObj)).

i have also tried with another code.

status = FaceObj->QueryInterface(IID_IEntity,  (void**)&swThisEntityObj);

I am new to this.

if any body knows any other method please tell me.

in VB .they are just assigning the entity with the face and using the select4 method.

entity=face2

In the solidworks API  another method I saw

ModelDocExtension::SelectByID2ModelDocExtension::SelectByID2

status = ModelDocExtension->SelectByID2 ( Name, Type,  X, Y, Z, Append, Mark, Callout, SelectOption, retval )

there it is written  in the remarks that

"If your application already has an object handle (for  example, Face2), use the appropriate Select method to select the item directly  using its handle."

can any body suggest  me what method i will use for the face  to select

SolidworksApi macros