COM IUnknown e ho bisogno di un puntatore ad esso prima prima di chiamare CoGetClassObject?
Domanda
In COM, quando si desidera creare un'istanza di un oggetto COM server, fare è necessario prima di ottenere un puntatore ad esso è IUnknown e solo allora creare un oggetto di classe utilizzando CoGetClassObject?
Per quanto mi risulta, IUnknown viene utilizzato per gestire vite degli oggetti, in modo dalla mia comprensione, qualsiasi oggetto il cliente vuole creare, ha bisogno di un puntatore ad esso di implementazione IUnknown prima.
suono corretto? In caso contrario, qualcuno può dirmi come funziona?
Soluzione
IUnknown
gestisce la durata della vita di un esistente oggetto COM. Prima che l'oggetto viene creato, non v'è alcun puntatore IUnknown
di cui parlare.
CoGetClassObject
viene utilizzato per ottenere l'interfaccia IUnknown
per un oggetto che si prevede di creare gli oggetti di interesse. Vale a dire, si tratta di un oggetto fabbrica , un solito implementa IClassFactory
, che dichiara il metodo CreateInstance
che si utilizza per creare oggetti.
Invece di usare le fabbriche di classe in modo esplicito, è spesso più semplice basta chiamare CoCreateInstance
.