구)홈페이지 오탈자 보기
뇌를 자극하는 윈도우즈 시스템 프로그래밍

 

페이지오탈자 내용등록일
전체0

(2007년 7월 23일자 오탈자 현황...한빛미디어)

============================================================
오탈자 확인(2007년 7월 23일자. 1쇄... 2쇄부터는 모두 반영되었습니다)
============================================================

-. 40페이지 [그림 1-10]에서 
어셈블리 -> 어셈블러


-. 42페이지 [그림 1-11]에서 
어셈블리 -> 어셈블러


-. 86페이지 [표 3-2]에서 
LONG64           UINT                         Unsigned INT typedef unsigned int UINT
-> LONG64      Unsigned  INT            typedef unsigned int UINT


-. 147페이지.
#define _ttoi_wtoi -> #define  _ttoi  _wtoi
#define _ttoiatoi -> #define  _ttoi  atoi


-. 175페이지 끝에서 7번째 줄.
그렇다면 커널 오브젝트가 Windows 커널에 종속적이라고 표현할 수 있는 이유
-> 그렇다면 커널 오브젝트가 Windows 운영체제(커널)에 종속적이라고 표현할 수 있는 이유


-. 176페이지 '핸들의 종속 관계' 제목 바로 아래 줄.
지금까지 커널 오브젝트는 프로세스에 종속적이지 않고 커널 오브젝트에 종속적이라고
-> 지금까지 커널 오브젝트는 프로세스에 종속적이지 않고 운영체제에 종속적이라고


-. 186페이지 26행.

ste = CreateProcess( NULL, command,
-> CreateProcess( NULL, command,

"ste ="를 삭제해 주세요..


-. 188페이지 '커널 오브젝트와 Usage Count' 바로 다음 줄.
자식 프로세스의 종료코드는 어디에 저장되겠는가? 바로 커널 오브젝트에 저장된다.
->자식프로세스의 종료코드는 어디에 저장되겠는가? 바로 자식 프로세스의 커널 오브젝트에 저장된다.


-. 195페이지 [그림 6-12]의 아래 그림에서.
UC = 2 
-> UC = 1


-. 227페이지 [그림 7-5] 바로 아래 줄.
 그렇다면 반대로 Signaled 상태에서 Non-Signaled 상태로 변경된 시점은 언제이겠는가?
아마도 종료된 프로세스가 다시 실행을 재개하면 Signaled 상태가 될 것이다.
->그렇다면 반대로 Signaled 상태에서 Non-Signaled 상태로 변경된 시점은 언제이겠는가?
아마도 종료된 프로세스가 다시 실행을 재개하면 Non-Signaled 상태가 될 것이다.


-. 240페이지. 세 번째 문단 세 번째 줄.
만약에 MSND이 없다면
-> 만약에 MSDN이 없다면 


-. 326페이지 [그림 10-4]에서
굵은 글씨체로 "함수 fct1 호출 시" 라는 문장이 두 개 있는데, 두 번째 문장을 "함수 fct2 호출 시"로 변경해야 함.


-. 430페이지 'Note' 바로 다음 줄.
뮤텍스는 열쇠에 비유되므로 누군가가 열쇠를 취득했을 때 Signaled 상태가 되거나, 
취득한 열쇠를 반환했을 때 Signaled 상태가 될 것이다.
-> 뮤텍스는 열쇠에 비유되므로 누군가가 열쇠를 취득했을 때 Non-Signaled 상태가 되고, 
취득한 열쇠를 반환했을 때 Signaled 상태가 될 것이다.


-. 431페이지 위에서 두 번째 줄.
반면에 뮤텍스를 반환할 때에는 다음 함수를 이용해서 반환하게 된다.
물론 뮤텍스는 다시 Non-Signaled 상태가 된다. 
-> 반면에 뮤텍스를 반환할 때에는 다음 함수를 이용해서 반환하게 된다.
물론 뮤텍스는 다시 Signaled 상태가 된다. 


-. 573페이지 33행.
DefinedException != 0x00<<28;
-> DefinedException |= 0x00<<28;

36행.
DefinedException != 0x00<<16;
-> DefinedException |= 0x00<<16;

===예제파일일도 ! 로 잘못되어 있음. 정정 요망===


-. 574페이지 39행 설명부분에서.
임의로 0x80 을 지정하였다.
-> 임의로 0x08 을 지정하였다.


-. 604페이지 44행.
소스코드 44행에 다음을 넣어주세요. 43, 45번째 줄과 줄을 맞춰서 넣어주세요
44.  CloseHandle(hFile);


-. 741페이지 [테스트 3단계]에서.
이번에는 이 상태에서(테스트2단계까지 진행한 상태) 예제(DLL을 사용하는 예제SwapDll.cpp)의
확장자를 .cpp로 다시 변경하자.
-> 이번에는 이 상태에서(테스트2단계까지 진행한 상태) 예제(DLL을 사용하는 예제DllTest.c)의
확장자를 .cpp로 다시 변경하자.

------------------------------------------------------------

2007-07-231
141

(1장, p41, 밑에서 5번째 줄)

이해할 수 있는 바이어리 코드로

-> 이해할 수 있는 바이너리 코드로 

2009-09-021
141

(41P)

표1-1 아래로 4번째 줄에 

바이어리 코드 -> 바이너리 코드


2011-06-202
142

(42p 밑에서 8재줄)

명령서C->명령어C 

2008-07-111
146

(p.46 어드레스 버스 설명 단락 마지막 문장)

"메모리는 0x1024번지에 존재하는 4바이트 데이터를 데이터 버스를 통해서 전달받게 된다."

=>

"메모리는 0x1024번지에 존재하는 4바이트 데이터를 데이터 버스를 통해서 전달하게 된다."

2007-06-271
386

(86p 표 3-2 밑에서 6번째)

86p [표 3-2] 밑에서 6번째 "LONG64" dptj

UNIT -> Unsigned INT

Unsigned INT typedef unsigned int UNIT -> typedef unsigned int UNIT


2007-04-191
386

(86P)

86페이지 Windows 자료형 표에서

첫번째 필드 12번째 행에 LONG64가 아니라 UINT입니다.

LONG64    ->    UINT


그리고 세번째 필드 11번째 행에 LONG64가 빠졌습니다.

typedef signed _int64   ->    typedef signed _int64 LONG64

2011-05-255
391

(90p~91p소스 18, 20 행)


_tprintf(_T("Position %d, %d n"), (UINT)&val1, (UINT)&val2);
_tprintf(
                     _T("distance : %d n"), 
                     CalDistance((UINT)&val1, (UINT)&val2));

--> 총 3개의 %d를 %u로 변경

_tprintf(_T("Position %u, %u n"), (UINT)&val1, (UINT)&val2);
_tprintf(
                      _T("distance : %u n"), 
                       CalDistance((UINT)&val1, (UINT)&val2));

2008-01-191
391

(91페이지 실행결과)


distance : 12

이 한줄을 다음과 같이 두 줄로 삽입되어야 합니다.

Position 1245024, 1245012
distance : 12

2008-01-191
399

(99페이지 소스코드 10라인)

int main(int argc, TCHAR * argv[])

-->

int _tmain(int argc, TCHAR * argv[]) 

2008-01-201
5138

(p.138 그림 5-7)

Running 상태 프로세스와 Ready 상태 프로세스에 있는 MSWord의 화살표 방향이 반대가 되어야 합니다. 

2008-06-251
5146

(146p, 맨 아래에서 두번째.)

gettchar   ->  getwchar 

2008-01-241
5153

(153page 하단 여기서 잠깐 마지막줄)

바램 -> 바람

2008-01-241
6176

(6장 176page 위에서 6번째)

<구문>
지금까지 커널 오브젝트는 프로세스에 종속적이지 않고 커널 오브젝트에 종속적이라고 설명하였다.

<변경 내용>
-> 커널 오브젝트에 종속적이라고 설명하였다.

위의 내용을

-> 운영체제에 종속적이라고 설명하였다.

으로 변경 되어야 됩니다

2007-07-181
6181

(181.쪽 예제 6-4 파일이름과 주석)

총 두 군데에 변경이 되어야 합니다

CloseHandleProb1.cpp -> KernelObjProb1.cpp

2007-11-281
6183

(P.183)

예제 6-5는 CloseHandleProb2.cpp가 아니라  KernerlObjProb.cpp 입니다.
제목과 주석이 잘못되었습니다.

2008-06-061
6186

((186p 예제6-6 OperationStateParent.cpp 코드 26 Line))

26행에서


ste = CreateProcess(NULL, command, NULL, TRUE,
                    CREATE_NEW_CONSOLE, NULL, NULL,
                    &si, &pi);

'ste =' 를 삭제합니다.

2007-07-201
6192

(192p. 여기서 잠깐 마지막에서 두번째줄.)

TermiateProcess -> TerminateProcess 

2008-01-291
6195

(195쪽 [그림 6-12])


계산기
kernel object
UC = 2

==>

계산기
kernel object
UC = 1

2007-04-081
6202

(202p 14번째줄 for문)


이곳은 오탈자가 아니고요 편집과정에서 들여쓰기가 조금 틀어진것 입니다.
현재 코드가 아래처럼 되어 있습니다.
 
if(argc > 2)
{
     for(int i=0; i<argc; i++)
        _tcscpy(cmdTokenList[i-1], argv[i]);
        CmdProcessing(argc-1);     // 예를 위의 for문과 동일한 위치로 밀어야 합니다. 
    }           // 예를 위의 {와 동일한 위치로 밀어야 합니다. 
 
-> 


여기서 내용은 바꾸지 않고요 여백만 다음과 같이 합니다.
if(argc > 2)
{
     for(int i=0; i<argc; i++)
        _tcscpy(cmdTokenList[i-1], argv[i]);
     CmdProcessing(argc-1);
}

2010-08-254
7221

(221page, 소스 35번째라인)

35행의 소스코드 시작 위치를 36행에 맞춰야 합니다. 

2008-01-311
8252

(252쪽)

MainSender -> MainReceiver 

To Hanbit) 이전에 한번 등록된 내용입니다.

2007-10-181
8252

(p.252 1번째줄)

MailSender는 변경할 필요가 없으므로
-> MailReceiver는 변경할 필요가 없으므로

2008-06-091
8282

(282쪽 [예제8-10]에서 32라인)

소스코드 32라인 삭제

2007-10-191
9316

(316쪽 밑에서 2번째줄)

[그림 9-3]r과  ->  [그림 9-3]과

2008-11-261
10321

(321쪽 위에서 5째줄)

ATPCS(ARM Procedure Call Standard) 
->
ATPCS(ARM-Thumb Procedure Call Standard)

2007-10-191
10322

(322page 밑에서 5번째줄)

(First In, Fist Out) 

-> 

(Last In, First Out) 

2009-08-254
10324

(p.324 밑에서 9번째 줄)

무엇인가를 선택할 때마다 더해 낳아가는   ->  무엇인가를 선택할 때마다 더해 나아가는  

2008-06-171
10329

(p329 [여섯 번째 단계] 4줄)

네 번째 그리도 다섯 번째

-> 네 번째 그리고 다섯 번째

2007-06-081
10345

(p345 표10-1)

'32 bit' 항목의 첫 번째 라인, 'Stack cleanup by' 부분에서 

Faller -> Caller

로 변경

2007-06-041
11366

(366p, 14번째 줄)

일반적은 프로그램은

-> 일반적인 프로그램은

2008-11-211
13419

(419쪽 크리티컬 섹션(Critical Section) 기반의 동기화에서 두번째 줄)

섹센 -> 섹션

2009-01-021
13422

(422쪽 03라인)

프로그램 설명 : 생성 가능한 쓰레드의 개수 측정

->

프로그램 설명 : 임계영역의 동기화

2010-02-234
13430

(13장, p430, 밑에서 2번째 줄)

EnterCirticalSection 함수와

-> EnterCriticalSection 함수와 

2009-09-081
13433

(433쪽, 48줄)

// nunamed mutex 를
// nonamed mutex 로 변경해야 됨

2009-01-021
13434

(13장, p434, 밑에서 3번째 줄)

<21행 설명라인>

뮤텍스를 얻기 위해 WaitForSignleObject 함수를 호출하고 있다.

->

뮤텍스를 얻기 위해 WaitForSingleObject 함수를 호출하고 있다.




<밑에서 3번째 줄>

생각해 봐도, WaitForSignleObject 함수는

-> 생각해 봐도, WaitForSingleObject 함수는 


2009-09-081
13443

(p.443 첫 번째 줄)

"음 그럼 프로세스 B가~" -> "음 그럼 프로세스 A가~"

2008-06-191
14461

(461쪽 24라인)



FALSE, // auto reset mode로 생성

->

TRUE, // auto reset mode로 생성

2010-02-234
14471

(469p, 471p, SetWaitableTimer의 2번째 인자에 대한 설명)

469p 중간 부분
② pDueTime : 알람이~~~ 10억 분의 1초(Nanoseconds)단위로 시간을 설정한다.

이를

② pDueTime : 알람이~~~ 1000만 분의 1초(100 Nanoseconds)단위로 시간을 설정한다.

471p 33행에 대한 소스 해설
33행 : 두 번째 ~~ . 따라서 100000000 나노 초 후에(10초 후에)

이를

33행 : 두 번째 ~~. 따라서 10000000000 나노 초 후에(10초 후에)

2008-12-021
14473

(473페이지 밑에서 4째줄)

SetWaitableTimer -> CancelWaitableTimer

2007-10-221
16502

(502쪽 10번째줄)

에서는 -> 해서는 

2008-10-031
16508

(16장 508페이지)

여기서 잠깐 위에서 8번째 줄


모두 틀지리 않은-> 모두 틀리지 않은 

2009-02-021
16511

(511p 밑에서 9번째줄)

발이다. 한 번은 값을 참조하기위해서,

->

말이다. 한 번은 값을 참조하기위해서,

2008-12-031
16522

(522p~523p)

- 522페이지 마지막 줄
하위 8바이트를 통해서 -> 하위 12바이트를 통해서

- 523 페이지 첫 문장
마지막 8비트가 00000001이므로 -> 마지막 12비트가 000000000001이므로

- 523 페이지 두번째 문장
00000010, 00000011, 00000100번지까지 ->  000000000010, 000000000011, 000000000100번지까지 

2008-12-031
17531

(531p 예외처리의 필요성 밑에 줄.)

이어서 애기하자면

 -> 

이어서 말 하자면 

2009-09-044
17537

(소스코드 17, 27 라인)

17번 라인 
_tscanf(_T("%d / %d", &a, &b) );
==> _tscanf(_T("%d / %d"), &a, &b);

27번 라인
_tprintf(_T("result: %d n", a/b));
==> _tprintf(_T("result: %d n"), a/b); 

2009-03-021
17558

(558p 소스 43번째줄)

43번째 라인의 }을 bold 처리!

2008-12-031
18606

(606페이지 위에서 2번째줄)

lpFilePath ==> lpFilePart 

2009-03-031
18632

(p632 두번째줄)

가장 기본이 되는 입(출력 및 파일 생성 함수의 사용방법을 기억하자

->

가장 기본이 되는 입/출력 및 파일 생성 함수의 사용방법을 기억하자

2008-12-031
19659

(659쪽 17번째 줄)

38번째 줄에서
->
36번째 줄에서

2008-12-221
20675

(675p 밑에서 12번째줄 마지막 문장)

RESEERVE 상



RESERVE 상

2008-12-041
20681

(681p, 86번째 라인)

_tprintf( _T("VirtualAlloc failed %d n") );

_tprintf( _T("VirtualAlloc failed n") );

2008-12-041
20694

(694 page, source code line 35)

sizeof(TCHAR) * 10 -> sizeof(TCHAR) * 30 

2009-02-251
20709

(709 page, source code line 61)

for(int j = 1; j < num-1; j++)

-->

for(int j = 1; j < num; j++) 

2009-02-251
21745

(745 page, 소스코드 25 line)

GetProcAddress(hinstLib, _T("swap"));

-->

GetProcAddress(hinstLib, "swap");

2009-03-041