Index: /trunk/include/VBox/ssm.h
===================================================================
--- /trunk/include/VBox/ssm.h	(revision 20113)
+++ /trunk/include/VBox/ssm.h	(revision 20114)
@@ -511,4 +511,5 @@
 VMMR3DECL(int) SSMR3GetStrZEx(PSSMHANDLE pSSM, char *psz, size_t cbMax, size_t *pcbStr);
 VMMR3DECL(int) SSMR3GetTimer(PSSMHANDLE pSSM, PTMTIMER pTimer);
+VMMR3DECL(int) SSMR3Skip(PSSMHANDLE pSSM, size_t cb);
 
 /** @} */
Index: /trunk/src/VBox/VMM/SSM.cpp
===================================================================
--- /trunk/src/VBox/VMM/SSM.cpp	(revision 20113)
+++ /trunk/src/VBox/VMM/SSM.cpp	(revision 20114)
@@ -3417,4 +3417,30 @@
 
 
+/**
+ * Skips a number of bytes in the current data unit.
+ *
+ * @returns VBox status code.
+ * @param   pSSM                The SSM handle.
+ * @param   cb                  The number of bytes to skip.
+ */
+VMMR3DECL(int) SSMR3Skip(PSSMHANDLE pSSM, size_t cb)
+{
+    AssertMsgReturn(   pSSM->enmOp == SSMSTATE_LOAD_EXEC
+                    || pSSM->enmOp == SSMSTATE_OPEN_READ,
+                    ("Invalid state %d\n", pSSM->enmOp),
+                    VERR_SSM_INVALID_STATE);
+    while (cb > 0)
+    {
+        uint8_t abBuf[8192];
+        size_t  cbCur = RT_MIN(sizeof(abBuf), cb);
+        cb -= cbCur;
+        int rc = ssmR3Read(pSSM, abBuf, cbCur);
+        if (RT_FAILURE(rc))
+            return rc;
+    }
+
+    return VINF_SUCCESS;
+}
+
 
 /**
@@ -3472,7 +3498,7 @@
 /**
  * Get the current unit byte offset (uncompressed).
- *  
- * @returns The offset. UINT64_MAX if called at a wrong time. 
- * @param   pSSM            SSM operation handle. 
+ *
+ * @returns The offset. UINT64_MAX if called at a wrong time.
+ * @param   pSSM            SSM operation handle.
  */
 VMMR3DECL(uint64_t) SSMR3HandleGetUnitOffset(PSSMHANDLE pSSM)
