On 6/26/13 1:59 , "Paolo Bonzini" <pbonz...@redhat.com> wrote:

>Il 26/06/2013 00:31, Tomoki Sekiyama ha scritto:
>> From: Paolo Bonzini [paolo.bonz...@gmail.com] on behalf of Paolo
>>Bonzini [pbonz...@redhat.com]
>>> Il 06/06/2013 17:06, Tomoki Sekiyama ha scritto:
>>>> +STDAPI VSSCheckOSVersion(void);
>>>> +
>>>> +STDAPI COMRegister(void);
>>>> +STDAPI COMUnregister(void);
>>>> +
>>>> +STDAPI DllRegisterServer(void);
>>>> +STDAPI DllUnregisterServer(void);
>>>
>>> Can you explain the difference between COMRegister/COMUnregister and
>>> DllRegisterServer/DllUnregisterServer (and why the COM+ part need not
>>>be
>>> done by regsvr32)?  Also, why does COMUnregister call
>>> DllUnregisterServer but COMRegister does not call DllRegisterServer?
>> 
>> COMRegister and COMUnregister are called by`qemu-ga -s install`,
>> to register/unregister the DLL into/from COM+ application catalogue.
>> 
>> DllRegisterServer is automatically called inside
>> pCatalog->InstallComponent() (like regsvr32 does), and register
>> this DLL as a VSS provider. DllUnregisterServer will do the oposite.
>> 
>> ICOMAdminCatalog (pCatalog) does not provide a method to uninstall
>> component, so COMUnregister calls DllUnregisterServer by itself.
>
>Understood, thanks.  Just one question remains: why is the COM+ part not
>needed when you invoke regsvr32?

A VSS Provider is implemented as a COM+ application.

To register COM+ applications, regsvr32 is not enough.
It only register COM component, which is a part of COM+ application.
We need to use a specialized installer (COMRegister() in this series)
to the whole COM+ application to the catalogue.

Thanks,
Tomoki Sekiyama


Reply via email to