CoCreateInstance laesst Programm abstürzen



  • Hallo,

    in meine Programm verschaffe ich mir mit Hilfe von OleInitialize(NULL) zugriff auf die COM Objekte.
    Ich erhalte S_OK als Rückgabewert.

    Versuche ich danach jetzt mit CoCreateInstance() ein Object zu erzeugen beendet sich mein Programm.

    [cpp]
    bool Signaturpad::getInterface()
    {   
        //CF449225-A5C6-4E11-A5DE-9C1A3B146AF1
        CLSID   CLSID_IPadTopaz = {0xCF449225, 0xA5C6, 0x4E11, 0xA5, 0xDE, 0x9C, 0x1A, 0x3B, 0x14, 0x6A, 0xF1};
        //26CBB48B-3BA4-4C64-AF8A-38432A35AFFB
        IID     IID_Pad         = {0x26CBB48B, 0x3BA4, 0x4C64, 0xAF, 0x8A, 0x38, 0x43, 0x2A, 0x35, 0xAF, 0xFB};
    
        HRESULT   result;
    
        result = OleInitialize(NULL);
    
        switch(result) {
            case E_INVALIDARG:
                cout << "E_INVALIDARG" << endl;
                break;
    
            case E_OUTOFMEMORY:
                cout << "E_OUTOFMEMORY" << endl;
                break;
    
            case E_UNEXPECTED:
                cout << "E_UNEXPECTED" << endl;
                break;
    
            case S_OK :
                cout << "S_OK " << endl;
                break;
    
            case S_FALSE  :
                cout << "S_FALSE  " << endl;
                break;
    
            case OLE_E_WRONGCOMPOBJ   :
                cout << "OLE_E_WRONGCOMPOBJ   " << endl;
                break;
    
            case RPC_E_CHANGED_MODE   :
                cout << "RPC_E_CHANGED_MODE   " << endl;
                break;
        }
        system("PAUSE");
    
        result = CoCreateInstance(CLSID_IPadTopaz,
    					NULL,
    					CLSCTX_INPROC_SERVER,
    					IID_Pad,
    					(void **)this->pad);
    
        switch(result) {
            case REGDB_E_CLASSNOTREG:
                cout << "REGDB_E_CLASSNOTREG" << endl;
                break;
    
            case E_OUTOFMEMORY:
                cout << "CLASS_E_NOAGGREGATION " << endl;
                break;
    
            case E_NOINTERFACE :
                cout << "E_NOINTERFACE " << endl;
                break;
    
            case S_OK :
                cout << "S_OK " << endl;
                break;
        }
    
        return true;
    }
    [/cpp]
    

    habe ich etwas falsch verstanden oder nicht beachtet?

    mfg dave.



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • da hat sich doch wieder mal das verfluchte weggelassene & eingeschlichen 😉

    Es läuft jetzt - der Thread kann also geschlossen werden.


Anmelden zum Antworten