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