2013-10-19 12 views

risposta

8

Un CLSID è un GUID che identifica un oggetto COM. Per creare un'istanza di un oggetto COM registrato, è necessario conoscere il relativo CLSID.

In genere in Delphi chiamereste CoCreateInstance. Basta chiamare la funzione e passare un CLSID. La dichiarazione di CoCreateInstance dichiara il parametro ID classe come avente tipo TCLSID che è un semplice alias di TGUID. Quindi passa uno di quelli.

Queste le dichiarazioni, come sollevato dalla sorgente Delphi:

type 
    TCLSID = TGUID; 

function CoCreateInstance(const clsid: TCLSID; unkOuter: IUnknown; 
    dwClsContext: Longint; const iid: TIID; out pv): HResult; stdcall; 

Un esempio di una chiamata a CoCreateInstance, preso dalla mia base di codice:

const 
    CLSID_WICImagingFactory: TGUID = '{CACAF262-9370-4615-A13B-9F5539DA4C0A}'; 

if not Succeeded(CoCreateInstance(CLSID_WICImagingFactory, ...)) then 
    ... 

È probabile che la creazione di un interfaccia diversa, e quindi sarà necessario sostituire il CLSID appropriato per tale interfaccia.

C'è un altro piccolo trucco che vale la pena conoscere. Se si passa un tipo di interfaccia come parametro di tipo TGUID e tale tipo di interfaccia ha un GUID, il compilatore sostituirà il GUID per l'utente. Così il codice di cui sopra potrebbe altrettanto bene essere scritta:

type 
    IWICImagingFactory = interface 
    // this is the GUID of the interface, the CLSID 
    [{ec5ec8a9-c395-4314-9c77-54d7a935ff70}] 
    .... 
    end; 

.... 

if not Succeeded(CoCreateInstance(IWICImagingFactory, ...)) then 
    ... 
+0

Grazie, questo quello che volevo sapere, che CLSID è un GUID. –

+0

Si potrebbe averlo discernuto guardando la fonte. La tua edizione Delphi viene con la fonte? –

+0

Sì, la dose, ma non riuscivo a trovare CLSID o TCLSID. –

6

Cos'è un CLSID? Un ID classe (CLSID) è un numero di 128 bit (grande) che rappresenta un ID univoco per un'applicazione software o un'applicazione componente . In genere sono visualizzati in questo modo "{AE7AB96B-FF5E-4dce-801E-14DF2C4CD681}".

Si può pensare a un CLSID come "numero di previdenza sociale" per un pezzo del software o un componente software.

Per cosa vengono utilizzati? I CLSID vengono utilizzati da Windows per identificare i componenti software senza dover conoscere il loro "nome". Possono inoltre utilizzare dalle applicazioni software per identificare un computer, un file o altro elemento .

Da dove vengono? Microsoft fornisce un'utilità (programma) denominata GUIDGEN.EXE che genera questi numeri. Vengono generati da utilizzando l'ora corrente, l'indirizzo della scheda di rete (se presente) e altri articoli nel computer in modo che non ci siano mai due numeri uguali.[1]

e

classi COM sono nominati dal CLSID, che sono UUID come definiti da OSF/DCE RPC [2]

Due citazioni sono citati

+0

quindi CLSID è uguale a GUID? –

+2

Sì, entrambi cercano di creare un ID univoco (pseudo). CLSID indirizza gli oggetti della classe COM. – deepmax

+0

Grazie, anche questo mi ha aiutato. –

Problemi correlati