From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46610) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UrqTo-0007Qq-AR for qemu-devel@nongnu.org; Wed, 26 Jun 2013 10:13:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UrqTh-0007RX-OJ for qemu-devel@nongnu.org; Wed, 26 Jun 2013 10:13:52 -0400 Received: from usindpps05.hds.com ([207.126.252.18]:38159) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UrqTh-0007RP-Fk for qemu-devel@nongnu.org; Wed, 26 Jun 2013 10:13:45 -0400 From: Tomoki Sekiyama Date: Wed, 26 Jun 2013 14:13:22 +0000 Message-ID: In-Reply-To: <51CA834C.6080604@redhat.com> Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-ID: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH v4 06/10] qemu-ga: Add Windows VSS provider to quiesce applications on fsfreeze List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: "libaiqing@huawei.com" , "qemu-devel@nongnu.org" , "stefanha@gmail.com" , "mdroth@linux.vnet.ibm.com" , "lcapitulino@redhat.com" , "vrozenfe@redhat.com" , Seiji Aguchi , "areis@redhat.com" On 6/26/13 1:59 , "Paolo Bonzini" wrote: >Il 26/06/2013 00:31, Tomoki Sekiyama ha scritto: >> From: Paolo Bonzini [paolo.bonzini@gmail.com] on behalf of Paolo >>Bonzini [pbonzini@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? >>=20 >> COMRegister and COMUnregister are called by`qemu-ga -s install`, >> to register/unregister the DLL into/from COM+ application catalogue. >>=20 >> DllRegisterServer is automatically called inside >> pCatalog->InstallComponent() (like regsvr32 does), and register >> this DLL as a VSS provider. DllUnregisterServer will do the oposite. >>=20 >> 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