Windows API
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Windows API(うぃんどうず えいぴいあい)とは、Microsoft WindowsのAPIのことである。特に32ビットプロセッサで動作するWindows 95以降やWindows NTで利用できるものはWin32 APIと呼ばれる。また、それらのWindowsにおけるWin32 APIの実装をWin32と呼ぶ。
Win32 APIは、Windows Vista以降でWinFX(.NET Framework 3.0)にネイティブAPIの立場を譲る予定であったが、途中で変更されWindows Vistaでは従来通りWin32 APIがネイティブAPIとされた。
目次 |
[編集] 概要
Windows APIは大きく次のように分類される。
- ベースサービス
- Windowsの基盤となる機能を提供する。ファイルシステム、デバイス、プロセス、スレッド、レジストリ、例外処理などが含まれる。 Win16ではkernel.exe, krnl286.exe, krnl386.exeに、Win32ではkernel32.dll及びadvapi32.dllに実装されている。
- Graphics Device Interface
- ディスプレイ・プリンタをはじめとした出力デバイスへの描画機能を提供する。 Win16ではgdi.exeに、Win32ではgdi32.dllに実装されている。
- ユーザーインターフェイス
- ウィンドウの処理、ボタンやスクロールバーなどといった基本的なコントロール、マウス・キーボード入力、その他GUIに関わる機能を提供する。Win16ではuser.exeに、Win32ではuser32.dllに実装されている。ただしWindows XPから基本的なコントロールはコモンコントロール(後述)と共にcomctl32.dllに含まれている。
- コモンダイアログ
- 「ファイルを開く」や「名前をつけて保存」、「色の選択」や「フォントの選択」などように標準的なダイアログボックスを提供している。Win16ではcommdlg.dllに、Win32ではcomdlg32.dllに実装されている。
- コモンコントロール
- 基本的とは言えないが様々なアプリケーションで使用されるステータスバー、プログレスバー、ツールバー、タブなどといったコントロールを提供している。Win16ではcommctrl.dllに、Win32ではcomctl32.dllに実装されている。
- シェル
- シェルに関する機能やアプリケーションがシェルを拡張するための機能を提供している。Win16ではshell.dllに、Win32ではshell32.dll及びshlwapi.dllに実装されている。
- ネットワークサービス
- ネットワークに関する機能を提供している。下位にはNetBIOS, Winsock, NetDDE, RPCやその他多くの機能が属する。
なお、コモンダイアログ、コモンコントロール、シェルはWindows APIの分類ではユーザーインターフェイスの下位に属している。
[編集] Web関係のAPI
Internet Explorerも有用なAPIを多数公開し、Windows APIの一部として見られるほどである。特にWindows 98からOSと統合したことで、Web関係のAPIを多数提供している。[1].
- 埋め込みWebブラウザコントロール(Trident : IEコンポーネント) (shdocvw.dll, mshtml.dll)
- URLモニカ - URLを通じてのCOMオブジェクト提供 (urlmon.dll)
- 多言語及び国際化対応の補助ライブラリ (mlang.dll)
- DirectX Transforms - イメージフィルタコンポーネント
- XMLサポート (MSXMLコンポーネント)
- Windowsアドレス帳の操作
- WinINet
[編集] マルチメディア関係のAPI
マイクロソフトは、全てのWindowsにDirectXを供給している。DirectXはゲームとマルチメディアのためのAPIである。
- Direct3D OpenGLの置き換えとして3Dグラフィックスアクセラレータの操作。
- DirectDraw 2Dグラフィックスアクセラレータの操作。DirectX 9現在、DirectDrawはDirect3Dに吸収された。
- DirectSound 低水準なハードウェアへの操作。
- DirectInput ジョイパッドやゲームパッドの入力。
- DirectPlay ネットワークなどを介した通信。
- DirectShow 汎用的なマルチメディアパイプラインシステム。
- DirectMusic DirectSoundの上位に位置し、音楽を扱う。
[編集] ラッパーライブラリ
Windows APIは比較的低水準であるため、高水準なインターフェースを持たせるための様々なラッパーが数多く存在する。主なものは次のとおり。
[編集] マイクロソフト
- Microsoft Foundation Class (MFC) - C++クラスによるWindows APIのラッパー。
- Active Template Library (ATL) - テンプレートによるCOMのラッパー。
- Windows Template Library (WTL) - ATLの拡張として作られた軽量のWindows APIのラッパー。現在はCPLに基づくオープンソースとなっている。
[編集] ボーランド
- Object Windows Library (OWL) - MFCと同時期に公開され、よりオブジェクト指向に作られたラッパー。
- Visual Component Library (VCL) - Borlandがその後に作ったDelphiによるラッパー。
.NET FrameworkやJavaにもWindows APIをラップした部分が存在する。
[編集] 実装
[編集] MicrosoftのWindowsにおける実装
Windows APIは名前からも類推できるとおり、主にMicrosoft Windowsに実装されている。その実装はWindowsのバージョン毎に少なからず違いが存在する。たとえばWin32の場合、Win32c, Win32sではごく一部を除きUnicodeに対応していない、セキュリティ対策のアクセス制限が実装されていないなどといった違いが挙げられる。そしてそれは大きく次のように分類することができる。
- Win16 (広義)
- Win16 (狭義)
- Windows 3.xなど16ビットWindowsの実装
- Windows 9x系の実装
- ※両者を区別する言葉は無い。
- WOW (Win16 on Win32)
- Windows NTによるWin16サブシステムによる実装
- Win16 (狭義)
- Win32 (広義)
- Win32 (狭義)
- Windows NT/2000/XP (NT系)の実装。
- Win32c
- Windows 95/98/Me (9x系)の実装。'c'は「compatibility」(互換)の頭文字である。
- Win32s
- Windows 3.1の実装。これを後からインストールするとWindows 3.1でWin32アプリケーションを実行することができる。's'は「subset」(サブセット)の頭文字である。
- Win32 for Windows CE
- Windows CEの実装。文字コードにUnicodeのみを使用するなどの点が特徴的である。
- WOW64 (Windows on Windows 64)
- Win32 (狭義)
- Win64
[編集] その他の実装
Windows APIの仕様はWindows SDKのドキュメントやMSDN ライブラリで公開されているので、Microsoft Windows以外のWindows APIの実装が存在する。
[編集] 批判
Windows APIはWin16を拡張して32ビット、64ビット化されたという歴史がある。そのため度重なる機能の追加により、高度に複雑化しその習得が困難と化しているという問題がある。
[編集] 脚注
- ^ Microsoft Developer Network (January 2006). Programming and reusing the browser Retrieved January 22, 2006.
[編集] 関連項目
[編集] 参考文献
- Charles Petzold著 『プログラミングWindows第5版〈上〉』 アスキー、2000年。ISBN 4756136001
- Charles Petzold著 『プログラミングWindows第5版〈下〉』 アスキー、2000年。ISBN 475613601X
- Jeffrey Richter著 『Advanced Windows 改訂第4版』 アスキー、2001年。ISBN 4756138055