.


:




:

































 

 

 

 


Unknown COM




 

lUnknown . :

q Querylnterface() ( );

q AddRef() Release() .

. ( ) . 13.17, . Querylnterface (IID). , NULL.

 

. 13.17. Querylnterface: 1

,

Querylnterface (IID_B); 2 ;

3

 

Querylnterface. - :

q ;

q , .

. - - -, Querylnterface .

, -. - , -. , Microsoft ( ) - . ? , . () -.

- :

q +1;

q AddRef +1;

q Release -1;

q =0 .

, -:

q - AddRef;

q Release.

-

 

- . , -. -. . 13.18, :

q (in-process) , , , ;

q (out-process) , , ;

q DLL , .

, , - , , . , , .

. 13.18. -

COM

 

.

1. , .

2. .

3. , - .

4. .

 

-

 

- , , , . .

-

 

- . :

q , ;

q -.

. . , CoCreateInstance.

- CoCreateInstance. CLSID IID , . CLSID ( SCM Service Control Manager). (Registry), CLSID . -.

, . -, , . . 13.19.

, - , . - IPersistFile, IPersistStorage IPersistStream.

. 13.19. -: 1 CoCreatelnstance

(CLSID M, IID ); 2 ;

3 ;

4 -

 

CoCreateInstance, , , (, ).

- . (class factory) -, .

IClassfactory, . Createlnstance - , , . LockServer .

COM CoGetClassObject:

CoGetClassObject (<CLSID >, < IID IClassFactory>)

.

IClassFactory . . 13.20.

. 13.20. - : 1

IClassFactory:: Createlnstance (IID A); 2 -

; 3

-; 4 -

 

IClassFactory::CreateInstance , (IID). - . -.

- , , CLSID. - . CLSID. CoTreatAsClass:

CoTreatAsClass (< CLSID>, < CLSID>).





:


: 2018-10-18; !; : 178 |


:

:

, .
==> ...

1520 - | 1344 -


© 2015-2024 lektsii.org - -

: 0.012 .