Index: /trunk/src/VBox/Devices/Audio/DevHDA.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevHDA.cpp	(revision 82308)
+++ /trunk/src/VBox/Devices/Audio/DevHDA.cpp	(revision 82309)
@@ -3610,5 +3610,5 @@
 
     /* Save Codec nodes states. */
-    hdaCodecSaveState(pThis->pCodec, pSSM);
+    hdaCodecSaveState(pDevIns, pThis->pCodec, pSSM);
 
     /* Save MMIO registers. */
@@ -3938,5 +3938,5 @@
      * Load Codec nodes states.
      */
-    int rc = hdaCodecLoadState(pThis->pCodec, pSSM, uVersion);
+    int rc = hdaCodecLoadState(pDevIns, pThis->pCodec, pSSM, uVersion);
     if (RT_FAILURE(rc))
     {
Index: /trunk/src/VBox/Devices/Audio/HDACodec.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/HDACodec.cpp	(revision 82308)
+++ /trunk/src/VBox/Devices/Audio/HDACodec.cpp	(revision 82309)
@@ -3114,17 +3114,19 @@
 }
 
-int hdaCodecSaveState(PHDACODEC pThis, PSSMHANDLE pSSM)
-{
+int hdaCodecSaveState(PPDMDEVINS pDevIns, PHDACODEC pThis, PSSMHANDLE pSSM)
+{
+    PCPDMDEVHLPR3 pHlp = pDevIns->pHlpR3;
     AssertLogRelMsgReturn(pThis->cTotalNodes == STAC9221_NUM_NODES, ("cTotalNodes=%#x, should be 0x1c", pThis->cTotalNodes),
                           VERR_INTERNAL_ERROR);
-    SSMR3PutU32(pSSM, pThis->cTotalNodes);
+    pHlp->pfnSSMPutU32(pSSM, pThis->cTotalNodes);
     for (unsigned idxNode = 0; idxNode < pThis->cTotalNodes; ++idxNode)
-        SSMR3PutStructEx(pSSM, &pThis->paNodes[idxNode].SavedState, sizeof(pThis->paNodes[idxNode].SavedState),
-                         0 /*fFlags*/, g_aCodecNodeFields, NULL /*pvUser*/);
-    return VINF_SUCCESS;
-}
-
-int hdaCodecLoadState(PHDACODEC pThis, PSSMHANDLE pSSM, uint32_t uVersion)
-{
+        pHlp->pfnSSMPutStructEx(pSSM, &pThis->paNodes[idxNode].SavedState, sizeof(pThis->paNodes[idxNode].SavedState),
+                                0 /*fFlags*/, g_aCodecNodeFields, NULL /*pvUser*/);
+    return VINF_SUCCESS;
+}
+
+int hdaCodecLoadState(PPDMDEVINS pDevIns, PHDACODEC pThis, PSSMHANDLE pSSM, uint32_t uVersion)
+{
+    PCPDMDEVHLPR3 pHlp = pDevIns->pHlpR3;
     PCSSMFIELD pFields = NULL;
     uint32_t   fFlags  = 0;
@@ -3133,5 +3135,5 @@
         /* Since version 4 a flexible node count is supported. */
         uint32_t cNodes;
-        int rc2 = SSMR3GetU32(pSSM, &cNodes);
+        int rc2 = pHlp->pfnSSMGetU32(pSSM, &cNodes);
         AssertRCReturn(rc2, rc2);
         AssertReturn(cNodes == 0x1c, VERR_SSM_DATA_UNIT_FORMAT_CHANGED);
@@ -3159,7 +3161,6 @@
     {
         uint8_t idOld = pThis->paNodes[idxNode].SavedState.Core.uID;
-        int rc = SSMR3GetStructEx(pSSM, &pThis->paNodes[idxNode].SavedState,
-                                  sizeof(pThis->paNodes[idxNode].SavedState),
-                                  fFlags, pFields, NULL);
+        int rc = pHlp->pfnSSMGetStructEx(pSSM, &pThis->paNodes[idxNode].SavedState, sizeof(pThis->paNodes[idxNode].SavedState),
+                                         fFlags, pFields, NULL);
         AssertRCReturn(rc, rc);
         AssertLogRelMsgReturn(idOld == pThis->paNodes[idxNode].SavedState.Core.uID,
Index: /trunk/src/VBox/Devices/Audio/HDACodec.h
===================================================================
--- /trunk/src/VBox/Devices/Audio/HDACodec.h	(revision 82308)
+++ /trunk/src/VBox/Devices/Audio/HDACodec.h	(revision 82309)
@@ -127,6 +127,6 @@
 void hdaCodecDestruct(PHDACODEC pThis);
 void hdaCodecPowerOff(PHDACODEC pThis);
-int hdaCodecSaveState(PHDACODEC pThis, PSSMHANDLE pSSM);
-int hdaCodecLoadState(PHDACODEC pThis, PSSMHANDLE pSSM, uint32_t uVersion);
+int hdaCodecSaveState(PPDMDEVINS pDevIns, PHDACODEC pThis, PSSMHANDLE pSSM);
+int hdaCodecLoadState(PPDMDEVINS pDevIns, PHDACODEC pThis, PSSMHANDLE pSSM, uint32_t uVersion);
 int hdaCodecAddStream(PHDACODEC pThis, PDMAUDIOMIXERCTL enmMixerCtl, PPDMAUDIOSTREAMCFG pCfg);
 int hdaCodecRemoveStream(PHDACODEC pThis, PDMAUDIOMIXERCTL enmMixerCtl);
