구)홈페이지 오탈자 보기
IT EXPERT, 임베디드 개발자를 위한 파일시스템의 원리와 실습

 

페이지오탈자 내용등록일
283

((p.83) 85번째 줄부터 100번재 줄까지)

void SearchExtPartition(U8 drv, PPARTITION pPartition, U32 *pnPartitionCnt);
위 함수를 
본서에 나온대로 작성 했을시 p85와 같은 실행 결과는 얻을수 있으나..
책 p77~p78에서 설명한 방식대로는 작동하지 않음. 
섹터의 절대위치와 상대위치 설정에서 실수 하신거 같음..
본서의 코드대로 실행하면 항상 확장 파티션의 상대 위치만 넘기므로 무한루프에 빠지는 경우가 발생함.
작동이 안되는 예) p.78에 있는 대로 파티션을 나눴을 경우.

void SearchExtPartition(U8 drv, PPARTITION pPartition, U32 *pnPartitionCnt, int nLength)
{
static int nCnt = 0;
int nExtStart     = pPartition->start + nLength;
int nTempPosition = pPartition->start;

//데이터를 읽어오기 위해 포인터를 다음 파티션 번지로 이동
pPartition++;
//부 파티션과 확장 파티션이 있을 수 있으므로 2개의 파티션을 읽어옴
GetPartitionTbl(drv, nExtStart, pPartition, 2);
while(pPartition->length != 0 && nCnt == 0)
{
(*pnPartitionCnt)++;
if(pPartition->type == PARTITION_TYPE_EXT)
{
SearchExtPartition(drv, pPartition, pnPartitionCnt, nTempPosition);
} else {
pPartition++;
}
}
if( pPartition->length == 0 )
{
nCnt = 1;
}
}

위와 같이 소스를 고치고 p82의 68번째에서 다음과 같이 호출 해야함..
SearchExtPartition(drv, pPriExtPartition, &nPartitionCnt, 0);

2007-01-101
2101

(p.101 [그림 3-6] FAT16과 FAT32의 부트 레코드 레이아웃)

위 그림에서 Offset에 대한 숫자가 잘못 기록되어 있음..

그림 위에서 부터..

Offset 0
Offset 32
Offset 60
Offset 89
Offset 511
로 표시 되어있으나

Offset 0
---------
Offset 35
Offset 61
---------
Offset 89
Offset 511

2007-01-121
3103

(P 103 [그림 3-8] FAT16 부트 레코드 항목들)

에서 
'Btyes Per Sector'를 'Bytes Per Sector'로 수정해야 합니다.

2007-05-092
111

(예제소스코드파일 (3-9장 Data 영역 실습 소스.c))

예제소스코드파일 (3-9장 Data 영역 실습 소스.c)에서
print_longName 함수에서 밑의 do~while 문장이 두번이 나옴.

예제소스 받아서 실행했을때 왜 이름이 두번 찍히나 하고 
고민하다가 소스를 보니 중복되어 있네요...

그런데.......이런것도 오탈자가 맞는지요? ^^

////////////////////////////////////////////////////////
do{
  memcpy(&filename[nameOffset],pLongDir[EntryNum].Name1, 10); nameOffset += 5;
  memcpy(&filename[nameOffset],pLongDir[EntryNum].Name2, 12); nameOffset += 6;
  memcpy(&filename[nameOffset],pLongDir[EntryNum].Name3, 4 ); nameOffset += 2;
  }while( (pLongDir[EntryNum--].Order & 0x40) == 0 );
 
  filename[nameOffset] = 0x0000;
 
  wcstombs( final, filename, 512 );     
         printf( "%s", final );
//////////////////////////////////////////////////
==>
확인 결과 보내드린 파일의 3-9장 예제 소스에 아래 do-while이 중복 되어 있는 것을
확인하였습니다.

책의 내용을 살펴보니 다행히 책에서는 문제가 없어 보이네요.
예제 소스를 추리면서 착오가 있었던 것 같습니다.

2006-10-251
4118

(p.118 소스 109줄)

주석이 //GET FAT Start Sector 이라고 되어 있는데..
//GET Data Start Sector로 바뀌어야 할듯 합니다.
보다가 헛갈리네요..( 웹에 소스 올라온것도 같이 수정해주세요)

2007-01-161
129

(p 129 그림3-22 File #2:)

p 129 그림3-22 File #2: 그림에서..

C -> D -> F 라고 설명이 돼어 있는데..

아무리 찾아가도 이상해서 보니까..

C -> D -> E 가 맞는군요..
==>
저자 확인이 완료되었습니다. 지적하신 부분은 오류가 맞으며
중쇄에 반영하겠습니다. 좋은 지적 감사합니다.(2006년 8월 30일)

2006-10-251
5138

((p 138) 표3-12 7번째줄)

해당 속성 정보가 long file name entry를 나타낼때의 value를 0xF0
라고 표기되어있습니다.
이것은 0x0F로 고침이 옳습니다.

2007-01-111
5138

(p.138 표 3-12 속성 항목의 값들)

표 3-12에서 맨 밑에
속성값이 0xFO 라고 되어 있는데..

0x0F가 맞습니다.

2007-01-161
5308

(p.308 밑에서 5번째 줄)

파일에 속하는 데이터 블록은 같은 블록에 
->
파일에 속하는 데이터 블록은 같은 그룹에 

2009-04-112
5364

(p.364 맨 아래 항목의 이름)

Compatible Teatures
->
Compatible Features

2009-04-152
5367

(UUID 항목 마지막 줄)

이 항목은 파일시스템 내에 기록되지
->
이 항목은 파일시스템 내에 기록되지 않는다.

2009-04-152
6395

(첫 번째 줄)

영역에 10개의
->
영역에 16개의

2009-04-242
6400

(PVD 항목 두 번째 줄)

가장 앞에(10번 섹터) 위치하며
->
가장 앞에(0x10번 섹터) 위치하며

2009-04-242
6400

(첫 번째 줄)

Volume Descriptor는 10번 섹터부터
->
Volume Descriptor는 0x10번 섹터부터

2009-07-092
6435

(예제 이름)

ReadCDFS.h
->
ReadCDFS.cpp

2009-04-242