diff options
-rw-r--r-- | src/VBox/Main/include/KeyboardImpl.h | 3 | ||||
-rw-r--r-- | src/VBox/Main/src-client/AudioSnifferInterface.cpp | 4 | ||||
-rw-r--r-- | src/VBox/Main/src-client/ConsoleImpl.cpp | 4 | ||||
-rw-r--r-- | src/VBox/Main/src-client/DisplayImpl.cpp | 8 | ||||
-rw-r--r-- | src/VBox/Main/src-client/KeyboardImpl.cpp | 51 | ||||
-rw-r--r-- | src/VBox/Main/src-client/MouseImpl.cpp | 4 | ||||
-rw-r--r-- | src/VBox/Main/src-client/Nvram.cpp | 2 | ||||
-rw-r--r-- | src/VBox/Main/src-client/PCIRawDevImpl.cpp | 32 | ||||
-rw-r--r-- | src/VBox/Main/src-client/UsbCardReader.cpp | 51 | ||||
-rw-r--r-- | src/VBox/Main/src-client/UsbWebcamInterface.cpp | 30 | ||||
-rw-r--r-- | src/VBox/Main/src-client/VMMDevInterface.cpp | 35 |
11 files changed, 111 insertions, 113 deletions
diff --git a/src/VBox/Main/include/KeyboardImpl.h b/src/VBox/Main/include/KeyboardImpl.h index f3671340b09..fe6d2b9f33b 100644 --- a/src/VBox/Main/include/KeyboardImpl.h +++ b/src/VBox/Main/include/KeyboardImpl.h @@ -85,8 +85,9 @@ public: private: - static DECLCALLBACK(void *) drvQueryInterface(PPDMIBASE pInterface, const char *pszIID); + static DECLCALLBACK(void) keyboardLedStatusChange(PPDMIKEYBOARDCONNECTOR pInterface, PDMKEYBLEDS enmLeds); static DECLCALLBACK(void) keyboardSetActive(PPDMIKEYBOARDCONNECTOR pInterface, bool fActive); + static DECLCALLBACK(void *) drvQueryInterface(PPDMIBASE pInterface, const char *pszIID); static DECLCALLBACK(int) drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags); static DECLCALLBACK(void) drvDestruct(PPDMDRVINS pDrvIns); diff --git a/src/VBox/Main/src-client/AudioSnifferInterface.cpp b/src/VBox/Main/src-client/AudioSnifferInterface.cpp index 8684b84651f..38a34f4cf84 100644 --- a/src/VBox/Main/src-client/AudioSnifferInterface.cpp +++ b/src/VBox/Main/src-client/AudioSnifferInterface.cpp @@ -160,9 +160,9 @@ DECLCALLBACK(void *) AudioSniffer::drvQueryInterface(PPDMIBASE pInterface, const */ DECLCALLBACK(void) AudioSniffer::drvDestruct(PPDMDRVINS pDrvIns) { + PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns); PDRVAUDIOSNIFFER pThis = PDMINS_2_DATA(pDrvIns, PDRVAUDIOSNIFFER); LogFlow(("AudioSniffer::drvDestruct: iInstance=%d\n", pDrvIns->iInstance)); - PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns); if (pThis->pAudioSniffer) { @@ -178,10 +178,10 @@ DECLCALLBACK(void) AudioSniffer::drvDestruct(PPDMDRVINS pDrvIns) */ DECLCALLBACK(int) AudioSniffer::drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags) { + PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns); PDRVAUDIOSNIFFER pThis = PDMINS_2_DATA(pDrvIns, PDRVAUDIOSNIFFER); LogFlow(("AudioSniffer::drvConstruct: iInstance=%d\n", pDrvIns->iInstance)); - PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns); /* * Validate configuration. diff --git a/src/VBox/Main/src-client/ConsoleImpl.cpp b/src/VBox/Main/src-client/ConsoleImpl.cpp index 37207b37889..c0b670f1841 100644 --- a/src/VBox/Main/src-client/ConsoleImpl.cpp +++ b/src/VBox/Main/src-client/ConsoleImpl.cpp @@ -9901,9 +9901,9 @@ DECLCALLBACK(void *) Console::drvStatus_QueryInterface(PPDMIBASE pInterface, co */ DECLCALLBACK(void) Console::drvStatus_Destruct(PPDMDRVINS pDrvIns) { + PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns); PDRVMAINSTATUS pData = PDMINS_2_DATA(pDrvIns, PDRVMAINSTATUS); LogFlowFunc(("iInstance=%d\n", pDrvIns->iInstance)); - PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns); if (pData->papLeds) { @@ -9921,9 +9921,9 @@ DECLCALLBACK(void) Console::drvStatus_Destruct(PPDMDRVINS pDrvIns) */ DECLCALLBACK(int) Console::drvStatus_Construct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags) { + PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns); PDRVMAINSTATUS pData = PDMINS_2_DATA(pDrvIns, PDRVMAINSTATUS); LogFlowFunc(("iInstance=%d\n", pDrvIns->iInstance)); - PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns); /* * Validate configuration. diff --git a/src/VBox/Main/src-client/DisplayImpl.cpp b/src/VBox/Main/src-client/DisplayImpl.cpp index 87c0a77aaac..b223f7cb7f9 100644 --- a/src/VBox/Main/src-client/DisplayImpl.cpp +++ b/src/VBox/Main/src-client/DisplayImpl.cpp @@ -4264,9 +4264,9 @@ DECLCALLBACK(void *) Display::drvQueryInterface(PPDMIBASE pInterface, const cha */ DECLCALLBACK(void) Display::drvDestruct(PPDMDRVINS pDrvIns) { - PDRVMAINDISPLAY pData = PDMINS_2_DATA(pDrvIns, PDRVMAINDISPLAY); - LogRelFlowFunc (("iInstance=%d\n", pDrvIns->iInstance)); PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns); + PDRVMAINDISPLAY pData = PDMINS_2_DATA(pDrvIns, PDRVMAINDISPLAY); + LogRelFlowFunc(("iInstance=%d\n", pDrvIns->iInstance)); if (pData->pDisplay) { @@ -4292,9 +4292,9 @@ DECLCALLBACK(void) Display::drvDestruct(PPDMDRVINS pDrvIns) */ DECLCALLBACK(int) Display::drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags) { - PDRVMAINDISPLAY pData = PDMINS_2_DATA(pDrvIns, PDRVMAINDISPLAY); - LogRelFlowFunc (("iInstance=%d\n", pDrvIns->iInstance)); PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns); + PDRVMAINDISPLAY pData = PDMINS_2_DATA(pDrvIns, PDRVMAINDISPLAY); + LogRelFlowFunc(("iInstance=%d\n", pDrvIns->iInstance)); /* * Validate configuration. diff --git a/src/VBox/Main/src-client/KeyboardImpl.cpp b/src/VBox/Main/src-client/KeyboardImpl.cpp index 87497f65b37..cfee2c9423c 100644 --- a/src/VBox/Main/src-client/KeyboardImpl.cpp +++ b/src/VBox/Main/src-client/KeyboardImpl.cpp @@ -271,6 +271,27 @@ STDMETHODIMP Keyboard::COMGETTER(EventSource)(IEventSource ** aEventSource) // private methods // +DECLCALLBACK(void) Keyboard::keyboardLedStatusChange(PPDMIKEYBOARDCONNECTOR pInterface, PDMKEYBLEDS enmLeds) +{ + PDRVMAINKEYBOARD pDrv = PPDMIKEYBOARDCONNECTOR_2_MAINKEYBOARD(pInterface); + pDrv->pKeyboard->getParent()->onKeyboardLedsChange(RT_BOOL(enmLeds & PDMKEYBLEDS_NUMLOCK), + RT_BOOL(enmLeds & PDMKEYBLEDS_CAPSLOCK), + RT_BOOL(enmLeds & PDMKEYBLEDS_SCROLLLOCK)); +} + +/** + * @interface_method_impl{PDMIKEYBOARDCONNECTOR,pfnSetActive} + */ +DECLCALLBACK(void) Keyboard::keyboardSetActive(PPDMIKEYBOARDCONNECTOR pInterface, bool fActive) +{ + PDRVMAINKEYBOARD pDrv = PPDMIKEYBOARDCONNECTOR_2_MAINKEYBOARD(pInterface); + if (fActive) + pDrv->u32DevCaps |= KEYBOARD_DEVCAP_ENABLED; + else + pDrv->u32DevCaps &= ~KEYBOARD_DEVCAP_ENABLED; +} + + /** * @interface_method_impl{PDMIBASE,pfnQueryInterface} */ @@ -293,9 +314,9 @@ DECLCALLBACK(void *) Keyboard::drvQueryInterface(PPDMIBASE pInterface, const cha */ DECLCALLBACK(void) Keyboard::drvDestruct(PPDMDRVINS pDrvIns) { + PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns); PDRVMAINKEYBOARD pData = PDMINS_2_DATA(pDrvIns, PDRVMAINKEYBOARD); LogFlow(("Keyboard::drvDestruct: iInstance=%d\n", pDrvIns->iInstance)); - PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns); if (pData->pKeyboard) { @@ -310,38 +331,16 @@ DECLCALLBACK(void) Keyboard::drvDestruct(PPDMDRVINS pDrvIns) } } -DECLCALLBACK(void) keyboardLedStatusChange(PPDMIKEYBOARDCONNECTOR pInterface, - PDMKEYBLEDS enmLeds) -{ - PDRVMAINKEYBOARD pDrv = PPDMIKEYBOARDCONNECTOR_2_MAINKEYBOARD(pInterface); - pDrv->pKeyboard->getParent()->onKeyboardLedsChange(!!(enmLeds & PDMKEYBLEDS_NUMLOCK), - !!(enmLeds & PDMKEYBLEDS_CAPSLOCK), - !!(enmLeds & PDMKEYBLEDS_SCROLLLOCK)); -} - -/** - * @interface_method_impl{PDMIKEYBOARDCONNECTOR,pfnSetActive} - */ -DECLCALLBACK(void) Keyboard::keyboardSetActive(PPDMIKEYBOARDCONNECTOR pInterface, bool fActive) -{ - PDRVMAINKEYBOARD pDrv = PPDMIKEYBOARDCONNECTOR_2_MAINKEYBOARD(pInterface); - if (fActive) - pDrv->u32DevCaps |= KEYBOARD_DEVCAP_ENABLED; - else - pDrv->u32DevCaps &= ~KEYBOARD_DEVCAP_ENABLED; -} - /** * Construct a keyboard driver instance. * * @copydoc FNPDMDRVCONSTRUCT */ -DECLCALLBACK(int) Keyboard::drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, - uint32_t fFlags) +DECLCALLBACK(int) Keyboard::drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags) { + PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns); PDRVMAINKEYBOARD pData = PDMINS_2_DATA(pDrvIns, PDRVMAINKEYBOARD); LogFlow(("Keyboard::drvConstruct: iInstance=%d\n", pDrvIns->iInstance)); - PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns); /* * Validate configuration. @@ -358,7 +357,7 @@ DECLCALLBACK(int) Keyboard::drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, pDrvIns->IBase.pfnQueryInterface = Keyboard::drvQueryInterface; pData->IConnector.pfnLedStatusChange = keyboardLedStatusChange; - pData->IConnector.pfnSetActive = keyboardSetActive; + pData->IConnector.pfnSetActive = Keyboard::keyboardSetActive; /* * Get the IKeyboardPort interface of the above driver/device. diff --git a/src/VBox/Main/src-client/MouseImpl.cpp b/src/VBox/Main/src-client/MouseImpl.cpp index 579900209c2..a07cda06f81 100644 --- a/src/VBox/Main/src-client/MouseImpl.cpp +++ b/src/VBox/Main/src-client/MouseImpl.cpp @@ -712,9 +712,9 @@ DECLCALLBACK(void *) Mouse::drvQueryInterface(PPDMIBASE pInterface, const char */ DECLCALLBACK(void) Mouse::drvDestruct(PPDMDRVINS pDrvIns) { + PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns); PDRVMAINMOUSE pData = PDMINS_2_DATA(pDrvIns, PDRVMAINMOUSE); LogFlow(("Mouse::drvDestruct: iInstance=%d\n", pDrvIns->iInstance)); - PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns); if (pData->pMouse) { @@ -736,9 +736,9 @@ DECLCALLBACK(void) Mouse::drvDestruct(PPDMDRVINS pDrvIns) */ DECLCALLBACK(int) Mouse::drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags) { + PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns); PDRVMAINMOUSE pData = PDMINS_2_DATA(pDrvIns, PDRVMAINMOUSE); LogFlow(("drvMainMouse_Construct: iInstance=%d\n", pDrvIns->iInstance)); - PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns); /* * Validate configuration. diff --git a/src/VBox/Main/src-client/Nvram.cpp b/src/VBox/Main/src-client/Nvram.cpp index 52c2ee59ca7..fd3e1325c69 100644 --- a/src/VBox/Main/src-client/Nvram.cpp +++ b/src/VBox/Main/src-client/Nvram.cpp @@ -329,6 +329,7 @@ DECLCALLBACK(void *) Nvram::drvNvram_QueryInterface(PPDMIBASE pInterface, const */ DECLCALLBACK(void) Nvram::drvNvram_Destruct(PPDMDRVINS pDrvIns) { + PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns); LogFlow(("%s: iInstance/#d\n", __FUNCTION__, pDrvIns->iInstance)); PNVRAM pThis = PDMINS_2_DATA(pDrvIns, PNVRAM); if (pThis->pNvram != NULL) @@ -341,6 +342,7 @@ DECLCALLBACK(void) Nvram::drvNvram_Destruct(PPDMDRVINS pDrvIns) */ DECLCALLBACK(int) Nvram::drvNvram_Construct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags) { + PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns); LogFlowFunc(("iInstance/#d, pCfg:%p, fFlags:%x\n", pDrvIns->iInstance, pCfg, fFlags)); PNVRAM pThis = PDMINS_2_DATA(pDrvIns, PNVRAM); diff --git a/src/VBox/Main/src-client/PCIRawDevImpl.cpp b/src/VBox/Main/src-client/PCIRawDevImpl.cpp index 995743535da..b5cdfe99518 100644 --- a/src/VBox/Main/src-client/PCIRawDevImpl.cpp +++ b/src/VBox/Main/src-client/PCIRawDevImpl.cpp @@ -14,6 +14,7 @@ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. */ + #include "Logging.h" #include "PCIRawDevImpl.h" #include "PCIDeviceAttachmentImpl.h" @@ -104,41 +105,33 @@ DECLCALLBACK(int) PCIRawDev::drvDeviceConstructComplete(PPDMIPCIRAWCONNECTOR pIn /** - * Destruct a PCI raw driver instance. - * - * @returns VBox status. - * @param pDrvIns The driver instance data. + * @interface_method_impl{PDMDRVREG,pfnReset} */ -DECLCALLBACK(void) PCIRawDev::drvDestruct(PPDMDRVINS pDrvIns) +DECLCALLBACK(void) PCIRawDev::drvReset(PPDMDRVINS pDrvIns) { - PDRVMAINPCIRAWDEV pData = PDMINS_2_DATA(pDrvIns, PDRVMAINPCIRAWDEV); - PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns); - - if (pData->pPCIRawDev) - pData->pPCIRawDev->mpDrv = NULL; } /** - * Reset notification. - * - * @returns VBox status. - * @param pDrvIns The driver instance data. + * @interface_method_impl{PDMDRVREG,pfnReset} */ -DECLCALLBACK(void) PCIRawDev::drvReset(PPDMDRVINS pDrvIns) +DECLCALLBACK(void) PCIRawDev::drvDestruct(PPDMDRVINS pDrvIns) { + PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns); + PDRVMAINPCIRAWDEV pData = PDMINS_2_DATA(pDrvIns, PDRVMAINPCIRAWDEV); + + if (pData->pPCIRawDev) + pData->pPCIRawDev->mpDrv = NULL; } /** - * Construct a raw PCI driver instance. - * - * @copydoc FNPDMDRVCONSTRUCT + * @interface_method_impl{PDMDRVREG,pfnConstruct} */ DECLCALLBACK(int) PCIRawDev::drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHandle, uint32_t fFlags) { - PDRVMAINPCIRAWDEV pData = PDMINS_2_DATA(pDrvIns, PDRVMAINPCIRAWDEV); PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns); + PDRVMAINPCIRAWDEV pData = PDMINS_2_DATA(pDrvIns, PDRVMAINPCIRAWDEV); /* * Validate configuration. @@ -227,3 +220,4 @@ const PDMDRVREG PCIRawDev::DrvReg = /* u32EndVersion */ PDM_DRVREG_VERSION }; + diff --git a/src/VBox/Main/src-client/UsbCardReader.cpp b/src/VBox/Main/src-client/UsbCardReader.cpp index fc4004c3de7..9fa73bc412d 100644 --- a/src/VBox/Main/src-client/UsbCardReader.cpp +++ b/src/VBox/Main/src-client/UsbCardReader.cpp @@ -1,5 +1,4 @@ /* $Id$ */ - /** @file * UsbCardReader - Driver Interface to USB Smart Card Reader emulation. */ @@ -1823,7 +1822,7 @@ int UsbCardReader::SetAttrib(struct USBCARDREADER *pDrv, /* - * PDM + * PDMDRVINS */ /* static */ DECLCALLBACK(void *) UsbCardReader::drvQueryInterface(PPDMIBASE pInterface, const char *pszIID) @@ -1837,11 +1836,38 @@ int UsbCardReader::SetAttrib(struct USBCARDREADER *pDrv, return NULL; } +/* static */ DECLCALLBACK(void) UsbCardReader::drvDestruct(PPDMDRVINS pDrvIns) +{ + PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns); + LogFlowFunc(("iInstance/%d\n",pDrvIns->iInstance)); + PUSBCARDREADER pThis = PDMINS_2_DATA(pDrvIns, PUSBCARDREADER); + + /** @todo The driver is destroyed before the device. + * So device calls ReleaseContext when there is no more driver. + * Notify the device here so it can do cleanup or + * do a cleanup now in the driver. + */ + if (pThis->hReqQCardReaderCmd != NIL_RTREQQUEUE) + { + int rc = RTReqQueueDestroy(pThis->hReqQCardReaderCmd); + AssertRC(rc); + pThis->hReqQCardReaderCmd = NIL_RTREQQUEUE; + } + + /** @todo r=bird: why doesn't this set pThis->pUsbCardReader->mpDrv to NULL like + * everyone else? */ + pThis->pUsbCardReader = NULL; + LogFlowFuncLeave(); +} + /* static */ DECLCALLBACK(int) UsbCardReader::drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags) { + PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns); LogFlowFunc(("iInstance/%d, pCfg:%p, fFlags:%x\n", pDrvIns->iInstance, pCfg, fFlags)); PUSBCARDREADER pThis = PDMINS_2_DATA(pDrvIns, PUSBCARDREADER); + pThis->hReqQCardReaderCmd = NIL_RTREQQUEUE; + if (!CFGMR3AreValuesValid(pCfg, "Object\0")) return VERR_PDM_DRVINS_UNKNOWN_CFG_VALUES; AssertMsgReturn(PDMDrvHlpNoAttach(pDrvIns) == VERR_PDM_NO_ATTACHED_DRIVER, @@ -1894,27 +1920,6 @@ int UsbCardReader::SetAttrib(struct USBCARDREADER *pDrv, return rc; } -/* static */ DECLCALLBACK(void) UsbCardReader::drvDestruct(PPDMDRVINS pDrvIns) -{ - LogFlowFunc(("iInstance/%d\n",pDrvIns->iInstance)); - PUSBCARDREADER pThis = PDMINS_2_DATA(pDrvIns, PUSBCARDREADER); - - /* @todo The driver is destroyed before the device. - * So device calls ReleaseContext when there is no more driver. - * Notify the device here so it can do cleanup or - * do a cleanup now in the driver. - */ - if (pThis->hReqQCardReaderCmd != NIL_RTREQQUEUE) - { - int rc = RTReqQueueDestroy(pThis->hReqQCardReaderCmd); - AssertRC(rc); - pThis->hReqQCardReaderCmd = NIL_RTREQQUEUE; - } - - pThis->pUsbCardReader = NULL; - LogFlowFuncLeave(); -} - /* static */ const PDMDRVREG UsbCardReader::DrvReg = { /* u32Version */ diff --git a/src/VBox/Main/src-client/UsbWebcamInterface.cpp b/src/VBox/Main/src-client/UsbWebcamInterface.cpp index 356e7bac011..d86d38f1f81 100644 --- a/src/VBox/Main/src-client/UsbWebcamInterface.cpp +++ b/src/VBox/Main/src-client/UsbWebcamInterface.cpp @@ -329,8 +329,24 @@ int EmWebcam::SendControl(EMWEBCAMDRV *pDrv, void *pvUser, uint64_t u64DeviceId, return NULL; } +/* static */ DECLCALLBACK(void) EmWebcam::drvDestruct(PPDMDRVINS pDrvIns) +{ + PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns); + PEMWEBCAMDRV pThis = PDMINS_2_DATA(pDrvIns, PEMWEBCAMDRV); + + LogFlowFunc(("iInstance %d, pEmWebcam %p, pIWebcamUp %p\n", + pDrvIns->iInstance, pThis->pEmWebcam, pThis->pIWebcamUp)); + + if (pThis->pEmWebcam) + { + pThis->pEmWebcam->EmWebcamDestruct(pThis); + pThis->pEmWebcam = NULL; + } +} + /* static */ DECLCALLBACK(int) EmWebcam::drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags) { + PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns); LogFlowFunc(("iInstance:%d, pCfg:%p, fFlags:%x\n", pDrvIns->iInstance, pCfg, fFlags)); PEMWEBCAMDRV pThis = PDMINS_2_DATA(pDrvIns, PEMWEBCAMDRV); @@ -368,20 +384,6 @@ int EmWebcam::SendControl(EMWEBCAMDRV *pDrv, void *pvUser, uint64_t u64DeviceId, return VINF_SUCCESS; } -/* static */ DECLCALLBACK(void) EmWebcam::drvDestruct(PPDMDRVINS pDrvIns) -{ - PEMWEBCAMDRV pThis = PDMINS_2_DATA(pDrvIns, PEMWEBCAMDRV); - - LogFlowFunc(("iInstance %d, pEmWebcam %p, pIWebcamUp %p\n", - pDrvIns->iInstance, pThis->pEmWebcam, pThis->pIWebcamUp)); - - if (pThis->pEmWebcam) - { - pThis->pEmWebcam->EmWebcamDestruct(pThis); - pThis->pEmWebcam = NULL; - } -} - /* static */ const PDMDRVREG EmWebcam::DrvReg = { /* u32Version */ diff --git a/src/VBox/Main/src-client/VMMDevInterface.cpp b/src/VBox/Main/src-client/VMMDevInterface.cpp index 388179f9fb5..2ef6cd9a14d 100644 --- a/src/VBox/Main/src-client/VMMDevInterface.cpp +++ b/src/VBox/Main/src-client/VMMDevInterface.cpp @@ -745,43 +745,38 @@ DECLCALLBACK(void *) VMMDev::drvQueryInterface(PPDMIBASE pInterface, const char } /** - * Destruct a VMMDev driver instance. - * - * @returns VBox status. - * @param pDrvIns The driver instance data. + * @interface_method_impl{PDMDRVREG,pfnReset} */ -DECLCALLBACK(void) VMMDev::drvDestruct(PPDMDRVINS pDrvIns) +DECLCALLBACK(void) VMMDev::drvReset(PPDMDRVINS pDrvIns) { - PDRVMAINVMMDEV pData = PDMINS_2_DATA(pDrvIns, PDRVMAINVMMDEV); - LogFlow(("VMMDev::drvDestruct: iInstance=%d\n", pDrvIns->iInstance)); + LogFlow(("VMMDev::drvReset: iInstance=%d\n", pDrvIns->iInstance)); #ifdef VBOX_WITH_HGCM - /* HGCM is shut down on the VMMDev destructor. */ + HGCMHostReset (); #endif /* VBOX_WITH_HGCM */ - if (pData->pVMMDev) - pData->pVMMDev->mpDrv = NULL; } /** - * Reset notification. - * - * @returns VBox status. - * @param pDrvIns The driver instance data. + * @interface_method_impl{PDMDRVREG,pfnDestruct} */ -DECLCALLBACK(void) VMMDev::drvReset(PPDMDRVINS pDrvIns) +DECLCALLBACK(void) VMMDev::drvDestruct(PPDMDRVINS pDrvIns) { - LogFlow(("VMMDev::drvReset: iInstance=%d\n", pDrvIns->iInstance)); + PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns); + PDRVMAINVMMDEV pData = PDMINS_2_DATA(pDrvIns, PDRVMAINVMMDEV); + LogFlow(("VMMDev::drvDestruct: iInstance=%d\n", pDrvIns->iInstance)); + #ifdef VBOX_WITH_HGCM - HGCMHostReset (); + /* HGCM is shut down on the VMMDev destructor. */ #endif /* VBOX_WITH_HGCM */ + if (pData->pVMMDev) + pData->pVMMDev->mpDrv = NULL; } /** - * Construct a VMMDev driver instance. - * - * @copydoc FNPDMDRVCONSTRUCT + * @interface_method_impl{PDMDRVREG,pfnConstruct} */ DECLCALLBACK(int) VMMDev::drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHandle, uint32_t fFlags) { + PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns); PDRVMAINVMMDEV pData = PDMINS_2_DATA(pDrvIns, PDRVMAINVMMDEV); LogFlow(("Keyboard::drvConstruct: iInstance=%d\n", pDrvIns->iInstance)); |