윈도우 API 프로그래밍은 참 독특한 특징이 있는데 C언어에서 버젓이 제공해 주고 있는 자료형 같은 것도 typedef로 대문자 타입 이름으로 독자적인 이름 규칙(naming convention)으로 재정의해서 씀. 이렇게 하는 이유는 여러 가지가 있을 수 있겠지만 내가 생각하기로는 C 표준이 바뀌거나 컴파일러나 환경이 바뀌어도 windows.h 헤더 안에서 typedef 한 것만 바꿔서 제공해 주면 원래 짜놓은 코드는 수정하지 않아도 호환성이 보장되니까 하위 호환성을 위해 그런 식으로 해놓은 것 같음. 잡소리를 좀 했는데, 어쨌든 DWORD는 unsigned long을 재정의한 거고 HANDLE은 void *를 재정의한 거임. dwThreadID라는 변수 이름을 보아하니
ㅅㅅㅅ(125.128)2015-04-11 22:09
스레드 식별자(고유 번호: ID)를 보관하기 위한 변수인 거 같고, HANDLE Thread[2]는 스레드 객체에 대한 핸들 값을 보관하기 위한 것으로 보임. 핸들은 윈도우의 어떤 커널 객체에 접근하기 위해 open함수로 부여받아야 하는 번호임.
윈도우 API 프로그래밍은 참 독특한 특징이 있는데 C언어에서 버젓이 제공해 주고 있는 자료형 같은 것도 typedef로 대문자 타입 이름으로 독자적인 이름 규칙(naming convention)으로 재정의해서 씀. 이렇게 하는 이유는 여러 가지가 있을 수 있겠지만 내가 생각하기로는 C 표준이 바뀌거나 컴파일러나 환경이 바뀌어도 windows.h 헤더 안에서 typedef 한 것만 바꿔서 제공해 주면 원래 짜놓은 코드는 수정하지 않아도 호환성이 보장되니까 하위 호환성을 위해 그런 식으로 해놓은 것 같음. 잡소리를 좀 했는데, 어쨌든 DWORD는 unsigned long을 재정의한 거고 HANDLE은 void *를 재정의한 거임. dwThreadID라는 변수 이름을 보아하니
스레드 식별자(고유 번호: ID)를 보관하기 위한 변수인 거 같고, HANDLE Thread[2]는 스레드 객체에 대한 핸들 값을 보관하기 위한 것으로 보임. 핸들은 윈도우의 어떤 커널 객체에 접근하기 위해 open함수로 부여받아야 하는 번호임.
typedef unsigned long DWORD;
typedef void *HANDLE;