SkDCOMbridge : COM/DCOM Handler Object

The code here is also a great example of how to use Windows API for handling COM/DCOM objects.

Method Descriptions and Definitions

  • Main function : getInterfacePointer

    Prototype

    int getInterfacePointer(IUnknown **ppInterface,
                            void *comObjectInfo,
                            void *interfaceObjectInfo,
                            int flags = SKDCOM_COMINFO_NAME 
                                      | SKDCOM_INTERFACEINFO_NAME,
                            void *computerName = NULL,
                            COAUTHINFO *pAuthInfo = NULL);
    

    Parameters

    ppInterface [out] Pointer for interface pointer in which the method should enter the desired interface's pointer.
    comObjectInfo [in] COM object's description. can be name [OLE string !] or CLSID.
    interfaceObjectInfo [in] Interface's description. can be name [OLE string] or IID.
    flags [in] flags which describes 'comObjectInfo' and 'interfaceObjectInfo'

    use SKDCOM_COMINFO_NAME - when 'comObjectInfo' is object's a name (such as 'MyCOM.Engine')

    SKDCOM_COMINFO_CLASID - when 'comObjectInfo' is object's an CLSID.

    SKDCOM_INTERFACEINFO_NAME - when 'interfaceObjectInfo' is a name (such as 'MyCOM.Engine.iXYZ')

    SKDCOM_INTERFACEINFO_REFIID - when 'interfaceObjectInfo' is an IID

    each flag value should be a logical or of 'comObjectInfo' and 'interfaceObjectInfo' descriptions.

    default value is name for both.
    computerName [in] points to a computer name. DCOM ONLY. if NULL object uses COM.
    pAuthInfo [in] points to a 'COAUTHINFO' object. DCOM ONLY. if NULL object uses default security parameters.

    Remarks

  • GetCLSID Function

    Prototype

    void getCLSID(CLSID *clsid) const;
    

    Parameters

    clsid [out] Pointer to a CLSID instance which will recieve object's CLSID value.

    Remarks

    Retrieves object's CLSID (even if main method was called with name for object's description)

    Return Value

    • SKDCOM_ERROR_CLSID_NAME_NOT_FOUND - object's name was not found.
    • SKDCOM_ERROR_CLSID_NOT_FOUND - object's ID was not found.
    • SKDCOM_ERROR_IID_NOT_FOUND - interface's ID was not found.
    • SKDCOM_ERROR_IID_NAME_NOT_FOUND - interface's name was not found.
    • SKDCOM_ERROR_FAIL - function failed.
    • SKDCOM_SUCCESS - success. output parameter is valid.

  • getIID Function

    Prototype

    void getIID(IID *iid) const;
    

    Parameters

    iid [out] Pointer to an IID instance which recieve interface's IID value.

    Remarks

    Retrieves interface's IID (even if main method was called with name for interface description)

  • getLastRetrivedInterface Function

    Prototype

    void getLastRetrivedInterface(IUnknown **ppInterface) const;
    

    Parameters

    ppInterface [out] Points to an interface pointer

    Remarks

    Enters last retrived pointer to 'ppInterface'.

  • getLastSystemError

    Prototype

    HRESULT getLastSystemError() const;
    

    Parameters

    No parameters

    Return Value

    Returns system last error (Window's API error code).

Downloads

Download source - 6 Kb

History



Comments

  • Obtain CLSID from IUnknown

    Posted by Legacy on 04/26/2002 12:00am

    Originally posted by: Navin Pai

    I have got the IUnknown pointer now is there any way from where I can get the CLSID of the component. Note there exists a proxy for that component and I dont want the CLSID of the proxy.

    Reply
  • Please, Help me about dcom98.exe

    Posted by Legacy on 11/08/2001 12:00am

    Originally posted by: hwa min son

    I have some questions.
    Please, Help me.

    Question 1)
    How can I excute Dcom98.exe in the cab file that includes my program?
    My computer's OS is Window98.

    Question 2)
    When I tried to Setup my activex controls, I got error message.
    then I must setup dcom98.exe.
    I wish to include dcom98 in my program.
    but I don't know to way.

    How can my setup program include dcom98.exe or have some special dll list?

    Please~~~~~~~~~~~~~~~~~~~~~~~


    Reply
  • Please give an example...

    Posted by Legacy on 09/27/2001 12:00am

    Originally posted by: Zissopoulos John

    Please give an example...Use a standard COM object of Windows

    Reply
  • SkDCOMbridge : COM/DCOM Handler Object

    Posted by Legacy on 07/08/2001 12:00am

    Originally posted by: mark

    what's up with the (2) CoInitialize(NULL); in your constructor???

    SkDCOMbridge::SkDCOMbridge()
    {
    CoInitialize(NULL);

    memset(_comName,0,128);
    memset(_interfaceName,0,128);
    memset(_computerName,0,128);
    memset(&_serverInfo,0,sizeof(COSERVERINFO));
    _ipCf = NULL;
    _pInterface = NULL;
    _lastSystemError = 0;
    _serverInfo.pwszName = NULL;
    CoInitialize(NULL);
    initAuthInfo();
    }

    end.

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: December 11, 2014 @ 1:00 p.m. ET / 10:00 a.m. PT Market pressures to move more quickly and develop innovative applications are forcing organizations to rethink how they develop and release applications. The combination of public clouds and physical back-end infrastructures are a means to get applications out faster. However, these hybrid solutions complicate DevOps adoption, with application delivery pipelines that span across complex hybrid cloud and non-cloud environments. Check out this …

  • VMware vCloud® Government Service provided by Carpathia® is an enterprise-class hybrid cloud service that delivers the tried and tested VMware capabilities widely used by government organizations today, with the added security and compliance assurance of FedRAMP authorization. The hybrid cloud is becoming more and more prevalent – in fact, nearly three-fourths of large enterprises expect to have hybrid deployments by 2015, according to a recent Gartner analyst report. Learn about the benefits of …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds