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

  • Protecting business operations means shifting the priorities around availability from disaster recovery to business continuity. Enterprises are shifting their focus from recovery from a disaster to preventing the disaster in the first place. With this change in mindset, disaster recovery is no longer the first line of defense; the organizations with a smarter business continuity practice are less impacted when disasters strike. This SmartSelect will provide insight to help guide your enterprise toward better …

  • Hybrid cloud platforms need to think in terms of sweet spots when it comes to application platform interface (API) integration. Cloud Velocity has taken a unique approach to tight integration with the API sweet spot; enough to support the agility of physical and virtual apps, including multi-tier environments and databases, while reducing capital and operating costs. Read this case study to learn how a global-level Fortune 1000 company was able to deploy an entire 6+ TB Oracle eCommerce stack in Amazon Web …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds