Lines Matching refs:pDir

4637     PSSMFILEDIR pDir  = (PSSMFILEDIR)RTMemTmpAlloc(cbDir);
4638 if (!pDir)
4647 memcpy(pDir->szMagic, SSMFILEDIR_MAGIC, sizeof(pDir->szMagic));
4648 pDir->u32CRC = 0;
4649 pDir->cEntries = 0;
4654 PSSMFILEDIRENTRY pEntry = &pDir->aEntries[pDir->cEntries++];
4655 Assert(pDir->cEntries <= pVM->ssm.s.cUnits);
4666 *pcEntries = pDir->cEntries;
4667 cbDir = RT_OFFSETOF(SSMFILEDIR, aEntries[pDir->cEntries]);
4668 pDir->u32CRC = RTCrc32(pDir, cbDir);
4669 int rc = ssmR3StrmWrite(&pSSM->Strm, pDir, cbDir);
4670 RTMemTmpFree(pDir);
8045 * @param pDir The full directory.
8052 static int ssmR3ValidateDirectory(PSSMFILEDIR pDir, size_t cbDir, uint64_t offDir, uint32_t cDirEntries,
8055 AssertLogRelReturn(!memcmp(pDir->szMagic, SSMFILEDIR_MAGIC, sizeof(pDir->szMagic)), VERR_SSM_INTEGRITY_DIR_MAGIC);
8056 SSM_CHECK_CRC32_RET(pDir, cbDir, ("Bad directory CRC: %08x, actual %08x\n", u32CRC, u32ActualCRC));
8057 AssertLogRelMsgReturn(pDir->cEntries == cDirEntries,
8058 ("Bad directory entry count: %#x, expected %#x (from the footer)\n", pDir->cEntries, cDirEntries),
8060 AssertLogRelReturn(RT_UOFFSETOF(SSMFILEDIR, aEntries[pDir->cEntries]) == cbDir, VERR_SSM_INTEGRITY_DIR);
8062 for (uint32_t i = 0; i < pDir->cEntries; i++)
8064 AssertLogRelMsgReturn( ( pDir->aEntries[i].off >= cbHdr
8065 && pDir->aEntries[i].off < offDir)
8066 || ( pDir->aEntries[i].off == 0 /* bug in unreleased code */
8068 ("off=%#llx cbHdr=%#x offDir=%#llx\n", pDir->aEntries[i].off, cbHdr, offDir),
8337 PSSMFILEDIR pDir = (PSSMFILEDIR)RTMemTmpAlloc(cbDir);
8338 if (!pDir)
8340 memcpy(pDir, &DirHdr, cbDirHdr);
8341 rc = ssmR3StrmRead(&pSSM->Strm, (uint8_t *)pDir + cbDirHdr, cbDir - cbDirHdr);
8343 rc = ssmR3ValidateDirectory(pDir, cbDir, off, DirHdr.cEntries, pSSM->u.Read.cbFileHdr, pSSM->u.Read.u32SvnRev);
8344 RTMemTmpFree(pDir);
9053 * @param pDir The directory buffer.
9061 static int ssmR3FileSeekSubV2(PSSMHANDLE pSSM, PSSMFILEDIR pDir, size_t cbDir, uint32_t cDirEntries, uint64_t offDir,
9067 int rc = ssmR3StrmPeekAt(&pSSM->Strm, offDir, pDir, cbDir, NULL);
9069 rc = ssmR3ValidateDirectory(pDir, (uint32_t)cbDir, offDir, cDirEntries, pSSM->u.Read.cbFileHdr, pSSM->u.Read.u32SvnRev);
9080 if ( pDir->aEntries[i].u32NameCRC == u32NameCRC
9081 && pDir->aEntries[i].u32Instance == iInstance
9082 && pDir->aEntries[i].off != 0 /* bug in unreleased code */
9090 if (pDir->aEntries[i].off + cbToRead > offDir)
9092 cbToRead = offDir - pDir->aEntries[i].off;
9095 rc = ssmR3StrmPeekAt(&pSSM->Strm, pDir->aEntries[i].off, &UnitHdr, cbToRead, NULL);
9099 ("Bad unit header or dictionary offset: i=%u off=%lld\n", i, pDir->aEntries[i].off),
9101 AssertLogRelMsgReturn(UnitHdr.offStream == pDir->aEntries[i].off,
9102 ("Bad unit header: i=%d off=%lld offStream=%lld\n", i, pDir->aEntries[i].off, UnitHdr.offStream),
9104 AssertLogRelMsgReturn(UnitHdr.u32Instance == pDir->aEntries[i].u32Instance,
9106 i, pDir->aEntries[i].off, UnitHdr.u32Instance, pDir->aEntries[i].u32Instance),
9112 ("Bad unit header: i=%u off=%lld cbName=%#x cbToRead=%#x\n", i, pDir->aEntries[i].off, UnitHdr.cbName, cbToRead),
9116 i, pDir->aEntries[i].off, u32CRC, u32ActualCRC));
9126 rc = ssmR3StrmSeek(&pSSM->Strm, pDir->aEntries[i].off + cbUnitHdr, RTFILE_SEEK_BEGIN,
9162 PSSMFILEDIR pDir = (PSSMFILEDIR)RTMemTmpAlloc(cbDir);
9163 if (RT_UNLIKELY(!pDir))
9165 rc = ssmR3FileSeekSubV2(pSSM, pDir, cbDir, Footer.cDirEntries, offFooter - cbDir,
9167 RTMemTmpFree(pDir);