Windows API
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Windows API(うぃんどうず えいぴいあい)とは、Microsoft WindowsのAPIのことである。特に32ビットプロセッサで動作するWindows 95以降やWindows NTで利用できるものはWin32 APIと呼ばれる。また、それらのWindowsにおけるWin32 APIの実装をWin32と呼ぶ。Windows NT系では、NTネイティブAPI上にサブシステムとしてWin32 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をラップした部分が存在する。
[編集] その他
Win32 APIは、Windows Vista以降でWinFX(.NET Framework 3.0)にネイティブAPIの立場を譲る予定であったが、途中で変更されWindows Vistaでは従来通りWin32 APIがネイティブAPIとされた。
[編集] 実装
[編集] MicrosoftのWindowsにおける実装
Windows APIは名前からも類推できるとおり、主にMicrosoft Windowsに実装されている。その実装はWindowsのバージョン毎に少なからず違いが存在する。たとえばWin32の場合、Win32c, Win32sではごく一部を除きUnicodeに対応していない、セキュリティ対策のアクセス制限が実装されていないなどといった違いが挙げられる。そしてそれは大きく次のように分類することができる。
[編集] Win16
Win16は、16ビットプログラム用の実装である。ただし、Win16という語自体はWin32が登場してから用いられるようになった語である[要出典]。Win16は大きく2種類に分けられる。
- Windows 1.0からWindows 3.1までおよびWindows 95/98/Me (9x系)の実装。
- WOW (Win16 on Win32) - Windows NTによるWin16サブシステムによる実装。
[編集] Win32
Win32は、32ビットプログラム用の実装である。次のように分けられる。
- Win32
- 狭義のWin32は、NT系の実装を指す。
- Win32c
- 9x系の実装。'c'は「compatibility」(互換)の頭文字である。
- Win32s
- Windows 3.1用の実装。's'は「subset」(サブセット)の頭文字である。Windows 3.1には搭載されておらず、別途入手・インストールする必要がある。
- Win32 for Windows CE
- Windows CEの実装。文字コードにUnicodeのみを使用するなどの点が特徴的である。
- WOW64 (Windows on Windows 64)
- Win64上でWin32をエミュレーションするサブシステムによる実装。
Windows NTがx86以外のアーキテクチャに移植されたのに伴い、Win32は各種アーキテクチャ向けに移植されている[2]。また、Windows NTではないが、かつてMacintosh用のWin32も存在し、Microsoft Visual C++ 4.0 Cross-Development Edition for Macintoshとしてクロスコンパイラとともに発売されていた[3]。これらアーキテクチャの異なるWin32の間にはソースコード上での互換性がある。
[編集] Win64
Win64は、64ビットプログラム用の実装である。現在、IA-64及びx64用の2種類の実装が存在する。
[編集] その他の実装
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.
- ^ "Cross-Platform Application Development in Windows NT (英語)" 2003-12-01. 2007年7月26日閲覧.
- ^ "Microsoft Visual C++ 4.0 Cross-Development Edition for Macintosh (Archived Visual C++ Technical Articles) (英語)" 1995-07. 2007年7月26日閲覧.
[編集] 関連項目
[編集] 参考文献
- Charles Petzold著 『プログラミングWindows第5版〈上〉』 アスキー、2000年。ISBN 4756136001
- Charles Petzold著 『プログラミングWindows第5版〈下〉』 アスキー、2000年。ISBN 475613601X
- Jeffrey Richter著 『Advanced Windows 改訂第4版』 アスキー、2001年。ISBN 4756138055