VirtualBox

Changeset 91876 in vbox for trunk/src/VBox/Devices


Ignore:
Timestamp:
Oct 20, 2021 10:47:27 AM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
147679
Message:

Devices/Storage/DrvVD: Access the SSM API through the driver helper callback table only, bugref:10074

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Storage/DrvVD.cpp

    r91869 r91876  
    37653765static DECLCALLBACK(int) drvvdIoReqSuspendedSave(PPDMIMEDIAEX pInterface, PSSMHANDLE pSSM, PDMMEDIAEXIOREQ hIoReq)
    37663766{
    3767     PVBOXDISK pThis = RT_FROM_MEMBER(pInterface, VBOXDISK, IMediaEx);
     3767    PVBOXDISK           pThis  = RT_FROM_MEMBER(pInterface, VBOXDISK, IMediaEx);
     3768    PCPDMDRVHLPR3       pHlp   = pThis->pDrvIns->pHlpR3;
    37683769    PPDMMEDIAEXIOREQINT pIoReq = hIoReq;
    37693770
     
    37733774                 || pIoReq->enmState == VDIOREQSTATE_ALLOCATED, VERR_INVALID_STATE);
    37743775
    3775     SSMR3PutU32(pSSM, DRVVD_IOREQ_SAVED_STATE_VERSION);
    3776     SSMR3PutU32(pSSM, (uint32_t)pIoReq->enmType);
    3777     SSMR3PutU32(pSSM, pIoReq->uIoReqId);
    3778     SSMR3PutU32(pSSM, pIoReq->fFlags);
     3776    pHlp->pfnSSMPutU32(pSSM, DRVVD_IOREQ_SAVED_STATE_VERSION);
     3777    pHlp->pfnSSMPutU32(pSSM, (uint32_t)pIoReq->enmType);
     3778    pHlp->pfnSSMPutU32(pSSM, pIoReq->uIoReqId);
     3779    pHlp->pfnSSMPutU32(pSSM, pIoReq->fFlags);
    37793780    if (   pIoReq->enmType == PDMMEDIAEXIOREQTYPE_READ
    37803781        || pIoReq->enmType == PDMMEDIAEXIOREQTYPE_WRITE)
    37813782    {
    3782         SSMR3PutU64(pSSM, pIoReq->ReadWrite.offStart);
    3783         SSMR3PutU64(pSSM, pIoReq->ReadWrite.cbReq);
    3784         SSMR3PutU64(pSSM, pIoReq->ReadWrite.cbReqLeft);
     3783        pHlp->pfnSSMPutU64(pSSM, pIoReq->ReadWrite.offStart);
     3784        pHlp->pfnSSMPutU64(pSSM, pIoReq->ReadWrite.cbReq);
     3785        pHlp->pfnSSMPutU64(pSSM, pIoReq->ReadWrite.cbReqLeft);
    37853786    }
    37863787    else if (pIoReq->enmType == PDMMEDIAEXIOREQTYPE_DISCARD)
    37873788    {
    3788         SSMR3PutU32(pSSM, pIoReq->Discard.cRanges);
     3789        pHlp->pfnSSMPutU32(pSSM, pIoReq->Discard.cRanges);
    37893790        for (unsigned i = 0; i < pIoReq->Discard.cRanges; i++)
    37903791        {
    3791             SSMR3PutU64(pSSM, pIoReq->Discard.paRanges[i].offStart);
    3792             SSMR3PutU64(pSSM, pIoReq->Discard.paRanges[i].cbRange);
    3793         }
    3794     }
    3795 
    3796     return SSMR3PutU32(pSSM, UINT32_MAX); /* sanity/terminator */
     3792            pHlp->pfnSSMPutU64(pSSM, pIoReq->Discard.paRanges[i].offStart);
     3793            pHlp->pfnSSMPutU64(pSSM, pIoReq->Discard.paRanges[i].cbRange);
     3794        }
     3795    }
     3796
     3797    return pHlp->pfnSSMPutU32(pSSM, UINT32_MAX); /* sanity/terminator */
    37973798}
    37983799
     
    38023803static DECLCALLBACK(int) drvvdIoReqSuspendedLoad(PPDMIMEDIAEX pInterface, PSSMHANDLE pSSM, PDMMEDIAEXIOREQ hIoReq)
    38033804{
    3804     PVBOXDISK pThis = RT_FROM_MEMBER(pInterface, VBOXDISK, IMediaEx);
     3805    PVBOXDISK           pThis  = RT_FROM_MEMBER(pInterface, VBOXDISK, IMediaEx);
     3806    PCPDMDRVHLPR3       pHlp   = pThis->pDrvIns->pHlpR3;
    38053807    PPDMMEDIAEXIOREQINT pIoReq = hIoReq;
    38063808
     
    38143816    bool fPlaceOnRedoList = true;
    38153817
    3816     SSMR3GetU32(pSSM, &u32);
     3818    pHlp->pfnSSMGetU32(pSSM, &u32);
    38173819    if (u32 <= DRVVD_IOREQ_SAVED_STATE_VERSION)
    38183820    {
    3819         SSMR3GetU32(pSSM, &u32);
     3821        pHlp->pfnSSMGetU32(pSSM, &u32);
    38203822        AssertReturn(   u32 == PDMMEDIAEXIOREQTYPE_WRITE
    38213823                     || u32 == PDMMEDIAEXIOREQTYPE_READ
     
    38253827        pIoReq->enmType = (PDMMEDIAEXIOREQTYPE)u32;
    38263828
    3827         SSMR3GetU32(pSSM, &u32);
     3829        pHlp->pfnSSMGetU32(pSSM, &u32);
    38283830        AssertReturn(u32 == pIoReq->uIoReqId, VERR_SSM_DATA_UNIT_FORMAT_CHANGED);
    38293831
    3830         SSMR3GetU32(pSSM, &u32);
     3832        pHlp->pfnSSMGetU32(pSSM, &u32);
    38313833        AssertReturn(u32 == pIoReq->fFlags, VERR_SSM_DATA_UNIT_FORMAT_CHANGED);
    38323834
     
    38343836            || pIoReq->enmType == PDMMEDIAEXIOREQTYPE_WRITE)
    38353837        {
    3836             SSMR3GetU64(pSSM, &pIoReq->ReadWrite.offStart);
    3837             SSMR3GetU64(pSSM, &u64);
     3838            pHlp->pfnSSMGetU64(pSSM, &pIoReq->ReadWrite.offStart);
     3839            pHlp->pfnSSMGetU64(pSSM, &u64);
    38383840            pIoReq->ReadWrite.cbReq = (size_t)u64;
    3839             SSMR3GetU64(pSSM, &u64);
     3841            pHlp->pfnSSMGetU64(pSSM, &u64);
    38403842            pIoReq->ReadWrite.cbReqLeft = (size_t)u64;
    38413843
     
    38633865        else if (pIoReq->enmType == PDMMEDIAEXIOREQTYPE_DISCARD)
    38643866        {
    3865             rc = SSMR3GetU32(pSSM, &pIoReq->Discard.cRanges);
     3867            rc = pHlp->pfnSSMGetU32(pSSM, &pIoReq->Discard.cRanges);
    38663868            if (RT_SUCCESS(rc))
    38673869            {
     
    38713873                    for (unsigned i = 0; i < pIoReq->Discard.cRanges; i++)
    38723874                    {
    3873                         SSMR3GetU64(pSSM, &pIoReq->Discard.paRanges[i].offStart);
    3874                         SSMR3GetU64(pSSM, &u64);
     3875                        pHlp->pfnSSMGetU64(pSSM, &pIoReq->Discard.paRanges[i].offStart);
     3876                        pHlp->pfnSSMGetU64(pSSM, &u64);
    38753877                        pIoReq->Discard.paRanges[i].cbRange = (size_t)u64;
    38763878                    }
     
    38823884
    38833885        if (RT_SUCCESS(rc))
    3884             rc = SSMR3GetU32(pSSM, &u32); /* sanity/terminator */
     3886            rc = pHlp->pfnSSMGetU32(pSSM, &u32); /* sanity/terminator */
    38853887        if (RT_SUCCESS(rc))
    38863888            AssertReturn(u32 == UINT32_MAX, VERR_SSM_DATA_UNIT_FORMAT_CHANGED);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette