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

  • Confused by all the agile advice? Relax! With the Agile for Dummies eBook by your side you'll learn the fundamentals of agile and how to increase the productivity of your software teams while enabling them to produce higher-quality solutions that better fulfill customer needs much faster.

  • The latest release of SugarCRM's flagship product gives users new tools to build extraordinary customer relationships. Read an in-depth analysis of SugarCRM's enhanced ability to help companies execute their customer-facing initiatives from Ovum, a leading technology research firm.

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds