2016년 11월 28일 월요일

[Windows API] 정복_1

1. 정의

API란 'Application programming interface'의 약자이며 운영체제가 응용 프로그램을 위해 제공하는 함수의 집합이라고 정의할 수 있다.



2. 개발 방법

2-1) SDK: 마이크로소프트사에서 제공하는 윈도우즈용 프로그램 개발 킷이다. 섬세한 처리와 막강한 기능들을 포함하고, 프로그램의 속도나 크기관리에도 유용하다.
그러나 방대한 양의 API 함수를 알아야 하며 내부적인 동작도 상세히 연구해야 한다. 현재에는 운영체제와 직접 통신해야하는 저수준의 프로그램 아주 소규모의 프로젝트일 때 가끔 사용된다. 대부분의 개발툴의 요소로 탑재되어 있다.

2-2) 클래스 라이브러리 : 양이 많은 API 함수들을 좀 더 쉽고 빠르게 사용하기 위해 클래스로 잘 포장하여 객체 위주로 프로그램을 작성하는 방법이다. MFC와 OWL이 대표적이 예이다. 전문 개발자용이다.

2-3) 비주얼 툴 : 일일이 손으로 코드를 작성하지 않고 간단한 곳에만 코드를 작성하는 아주 진보된 개발툴이다. 그래서 배우기도 쉽고 사용하기도 쉬우며 성능도 심하게 떨어지지않는다.



3. 선수 과정

3-1) 기본적인 운영체제 지식 : 응용 프로그램은 운영체제의 서비스를 받아야 하고 조화를 이우어야 한다. 그래서 내부적인 동작이나 원리까지도 상세하게 알고 있다면 프로그래밍하는데 상당한 도움이 된다.

3-2) C언어 : C의 문법뿐만 아니라 기본적인 자료 구조나 간단한 알고리즘까지를 말한다. C를 배우면서 API를 같이 병행하는 것은 매우 어려운 일이며 프로그래밍 입문환경으로도 적절하지 못하다.



4. 들어가기에 앞서

접두어 :
cb  - 바이트 수
dw - 부호없는 long형 정수
h  - 윈도우, 비트맵, 파일 등의 핸들
s  - NULL 종료 문자열
ch - 문자형
a  - 배열
w  - 부호없는 정수형
i  - 정수형
p, lp - 포인터형
b  - 논리형


데이터형 : windows.h 라는 헤더 파일에 typedef로 선언되어 있으며 표준 데이터형처럼 사용하므로 알아두면 좋다.
BYTE : unsigned char
CHAR : char
WORD : unsigned short
DWORD : unsigned long
LONG : long
BOOL : true or false


4. 핸들에 대한 이해 :
구체적인 어떤 대상에 붙여진 번호이다. 파일들에게 핸들을 붙여 관리한다.
-핸들은 정수 값이다.
-핸들은 운영체제가 발급하며 사용자는 쓰기만 한다.



5. 유니코드 :

C타입          유니코드 타입
char             TCHAR
char *           LPSTR
const char *   LPCSTR

C표준 함수       유니코드 지원 함수
strlen               lstrlen
strcpy              lstrcpy
strcat               lstrcat
strcmp             lstrcmp
sprintf              wsprintf



6. 64bit 환경 :
32bit와 64bit의 API는 크게 다르지 않지만 주소 공간이 낭비되므로 타입을 다르게 쓰는게 좋다.

길이       부호있음            부호없음
32bit      INT32, LONG32    UINT32, ULONG32, DWORD32
64bit         ''                           ''

컴파일 되는 환경에 따라 길이가 달라져야 한다면 다음 타입들을 사용한다.
INT_PTR,  LONG_PTR,  UINT_PTR,  ULONG_PTR,  DWORD_PTR
뒤에 _PTR이 붙은 것은 운영체제의 비트수에 따라 크기가 가변적, 또는 포인터와 호환되어야 하는 정수가 필요할 때 사용한다.

댓글 없음:

댓글 쓰기