BOOL CNdasUnitDeviceCreator::ReadDIBv1AndConvert(PNDAS_DIB_V2 pDIBv2) { BOOL fSuccess = FALSE; NDAS_DIB DIBv1 = {0}; PNDAS_DIB pDIBv1 = &DIBv1; fSuccess = m_devComm.ReadDiskBlock( reinterpret_cast<PBYTE>(pDIBv1), NDAS_BLOCK_LOCATION_DIB_V1); if (!fSuccess) { XTLTRACE2(NDASSVC_NDASUNITDEVICE, TRACE_LEVEL_ERROR, "ReadDiskBlock(DIBv1) failed, error=0x%X\n", GetLastError()); return FALSE; } // // If there is no DIB in the disk, // create a pseudo DIBv2 // if (NDAS_DIB_SIGNATURE != pDIBv1->Signature || IS_NDAS_DIBV1_WRONG_VERSION(*pDIBv1)) { // // Create a pseudo DIBv2 // InitializeDIBv2AsSingle(pDIBv2); return TRUE; } // // Convert V1 to V2 // fSuccess = ConvertDIBv1toDIBv2( pDIBv1, pDIBv2, m_udinfo.SectorCount.QuadPart); if (!fSuccess) { // // Create a pseudo DIBv2 again! // InitializeDIBv2AsSingle(pDIBv2); return TRUE; } return TRUE; }
BOOL CNdasUnitDeviceCreator::ReadDIBv1AndConvert(PNDAS_DIB_V2 pDIBv2) { BOOL fSuccess = FALSE; NDAS_DIB DIBv1 = {0}; PNDAS_DIB pDIBv1 = &DIBv1; fSuccess = m_devComm.ReadDiskBlock( reinterpret_cast<PBYTE>(pDIBv1), NDAS_BLOCK_LOCATION_DIB_V1); if (!fSuccess) { DBGPRT_ERR_EX(_FT("Reading DIBv1 block failed: ")); return FALSE; } // // If there is no DIB in the disk, // create a pseudo DIBv2 // if (NDAS_DIB_SIGNATURE != pDIBv1->Signature || IS_NDAS_DIBV1_WRONG_VERSION(*pDIBv1)) { // // Create a pseudo DIBv2 // InitializeDIBv2AsSingle(pDIBv2); return TRUE; } // // Convert V1 to V2 // fSuccess = ConvertDIBv1toDIBv2( pDIBv1, pDIBv2, m_udinfo.SectorCount.QuadPart); if (!fSuccess) { // // Create a pseudo DIBv2 again! // InitializeDIBv2AsSingle(pDIBv2); return TRUE; } return TRUE; }