Windows API
Windows API(ウィンドウズ エーピーアイ)とは、Microsoft Windowsのシステムコール
64ビットプロセッサ
概要
Windowsオペレーティングシステム (OS)
Windows APIに
分類
Windows APIの
- Kernel
- ファイルシステム、デバイス、プロセス、スレッド、レジストリ、
例外 処理 など基盤 となる機能 - User
- ウィンドウの
処理 、ボタンやスクロールバーなどといった基本 的 なコントロール、マウス・キーボード入力 、その他 グラフィカルユーザーインターフェイス (GUI) に関 わる機能 。 - GDI
- ディスプレイ・プリンタをはじめとした
出力 装置 への描画 機能
- Administration and Management
- Diagnostics
- Graphics and Multimedia
- Networking
- Security
- System Services
- Windows User Interface
なお、この
グラフィックとマルチメディア
DirectX
マイクロソフトはWindows 95/Windows NT 4
- 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 360やXbox OneのコントローラーをWindows
上 で使 えるようにするAPI。 - DirectPlay
- ネットワークなどを
介 した通信 。 - DirectShow
汎用 的 なマルチメディアパイプラインシステム。
DirectX APIはWindows APIの
静止 画
動画 ・音声
- 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]。
ネットワーク・インターネット
コンポーネント技術
- Component Object Model (COM)
- Microsoft Transaction Server (MTS), Distributed Component Object Model (DCOM)
- Object Linking and Embedding (OLE), ActiveX, OLEオートメーション
ネイティブAPI
ネイティブAPIは、Windows NT
.NET Frameworkとの関係
Windowsで
かつて、「Windows Vista
実装
Windows APIは
Win16
Win16は、16ビットプログラム
- Windows 1.0からWindows 3.1までおよびWindows 95/98/Me(9x
系 )の実装 。 - WOW (Windows on Windows): Windows NTによるWin16サブシステムによる
実装 。
Win32
Win32は、32ビットプログラム
- Win32
狭義 のWin32は、NT系 の実装 を指 す。- Win32c
- 9x
系 の実装 。'c'は「compatibility」(互換 )の頭文字 である。しかし、現在 [いつ?]では9xの実装 も区別 なくWin32と呼 ぶ[19]。 - Win32s
- Windows 3.1
用 の実装 。's'は「subset」(サブセット)の頭文字 である。Windows 3.1には搭載 されておらず、別途 入手 ・インストールする必要 がある。 - Win32 for Windows CE[20]
- Windows CEの
実装 。文字 コードにUnicodeのみを使用 するなどの点 が特徴 的 である。 - WOW64 (Windows on Windows 64)
- Win64
上 でWin32をエミュレーションするサブシステムによる実装 。
Windows NTがx86
Win64
Win64は、64ビットプログラム
かつてWindows Server 2003およびWindows XPにてIA-64のサポートが
マイクロソフト以外 による実装
Windows APIの
WindowsランタイムAPI
WindowsランタイムAPI (WinRT API) は、Windows 8で
詳細
Unicode対応
Win 9x | Win NT | Win CE | |
---|---|---|---|
A | Yes | Yes | No |
W | Yes | Yes |
Windows NT
UNICODE
の
#ifdef UNICODE
#define MessageBox MessageBoxW
#else
#define MessageBox MessageBoxA
#endif
さらに、UNICODE
の
#ifdef UNICODE
#define TEXT(s) L ## s
typedef WCHAR TCHAR;
#else
#define TEXT(s) s
typedef CHAR TCHAR;
#endif
これらを
#include <windows.h>
#include <tchar.h> // WinMain と wWinMain を切 り替 える _tWinMain などが定義 されている。
int WINAPI _tWinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPTSTR lpszCommandLine, int nCmdShow)
{
MessageBox(NULL, TEXT("Hello, world"), TEXT("App"), MB_OK);
return 0;
}
なお、Windows NT
このプレフィックスのAはANSI、WはWideを
なお、Windows 9x
歴史
Windows APIの
Windows APIの
なお、
互換 性
Windows APIはシステム
批判
Windows APIはWin16を
Windows 8で
ラッパーライブラリ
Windows APIは
マイクロソフト
- Microsoft Foundation Class (MFC)
- C++クラスによるWindows APIのラッパー。
- Active Template Library (ATL)
- C++テンプレートによるCOMのラッパー。
- Windows Template Library (WTL)
- ATLの
拡張 として作 られた軽量 のWindows APIのラッパー。現在 [いつ?]はCPLに基 づくオープンソースとなっている。
ボーランド
- Object Windows Library (OWL)
- MFCと
同 時期 に公開 され、よりオブジェクト指向 に作 られたラッパー。 - Visual Component Library (VCL)
- ボーランドがその
後 に開発 したDelphiによるラッパー。Windows Formsのベースにもなった。
.NET FrameworkやWindowsSystem.Windows
Microsoft.Win32
脚注
- ^ Windows API index - Win32 apps | Microsoft Docs
- ^ __stdcall | Microsoft Docs
- ^ x64の
場合 は__fastcallが採用 されている。 - ^ チャールズ・ペゾルド『プログラミングWindows
第 5版 』 〈上 〉、アスキー、2000年 10月 。ISBN 978-4756136008。 - ^ ASCII.jp:MinWinとVirtual DLLで
変 わるWindowsカーネル (1/2)|あなたの知 らないWindows - ^ ASCII.jp:ARM
版 Windows 8実現 の布石 となったWindows 7の「MinWin」 (3/4)|基礎 から覚 える最新 OSのアーキテクチャー - ^ “Overview of the Windows API” (
英語 ) (2009年 5月 7日 ). 2009年 7月 8日 閲覧 。 - ^ a b DirectX 8.0 の
紹介 | Microsoft Docs - ^ Getting started with DirectX Graphics - Win32 apps | Microsoft Docs
- ^ オーディオのリファレンス | Microsoft Docs
- ^ DirectX に
関 してよく寄 せられる質問 | Microsoft Docs - ^ DirectX Frequently Asked Questions - Win32 apps | Microsoft Docs
- ^ Windows Multimedia - Win32 apps | Microsoft Docs
- ^ OpenGL - Win32 apps | Microsoft Docs
- ^ Windows HTTP Services - Win32 apps | Microsoft Learn
- ^
本田 雅一 の「週刊 モバイル通信 」 - ^ Windows Vistaとは
何 か?(3/3) - @IT - ^ Petzold, Charles
著 、株式会社 ロングテール/長尾 高弘 訳 『プログラミングWindows』 〈上 〉(第 5版 )、アスキー、2000年 10月 、33頁 。ISBN 978-4756136008。 - ^ Petzold, Charles
著 、株式会社 ロングテール/長尾 高弘 訳 『プログラミングWindows』 〈上 〉(第 5版 )、アスキー、2000年 10月 、34頁 。ISBN 978-4756136008。 - ^ “Microsoft Announces Visual C++ for Windows CE” (
英語 ). マイクロソフト (1997年 4月 1日 ). 2009年 1月 30日 閲覧 。 - ^ “Cross-Platform Application Development in Windows NT” (
英語 ) (2003年 12月1日 ). 2007年 7月 26日 閲覧 。 - ^ “Microsoft Visual C++ 4.0 Cross-Development Edition for Macintosh (Archived Visual C++ Technical Articles)” (
英語 ) (1995年 7月 ). 2007年 7月 26日 閲覧 。 - ^ Microsoft、ARM64
対応 のデスクトップ版 Windows 10を計画 か - エキサイトニュース - ^ マイクロソフト、ARM64
向 けWindowsアプリの開発 と配布 を正式 サポート - CNET Japan - ^ Windows SDK 10にはARM64
用 のインポートライブラリファイルなどが含 まれており、従来 のネイティブデスクトップアプリとUWPアプリを開発 できるようになっている。 - ^ マイクロソフト、「Itanium」チップのサポートを
終了 へ - CNET Japan - ^ デスクトップ アプリで Windows ランタイム API を
呼 び出 す - Windows apps | Microsoft Docs - ^ “Working with Strings (Windows)” (
英語 ). MSDNライブラリ. マイクロソフト (2010年 10月 5日 ). 2011年 8月 27日 閲覧 。 - ^ “Surrogates and Supplementary Characters”. MSDNライブラリ (2009
年 1月 12日 ). 2010年 1月 19日 閲覧 。 - ^ “Windows XP Professional の
多言 語 オプションの比較 ”. TechNetライブラリ. 2010年 1月 19日 閲覧 。 - ^ “Unicode in the Windows API”. MSDNライブラリ (2010
年 1月 12日 ). 2010年 1月 19日 閲覧 。 - ^ Chen, Raymond (2004
年 5月 31日 ). “Why is the default 8-bit codepage called "ANSI"?” (英語 ). The Old New Thing. 2008年 1月 30日 閲覧 。 - ^ “Other Existing Unicode Support” (
英語 ). MSDNライブラリ. 2010年 1月 19日 閲覧 。 - ^ “Microsoft Layer for Unicode Reference” (
英語 ). MSDNライブラリ. 2009年 7月 31日 閲覧 。 - ^ “[WinXP] Common Control 6.0 の EM_LIMITTEXT による
入力 制限 ”. サポート技術 情報 (2009年 9月 16日 ). 2010年 1月 19日 閲覧 。 - ^ Interprocess Communication Between 32-bit and 64-bit Applications - Win32 apps | Microsoft Docs
- ^ Running 32-bit Applications - Win32 apps | Microsoft Docs
- ^ 64bit Windows
時代 到来 :第 3回 アプリケーションの互換 性 (1/3) - @IT - ^ Compatibility and Reliability - Win32 apps | Microsoft Docs
- ^ Windowsの
互換 性 テクノロジの仕組 み(前編 )(1/3) - @IT - ^
塩 田紳 二 . “.NET「本音 」相談 室 (第 1回 )Q3:どうしていま、.NETなのか?”. @IT. 2009年 7月 12日 閲覧 。 - ^ ASCII.jp:UWPからデスクトップアプリに
回帰 すべく、MSが送 り出 した「Project REUNION」 (1/2) - ^ System.Windows Namespace | Microsoft Docs
- ^ Microsoft.Win32 Namespace | Microsoft Docs
関連 項目
- Component Object Model (COM)
- Object Linking and Embedding (OLE)
- Microsoft DirectX
- .NET Framework
- Microsoft Windows SDK
- Windowsランタイム (WinRT)
- Windows UI Library (WinUI)
参考 文献
- Charles Petzold
著 『プログラミングWindows第 5版 〈上 〉』 アスキー、2000年 。ISBN 4756136001 - Charles Petzold
著 『プログラミングWindows第 5版 〈下 〉』 アスキー、2000年 。ISBN 475613601X - Jeffrey Richter
著 『Advanced Windows改訂 第 4版 』 アスキー、2001年 。ISBN 4756138055
外部 リンク
- Windows API index - Win32 apps | Microsoft Docs
- Windows API (Windows) | Microsoft Docs - Windows 7までのAPIドキュメント