現在では、これだけに留まらず、多数のDLLから無数の機能が公開されている。現在、マイクロソフトのドキュメントでは次のように分類している[4]。Multimediaに属する。4以降、全てのWindowsにDirectXを用意している。GraphicsがGDIに代わってOSのグラフィックス描画の基盤として昇格されている。Oneと共通になっている。グラフィックスアクセラレータの操作。グラフィックスアクセラレータの操作。8.0以降、DirectDrawの機能はDirect3Dに吸収された。11以降はDXGI/Direct3D/Direct2D/DirectWrite/DirectCompositionの総称となっている[6]。Graphicsから比較的変化の緩やかな部分はDXGIとしてDirect3Dから分離された。Direct2DDirect3D上に構築された高レベル2D描画用API。GDI+の置き換えとなる。DirectWriteテキストおよびフォント/フォントグリフを扱う。DirectSound低水準なハードウェア(主にサウンドカード)への操作。DirectMusic(英語版)DirectSoundの上位に位置し、音楽(メディアファイルの再生など)を扱う。9以降はX3DAudio/XAudio2/XACT/DirectSoundなどの総称となっている[8]。DirectInputジョイパッドやゲームパッドからの入力、およびフォースフィードバックを扱う。360コントローラーをWindows上で使えるようにするAPI。DirectPlay(英語版)ネットワークなどを介した通信。DirectShow汎用的なマルチメディアパイプラインシステム。Vista以降完全な互換機能が用意されず、一部を除いて廃止あるいは代替APIに吸収されている[9]。AudioOpenGL[編集]WGL(英語版)OpenGLとWindowsとの連携部分を担当するAPIである。関数エントリポイントを取得するなどの作業が必要となる[12]。APIより下位層のAPIである。APIが実装されている。DirectXやGDIなどは、ネイティブAPIを介せずに、より下位に位置するカーネルと直接やり取りを行う。APIを用いて実装されている。APIとの相互運用性も確保されている。APIがネイティブなAPIとなっている。Windowsに実装されている。その実装はWindowsのバージョン毎に少なからず違いが存在する。Win32の場合、Win32c、Win32sではごく一部を除きUnicodeに対応していない、セキュリティ対策のアクセス制限が実装されていないなどといった違いが挙げられる。それは大きく次のように分類することができる。Win16[編集]Win16は、16ビットプログラム用の実装である。Win16という語自体はWin32が登場してから用いられるようになったレトロニムである[13]。Win16は大きく2種類に分けられる。95/98/Me(9x系)の実装。NTによるWin16サブシステムによる実装。Win32[編集]Win32は、32ビットプログラム用の実装である。次のように分けられる。Win32狭義のWin32は、NT系の実装を指す。Win32c9x系の実装。'c'は「compatibility」(互換)の頭文字である。現在[いつ?]では9xの実装も区別なくWin32と呼ぶ[14]。's'は「subset」(サブセット)の頭文字である。3.1には搭載されておらず、別途入手・インストールする必要がある。文字コードにUnicodeのみを使用するなどの点が特徴的である。64)Win64上でWin32をエミュレーションするサブシステムによる実装。NTがx86以外のアーキテクチャに移植されたことに伴い、Win32は各種アーキテクチャ向けに移植されている[16]。Macintoshとしてクロスコンパイラとともに発売されていた[17]。これらアーキテクチャの異なるWin32の間にはソースコード上での互換性がある。Win64[編集]Win64は、64ビットプログラム用の実装である。現在[いつ?]、IA-64及びx64用の2種類の実装が存在する。開発するためのCOM拡張による高レベルAPI。アプリケーションの開発におけるベースAPIにもなっている。APIの実装が存在する。APIから同じAPIに対してマルチバイト文字版とUnicode版の2つを用意し、C/C++のマクロを駆使してコンパイル時にどちらを使うか選択できる仕組みが採用されている[20]。2000から正式にUTF-16が用いられている[21]。どちらを与えることもできるように、2つの関数・構造体などが準備されている。その場合、マルチバイト文字列を与えるべき関数・構造体は末尾に「A」を付け、ワイド文字列を与えるべき関数・構造体は末尾に「W」を付けて区別している。Win16のMessageBox関数に対して、Win32ではMessageBoxAとMessageBoxWという2つの関数が用意されている。プリプロセッサ識別子UNICODEの定義の有無によって切り替えが行われる。UNICODEの定義で切り替えるTCHAR型などや、ナロー文字列定数・リテラルとワイド文字列定数・リテラルを切り替えるTEXTマクロが存在する。TCHAR;#endifこれらを適切に用いると、1つのソースコードからコンパイル時のオプションによってマルチバイト文字を用いる実行プログラムとワイド文字を用いる実行プログラムの2種類が作成できる。NT系におけるA版のAPI関数は、Unicodeとの変換を行いW版を呼び出すラッパーとなっている[22]。このプレフィックスのAはANSI、WはWideを意味する[23]。ANSIは、Windowsコードページの一部がANSI規格のドラフトを元にしたことに由来する[24]。C/C++の用語であるが、Windows用のC/C++処理系において、ワイド文字は大抵UCS-2またはUTF-16として実装されている。OLE関係では、Win32ですべてUnicode化され、A/Wの区別が存在しない。9x系では、Unicode版APIは一部しか実装されていない[25]。Unicodeを利用することにより、ほぼすべてのUnicode版APIが使用可能になる[26]。CEでは、逆にUnicode版APIしか実装していない。APIなど新しいAPIでA/Wの2種を用意せずUnicodeを用いるものだけを用意したりするなど、徐々にUnicodeへ傾斜する傾向にある。APIの歴史は、もちろんWindows自体の歴史と切り離せない関係にある。常に、Windowsに新機能が搭載されれば、それをアプリケーションソフトウェアから使用するための新しくAPIが追加され、新しいSDKが公開されることの繰り返しである(もちろん、デバイスドライバーらに対応を迫るものは、DDK/WDKで公開される)。NTに伴うWin32の登場だった。ポインタとハンドルも32ビット化されたこと、Unicodeへの対応が図られたことが大きな変化である。現在[いつ?]は緩やかに64ビットへの移行が進んでいる。Win64では、ポインタおよびハンドルは64ビット化されているが、それ以外では16ビットから32ビットへの移行時のような大きな変化はない。GDIオブジェクトハンドル、そしてミューテックス、セマフォ、ファイルなどの名前付きオブジェクトハンドルを32ビット/64ビットアプリケーション間で共有し、プロセス間通信に利用することができる[28]。APIはWin16を拡張して32ビット、64ビット化されたという歴史がある。そのため度重なる機能の追加により、高度に複雑化しその習得が困難と化しているという問題がある[31]。APIは比較的低水準であるため、高水準なインターフェイスを持たせるための様々なラッパーが数多く存在する。主なものは次のとおり。(ATL)C++テンプレートによるCOMのラッパー。現在[いつ?]はCPLに基づくオープンソースとなっている。(OWL)MFCと同時期に公開され、よりオブジェクト指向に作られたラッパー。(VCL)ボーランドがその後に作ったDelphiによるラッパー。APIをラップした部分が存在する。『プログラミングWindows第5版』〈上〉、アスキー、2000年10月。978-4756136008。2009年7月8日閲覧。ロングテール/長尾高弘訳、アスキー、2000年10月、第5版、33ページ。978-4756136008。2010年1月25日閲覧。ロングテール/長尾高弘訳、アスキー、2000年10月、第5版、34ページ。978-4756136008。2010年1月25日閲覧。2009年1月30日閲覧。2007年7月26日閲覧。2007年7月26日閲覧。10にはARM64用のインポートライブラリファイルなどが含まれている。2011年8月27日閲覧。2010年1月19日閲覧。2010年1月19日閲覧。2010年1月19日閲覧。2008年1月30日閲覧。2010年1月19日閲覧。2009年7月31日閲覧。2010年1月19日閲覧。2009年7月12日閲覧。アスキー、2000年。アスキー、2000年。アスキー、2001年。Libraryこの項目は、コンピュータに関連した書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めています(PJ:コンピュータ/P:コンピュータ)。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。開発者Cookieに関する声明モバイルビュ。