Windows_API
[Wikipedia|▼Menu]

Windows API(ウィンドウズ エーピーアイ)とは、Microsoft WindowsシステムコールAPIのこと。特に32ビットプロセッサで動作するWindows 95以降やWindows NTで利用できるものはWin32 APIと呼ばれる。また、それらのWindowsにおけるWin32 APIの実装をWin32と呼ぶ。

64ビットプロセッサ向けのWin64 APIも含める場合は「Windows API」という包括的な名称が正確だが、慣習的にWin32と言えばWin64も含んでいることがある[1]
概要

Windowsオペレーティングシステム (OS) 上で動作するアプリケーションにとって、Windows APIはWindowsの各機能にアクセスするための接点である。そのため、Windows上で動作するアプリケーションを作成できる様々なプログラミング言語・開発環境においてWindows APIを使用する手段が提供されている。特にCC++向けには、Windows SDKにより、<windows.h>をはじめとする多数のヘッダーファイルが公開されている。Microsoft Visual C++のC/C++ランタイムライブラリのうち、OSの機能にアクセスするものは、内部的にWindows APIを用いて実装されている。また、多くの開発環境で、Windows APIを基にした、より高水準のフレームワークが構築されている。これらを通じて、すべてのWindowsアプリケーションは、直接的または間接的にWindows APIを使用している。

Windows APIに属する各APIは、主にDLLに実装されており、C言語形式関数またはCOMインターフェイスとして機能が公開されている。関数の呼出規約はWin32 (x86) の場合に原則としてstdcallを採用する[2][3]など、統一されたインターフェイスで多数のプログラミング言語からの使用を容易なものとしている。
分類

Windows APIの中核となる機能はKernel、User、GDIに分けられる[4]。当初は、それぞれKERNEL.EXE (モードによってはKRNL286.EXE、KRNL386.EXE)、USER.EXE、GDI.EXEに実装されていた。32ビット化されて以降は、KERNEL32.DLL、USER32.DLL、GDI32.DLLに実装されている。Windows 7の新カーネル、MinWinでは、Virtual DLLの仕組みが導入され、インターフェイス互換性を維持したうえで実装の整理が行なわれている[5][6]
Kernel
ファイルシステムデバイスプロセススレッドレジストリ例外処理など基盤となる機能
User
ウィンドウの処理、ボタンやスクロールバーなどといった基本的なコントロール、マウス・キーボード入力、その他グラフィカルユーザーインターフェイス (GUI) に関わる機能。
GDI
ディスプレイ・プリンタをはじめとした出力装置への描画機能

現在では、これだけに留まらず、多数のDLLから無数の機能が公開されている。現在、マイクロソフトのドキュメントでは次のように分類している[7]

Administration and Management

Diagnostics

Graphics and Multimedia

Networking

Security

System Services

Windows User Interface

なお、この分類では、KernelはDiagnosticsとSystem ServicesそしてSecurityに跨って属し、UserはWindows User Interface、GDIはGraphics and Multimediaに属する。
グラフィックとマルチメディア
DirectX

マイクロソフトはWindows 95/Windows NT 4以降、全てのWindowsにDirectXを用意している。DirectXは主にゲームマルチメディアのためのAPIであるが、Windows Vista以降はDirectX GraphicsがGDIに代わってOSのグラフィックス描画の基盤として昇格されている。Windows OSのバージョンや、サービスパックあるいは機能更新プログラムの適用状況によって、利用可能なAPIやAPIのバージョンが異なる。DirectX APIのうちのいくつかは、ゲームコンソールであるXboxシリーズ(XboxXbox 360Xbox Oneなど)と共通になっている。大半はハードウェアとの通信を仲介するAPIであり、利用するにあたって、DirectX対応ハードウェアおよびデバイスドライバーのインストールが必要となるものも多い。
Direct3D
3Dグラフィックスアクセラレータの操作。当初はWindowsにおけるOpenGLの代替手段でもあったが、Direct3D 12はよりハードウェアに近いローレベルAPIとなり、競合はVulkanである。
DirectDraw
2Dグラフィックスアクセラレータの操作。DirectX 8.0以降、DirectDrawの機能はDirect3Dに吸収された。
DirectX Graphics
DirectX 8.0以降に導入された名称で、Direct3DおよびDirectDrawの統合を意味するものだったが[8]、DirectX 11以降はDXGI/Direct3D/Direct2D/DirectWrite/DirectCompositionの総称となっている[9]
DXGI (DirectX Graphics Infrastructure)
DirectX 10以降、DirectX Graphicsから比較的変化の緩やかな部分はDXGIとしてDirect3Dから分離された。
Direct2D
Direct3D上に構築された高レベル2D描画用API。GDI+の置き換えとなる。
DirectWrite
テキストおよびフォント/フォントグリフを扱う。
DirectCompute
DirectX 11で導入されたGPGPU用のAPIという位置付けだが、実際にはDirect3Dの一部。
DirectSound
低水準なハードウェア(主にサウンドカード)への操作。
DirectMusic(英語版)
DirectSoundの上位に位置し、音楽(メディアファイルの再生など)を扱う。
DirectX Audio
DirectX 8.0以降に導入された名称で、DirectSoundおよびDirectMusicの統合を意味するものだったが[8]、DirectX 9以降はX3DAudio/XAudio2/XACT/DirectSoundなどの総称となっている[10]
DirectInput
ジョイパッドやゲームパッドからの入力、およびフォースフィードバックを扱う。
XInput
Xbox 360Xbox OneのコントローラーをWindows上で使えるようにするAPI。
DirectPlay(英語版)
ネットワークなどを介した通信。
DirectShow
汎用的なマルチメディアパイプラインシステム。

DirectX APIはWindows APIの中でも変化が激しいAPIのひとつで、Direct3D RM、DirectDraw、DirectSound、DirectInput、DirectPlay、およびDirectMusicはWindows Vista以降完全な互換機能が用意されず、一部を除いて廃止あるいは代替APIに吸収されている[11][12]
静止画

Windows Imaging Component (WIC)

動画・音声

Video for Windows、Media Control Interface(英語版) (MCI) やWinMMなどのWindowsマルチメディアAPI[13]

DirectShow

Media Foundation

Core Audio

OpenGL
WGL
(英語版)
OpenGLとWindows (GDI) との連携部分を担当するAPIである。各関数名は接頭辞wglで始まり、<wingdi.h>で宣言されている。なお、Windows SDKに付属するOpenGLヘッダーおよびライブラリにはOpenGL 1.1までの関数しか定義されておらず、したがってOpenGL 1.2以降の機能を使うためには、Khronosから最新のOpenGLヘッダーをダウンロードしたのち、WGLのwglGetProcAddress()関数を用いてハードウェアベンダーが提供するOpenGL ICD (Installable Client Driver) の関数エントリポイントをアプリケーション実行時に取得するなどの作業が必要となる[14]
ネットワーク・インターネット

Winsock

NetBIOS

MSRPC

Trident: IEコンポーネント (MSHTML)

MSXML(英語版)

WinINet

Windows HTTP Services (WinHTTP)[15]

コンポーネント技術

Component Object Model (COM)

Microsoft Transaction Server (MTS), Distributed Component Object Model (DCOM)

Object Linking and Embedding (OLE), ActiveX, OLEオートメーション

ネイティブAPI

ネイティブAPIは、Windows NT系においてWindows APIより下位層のAPIである。NT系では、NTネイティブAPI上にサブシステムとしてWin32 APIが実装されている。ただし、DirectXやGDIなどは、ネイティブAPIを介さず、より下位に位置するカーネルと直接やり取りを行う。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:51 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef