示例#1
0
bool IO_UncertSimResults::ReadUncertResults(DC_UncertSimResults& results)
{
    try
    {
        ReadFileHeader(results, true);

        ReadNextRecord();
        ReadInt();          // skip next rec
        SC_IntArray runStartRecs;
        ReadIntArray(runStartRecs);

        results.AllocAndSetSize(runStartRecs.Size());
        for (int i = 0; i < results.Size(); i++)
        {
            ReadAbsolute(runStartRecs[i]);
            ReadOneRun(results[i]);
        }

        CloseFile();
        return true;
    }
    catch (BufFileC::BufferFileError& err) {
        GenAppErrorMsg("ReadUncertResults", err.errMsg);
        CloseFile();
    }

    return false;
}
示例#2
0
void IO_ProfileSimResults::ReadOneRun(ProfileSimRunResults& runRes)
{
    ReadString(runRes.runID, ProfileSimRunResults::runIDLen);

    ReadStringArray(runRes.caseValDesc);
    ReadStringArray(runRes.caseValShortDesc);
    ReadStringArray(runRes.caseSeqData.sequenceIDs);
    ReadDoubleArray(runRes.caseSeqData.sequenceStartTimes);

    //  next record contains case start records
    ReadNextRecord();
    SC_IntArray caseStartRecs;
    ReadIntArray(caseStartRecs);
    runRes.AllocAndSetSize(caseStartRecs.Size());

    // individual case results
    for (int i = 0; i < runRes.Size(); i++)
    {
        ReadAbsolute(caseStartRecs[i]);
        ReadOneCase(runRes[i]);
    }
}
示例#3
0
BOOL P9xPhysicalDrive::ReadPartitionInfoRecursive(DWORD dwSector,INT64 TotalOffset,int depth )
{
	CHAR szHeader[80];
	if(depth)
	memset(szHeader,'\t',depth);
	szHeader[depth] = 0;

	TRACE("%sReading sector %d, offset %I64d\n", szHeader,dwSector,TotalOffset );

	BYTE mbr[SIZE_OF_ONE_BLOCK];
	if( ReadAbsolute(mbr,sizeof(mbr),dwSector) )
	{
		MBR* pMBR = (MBR*) &(mbr[446]);
		TRACE("%sSignature = 0x%04hx\n", szHeader,pMBR->wSignature);
		if( pMBR->wSignature != 0xaa55 )
			return FALSE;

		INT64 ScheissOffset = 0;

		for( int i = 0; i < 4; i++ )
		{
			PARTITIONINFO* source = &(pMBR->pi[i]);

			if( !source->SIZE && !source->LBA )
				continue;

			TRACE("%s-------------------- Partition %d --------------\n", szHeader, i );
			TRACE("%sDH=%d\n", szHeader, (int) source->DH);
			TRACE("%sSOURCE = %ld, LBA = %ld\n", szHeader, source->LBA, source->SIZE );

			PARTITION_INFORMATION pi;
			ZeroMemory(&pi,sizeof(pi));

			pi.PartitionLength.QuadPart = source->SIZE;
			pi.PartitionLength.QuadPart *= SIZE_OF_ONE_BLOCKL;
			pi.PartitionType = source->Type;

			if( i == 0 )
			{
				pi.StartingOffset.QuadPart = source->LBA;
				pi.StartingOffset.QuadPart *= SIZE_OF_ONE_BLOCKL;
				pi.StartingOffset.QuadPart += TotalOffset;
				ScheissOffset = pi.StartingOffset.QuadPart;
			}
			else
			{
				pi.StartingOffset.QuadPart = ScheissOffset;
			}
			ScheissOffset += pi.PartitionLength.QuadPart;

			TRACE("%sPartitionLength = %I64d\n", szHeader, pi.PartitionLength.QuadPart );
			TRACE("%sStartingOffset = %I64d\n", szHeader, pi.StartingOffset.QuadPart );

			P9xPartitionInfo* p9pi = new P9xPartitionInfo(&pi);
			m_PartitionInfo.AddTail( p9pi );
			if( pi.PartitionType == PARTITION_TYPE_EXTENDED )
			{
				if( !ReadPartitionInfoRecursive(dwSector + source->LBA,pi.StartingOffset.QuadPart,depth+1) )
				{
					p9pi->m_pi.StartingOffset.QuadPart += 63*512;
				}
			}

		}
	}
	return TRUE;
}