| その他の名前 | Win32 コンソール |
|---|---|
| 開発者 | マイクロソフト |
| リポジトリ | github.com/microsoft/terminal/tree/main/src/host |
| 書かれた | C++ |
| オペレーティング·システム | マイクロソフトウィンドウズ |
| プラットフォーム | IA-32、x86-64、ARM64 |
| タイプ | ターミナルエミュレータ |
| ライセンス | MITライセンス |
| Webサイト | docs.microsoft.com/en-us/windows/console/ |
Windows コンソールは、 Microsoft Windowsのコンソール アプリケーション用のインフラストラクチャです。Windows コンソールのインスタンスには、画面バッファーと入力バッファーがあります。これにより、コンソール アプリケーションをウィンドウ内またはハードウェア テキスト モード(画面全体を占有) で実行できます。ユーザーは、+キーの組み合わせを使用して、この 2 つを切り替えることができます。テキスト モードは、 Windows Vista以降では使用できません。ただし、 Windows 10以降では、ネイティブの全画面モードを使用できます。 Alt↵ Enter
Windows コンソール インスタンスは通常、画像を表示する必要はないが色を使用する可能性があるアプリに使用されます。例としては、cmd.exe、Windows PowerShell、Far Manager、Midnight Commanderなどがあります。
2019年に、コンソールホストはWindowsターミナルとともにMITライセンスの下でオープンソース化されました。[1]
ウィンドウモードと全画面モード


Windows では、コンソール アプリケーションは 2 つのモードで実行できます。
1 つのモードでは、テキストをウィンドウに配置し、オペレーティング システムのフォント レンダリングを使用します。このモードでは、アプリケーションとユーザーのやり取りはウィンドウ システムによって制御されます。これは、 xtermなどのX ウィンドウ システムアプリケーションに似ています。
2 つ目はフルスクリーン モードです。Windows XP以前では、フルスクリーン コンソールはハードウェア テキスト モードを使用し、ビデオ アダプターにラスター フォントをアップロードします。これは、テキストシステム コンソールに似ています。この初期のフルスクリーン モードは、VGA 互換のテキスト モードのみをサポートし、最大文字解像度は 80列x 28 行です。[2]このモードはWindows Vistaでは非推奨になりました。[3] Windows XP ディスプレイ ドライバーをインストールすることでこの問題を回避することができましたが、 [3] Windows 8以降では受け入れられません。[4] Windows 10 では再びフルスクリーン モードが搭載されていますが、この実装ではテキスト モードではなく、ネイティブの Windows レンダリング サブシステムが使用されます。画面に収まる限り多くの列と行を持つことができます。[5]
アプリは、 +キーの組み合わせを使用して 2 つのモードを切り替えることができます。 Alt↵ Enter
詳細
入力バッファは、イベント(キーボード、マウスなどから)が格納されるキューです。出力バッファは、文字とその属性が格納される長方形のグリッドです。コンソールウィンドウには複数の出力バッファがある場合がありますが、特定の瞬間にアクティブ(つまり表示される)になるのはそのうちの1つだけです。アプリは、高レベル関数(やなど)と低レベル関数(やなど)の両方を公開するWindows APIを介してプログラムでWindowsコンソールと対話できます。[6]ReadConsoleWriteConsoleReadConsoleInputWriteConsoleOutput
ユーザーは、システム全体またはアプリレベルで カラーパレットやフォントを変更できます。ただし、コンソール アプリの各インスタンス自体では、カラーパレットやフォントをその場で変更することはできません。
Windows コンソール アプリは、 Windows (特にWindows 9x )上では見た目は変わらないかもしれませんが、MS-DOSアプリとは異なります。Windows コンソール アプリは、 Windows API全体にアクセスでき、MS-DOS または互換オペレーティング システムでは実行されません。ただし、DOS アプリは Windows API にアクセスできず、仮想 DOS マシン(VDM)の助けを借りて 32 ビット バージョンの Windows でのみ実行できます。
実装
Windows 3.1以前では、コンソールのネイティブ サポートはありません。これらのバージョンは MS-DOS のグラフィカル インターフェイスに過ぎないため、以前のバージョンの Windows で実行されたテキスト プログラムのほとんどは、実際にはウィンドウで実行される MS-DOS プログラムでした。アプリケーションを Windows に移植する作業を簡素化するために、 Visual C++の初期バージョンには、通常のウィンドウ内に基本的なコンソール機能を実装するライブラリであるQuickWinが付属しています。Borland C++の同様のライブラリはEasyWin と呼ばれていました。
ウィンドウズ9x

Windows 9x のサポートは、コンソールウィンドウがシステムの仮想 DOS マシンで実行されるため、Win32 コンソール アプリケーションへのキーボード入力は、キーボード割り込みをフックすることによって実際の DOS アプリケーションでも使用される DOS VM で実行される conagent.exeによってコンソール ウィンドウに送信される必要があるため、Windows NT に比べて比較的貧弱です。次に、 Vcond (VxD )をconagent.exe呼び出します。次に、 Vcond はキーボード入力をシステム VM に渡し、最後に Win32 コンソール アプリケーションに渡す必要があります。パフォーマンスの他に、この実装のもう 1 つの問題は、DOS VM に対してローカルなドライブが Win32 コンソール アプリケーションから見えないことです。これにより混乱が生じる可能性があります。
Windows 9x では、画面バッファはVGA テキスト バッファの構造を反映し、文字セルごとに 2 バイトを使用します。1 バイトは文字コード用、1 バイトは属性用です (文字はOEM 文字セットでなければならず、属性は高輝度背景/点滅なし)。これにより、実際の VGA テキスト モードを使用する場合、操作が大幅に高速化されます。
Windows NT および Windows CE

_cmd.exe_Command_Prompt_800x574.png/500px-Microsoft_Windows_CE_Version_3.0_(Build_126)_cmd.exe_Command_Prompt_800x574.png)
従来、クライアント/サーバー ランタイム サブシステム(CSRSS) は、Windows NT ファミリのオペレーティング システム上のコンソール ウィンドウの管理を担当していました。 [7] Windows 7では、CSRSS はconhost.exe各コンソール ウィンドウを管理するために 1 つずつ生成します。Windows 8以降では、コンソール アプリがconhost.exeプロセスを直接生成します。この変更は、セキュリティとユーザビリティの両方に影響します。CSRSS は高度な権限を持つセキュリティ コンテキストで実行されますが、各 CSRSS はコンソール アプリと同じセキュリティ コンテキストで実行されます。さらに、Windows 7 では、この変更により、コンソール ウィンドウにAero Glass テーマconhost.exeの機能が追加されました。[8]
Windows NT およびWindows CEでは、画面バッファは文字セルごとに 4 バイトを使用します。2 バイトは文字コード用、2 バイトは属性用です。文字はその後、16 ビットのUnicodeサブセット( UCS-2 ) でエンコードされます。[9]下位互換性のため、コンソール API には Unicode と非 Unicode の 2 つのバージョンがあります。非 Unicode バージョンの API では、コード ページ切り替えを使用して、表示される文字の範囲を拡張できます (ただし、コンソール ウィンドウにTrueTypeフォントが使用されている場合のみ、使用可能なコードの範囲が拡張されます)。UTF -8も「コード ページ 65001」として使用できます[10] (完全な Unicode の UCS-2 サブセットからのみ表示) [要出典]。
Windows 10の2018年10月のアップデート以降、Windowsコンソールは完全なUnicodeサポートを備えています。[11]
参照
- 端末エミュレータの比較
- コマンドラインインターフェース
- シェル(コンピューティング)
- システムコンソール
- Windowsターミナル
- Linuxコンソール
- テキストベース(コンピューティング)
- 以前のプロプライエタリソフトウェアのリスト
参考文献
- ^ Cinnamon, Kayla (2019 年 5 月 6 日)。「Windows Terminal の紹介」。開発者向け Windows コマンド ライン ツール。Microsoft。2019年5 月 10日閲覧。
- ^ Julio Sanchez、Maria P. Canton (2003)、「VGA Fundamentals, Part II: DOS Graphics」、The PC Graphics Handbook (for C++ Programmers) (書籍)、CRC Press、p. 125、ISBN 0849316782
- ^ ab 「一部の 16 ビット DOS ベース プログラムとコマンド プロンプトは、Windows Vista および Windows 7 では全画面モードで実行されません」。サポート。Microsoft。2011 年 9 月 23 日。
- ^ 「Windows 2000 ディスプレイ ドライバー モデル (XDDM) 用ドライバーの開発ロードマップ」。Windows Dev Center - ハードウェア。Microsoft。2013年 11 月 16 日。2013年12 月 16 日閲覧。XDDMおよび VGA ドライバーは
、Windows 8 以降のバージョンではコンパイルされません。
- ^ Tkachenko, Sergey (2014年11月24日). 「Windows 10でコマンドプロンプトをフルスクリーンで開く」. Winaero . 2019年7月31日閲覧。
- ^ 「コンソール モード」。Windowsコンソールのドキュメント。Microsoft。2020年10 月 13 日に取得– Microsoft Docs 経由。
- ^ マイクロソフト セキュリティ アドバイザリ (930181): Windows クライアント サーバー ランタイム サブシステムに影響を与えるエクスプロイト コードが公開されました
- ^ Yosifovich, Pavel; Ionescu, Alex; Russinovich, Mark E.; Solomon, David A. (2017 年 5 月 15 日)。Windows内部、パート 1: システム アーキテクチャ、プロセス、スレッド、メモリ管理など(第 7 版)。ワシントン州レドモンド: Microsoft Press。p. 67。ISBN 9780735684188。
- ^ 「コンソール リファレンス」。Microsoft。2009 年。2010 年1 月 1 日閲覧。
- ^ 「リリース ノート」。docs.microsoft.com。2022年6 月 27 日。
コンソール: コード ページ 65001 (utf8) で出力テキストが表示されない問題を修正
- ^ Turner, Rich (2018 年 11 月 15 日)。「Windows コマンドライン: Unicode および UTF-8 出力テキスト バッファー」。開発者向け Windows コマンドライン ツール。Microsoft。2019年6 月 14 日閲覧。
外部リンク
- Windows コンソールのドキュメント
- Windows コマンドライン: 背景ブログ
