Skip to content

Windows Api

윈도 API(Windows API, WinAPI)는 마이크로소프트 윈도 운영 체제들이 사용하는 API이다. C/C++ 프로그램에서 직접 운영 체제와 상호 작용할 수 있도록 만들어졌으며, 그보다 더 낮은 수준의 제어는 Ntdll.dll을 사용한 낮은 수준의 DLL로 가능하다.

Hide console of Windows

Visual C++ 컴파일러는 아래와 같은 링커 옵션으로 해결할 수 있다.

#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")

코드에 삽입하는 방법은 아래와 같다.

FreeConsole();

// OR
#define _WIN32_WINNT 0x0500
#include <wincon.h> 
ShowWindow (GetConsoleWindow(), SW_HIDE);

MinGW는 다음과 같은 컴파일 옵션을 사용할 수 있다.

$ g++ -mwindows winapp.c

With console window

#include <stdio.h>
#include <windows.h>

int main(void)
{
    puts("hi");
    MessageBox(NULL, "test", "test", NULL);
    GetStockObject(0);
    return 0;
}

컴파일러 옵션은 아래와 같다.

$ gcc -mconsole test_gdi.c -lgdi32

List of Windows API

List of Windows API

Base Services
기본 서비스(Base Services)는 이용할 수 있는 중요한 리소스를 윈도 시스템에서 사용할 수 있게 도와 준다.



Base File Services
기본 서비스(Base Services)중, 파일(File)과 관련된 서비스를 분류한다.

Multithread
멀티스레드(Multithread)와 관련된 분류.



Advanced Services
고급 서비스(Advanced Services)는 부가 기능을 커널에 사용할 수 있게 도와 준다.

  • 레지스트리 (Windows registry).
  • 시스템 종료/재시작 또는 중단 (Shutdown/restart the system or abort).
  • 윈도우 서비스 (Windows service).
  • 사용자 계정 (User accounts).



GDI
그래픽 장치 인터페이스(GDI: Graphics Device Interface)는 출력되는 그래픽 콘텐츠를 모니터, 프린터, 기타 출력 장치에 전달하는 기능을 제공한다.


User Interface
사용자 인터페이스(User Interface)는 화면 창뿐 아니라 단추와 스크롤바와 같은 가장 기본적인 컨트롤을 만들어 관리하고, 마우스와 키보드 입력을 받는 기능, 윈도의 GUI와 연동하는 기능을 제공한다.

Common Dialog Box Library
공통 대화 상자 라이브러리(Common Dialog Box Library)는 파일 열기 및 저장, 색 및 글꼴 선택 등을 위한 표준 대화 상자를 제공한다.


Common Control Library
공통 컨트롤 라이브러리(Common Control Library)는 응용 프로그램이 운영 체제가 제공하는 일부 고급 컨트롤에 접근할 수 있게 도와 준다. 여기에는 상태 표시줄, 진행 표시줄, 도구 모음, 탭을 포함한다.


Windows Shell
윈도 API의 구성 요소는 응용 프로그램이 운영 체제 셸이 제공하는 기능에 접근하고 변경하고 강화할 수 있게 도와 준다.

Network Services
다양한 네트워킹 기능을 운영 체제에 제공한다.



Localization
국제화및 현지화는 동일 문화권이 아닌 환경(특히 다른 국가나 문화)에서 만들어진 출판물이나 하드웨어 또는 소프트웨어를 특정 환경에 맞춰 적용하는 것을 의미한다.



System Management
* System functions

Web
인터넷 익스플로러 웹 브라우저 또한 응용 프로그램에 자주 쓰이는 수많은 API를 노출하며 이러한 것들은 윈도 API의 일부로 간주할 수 있다. 인터넷 익스플로러는 윈도 98 SE 이후의 운영 체제부터 포함되어 왔으며 윈도 98 이후로 웹 관련 서비스를 제공하고 있다.


Multimedia
마이크로소프트는 윈도 95 OSR2 이후로 DirectX 집합의 API를 모든 윈도 설치본의 일부로 제공하고 있다. DirectX는 멀티미디어와 게임 서비스를 제공한다.



ETC
그 밖의, 범위에 속하지 않는 API에 대하여 정리한다.

Category

DLL

Debugging

Device

ETC

Troubleshooting

Undefined reference to WinMain

주로 MinGW를 사용할 경우 발생되는 문제로, Windows에서 main대신 사용하는 WinMain함수를 찾을 수 없는 경우 발생된다. 발생되는 에러 메시지 유형은 아래와 같다.

C:/workspace/root/var/opm/apps/tdmgcc-4.9.2-150419-x86/bin/../lib/gcc/mingw32/4.9.2/../../..\libmingw32.a(main.o):main.c:(.text.startup+0xa7): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status

간단히 해결하는 방법은 아래와 같다.

int main(int argc, char ** argc)
{
    // ...
    return 0;
}

// For Windows Project Entry point.
#if defined(WIN32) || defined(_WIN32)
#include <windows.h>
int APIENTRY
WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR cmdLine, int cmdShow)
{
    return main(__argc, __argv);
}
#endif

Microsoft APIs and frameworks

Microsoft APIs and frameworks

Graphics

Desktop Window Manager, Direct2D, Direct3D, D3D (extensions), GDI/GDI+, WPF, Silverlight, WinRT XAML, Windows Color System, Windows Image Acquisition, Windows Imaging Component

Audio

DirectMusic, DirectSound, DirectX plugin, XACT, Speech API, XAudio2

Multimedia

DirectX (Media Objects), DirectX (Video Acceleration), DirectInput, DirectShow, Image Mastering API, Managed DirectX, Media Foundation, XNA, Windows Media, Video for Windows

Web

MSHTML, RSS Platform, JScript, VBScript, BHO, XDR, SideBar Gadgets

Data access

Data Access Components, Extensible Storage Engine, ADO.NET, ADO.NET Entity Framework, Sync Framework, Jet Engine, MSXML, OLE DB, OPC

Networking

Winsock (LSP), Winsock Kernel, Filtering Platform, Network Driver Interface Specification, Windows Rally, BITS, P2P API, MSMQ, MS MPI, DirectPlay

Communication

Messaging API, Telephony API, WCF

Administration and management

Win32 console, Windows Script Host, WMI(extensions), PowerShell, Task Scheduler, Offline Files, Shadow Copy, Windows Installer, Error Reporting, Event Log, Common Log File System

Component model

COM, COM+, ActiveX, Distributed Component Object Model, .NET Framework

Libraries

Base Class Library (BCL), Microsoft Foundation Classes (MFC), Active Template Library (ATL), Windows Template Library (WTL)

Device drivers

Windows Driver Model, Windows Driver Foundation (KMDF), Windows Driver Foundation (UMDF), WDDM, NDIS, UAA, Broadcast Driver Architecture, VxD

Security

Crypto API (CAPICOM), Windows CardSpace, Data Protection API, Security Support Provider Interface (SSPI)

.NET

ASP.NET, ADO.NET, Base Class Library (BCL), Remoting, Silverlight, TPL, WCF, WCS, WPF, WF

Software factories

EFx Factory, Enterprise Library, Composite UI, CCF, CSF

IPC

MSRPC, Dynamic Data Exchange (DDE), Remoting, WCF

See also

Favorite site

References


  1. Soenlab_com.7z