コンソールサブシステムはどのように機能しますか?私は、ウィンドウのような高レベルのものは、自動的にプログラムのコンソールウィンドウを作成し、WriteConsoleとReadConsoleで書いたり読んだりできるコンソールウィンドウにハンドルを与えますが、どうすればウィンドウ自体は動作しますか?ウィンドウはGDIを使って文字をコンソールに描画しますか?またはいくつかの隠された内部機能?カーテンの後ろで何が起こるのですか?Windowsコンソールサブシステムはどのように機能しますか?
-2
A
答えて
1
この質問は、あまりにも詳細な方法で実際に答えるにはあまりにも曖昧ですが、私はそれを撃つでしょう。
32ビットのWindowsでのコンソールの少なくとも3つの異なる実装があります。Windowsでの
- MS-DOSボックスがNT4/2000/XP上の95/98/ME
- CSRSS所有コンソールウィンドウ/ 2003/Vistaの 7以降
上
ReadFile
とWriteFile
の関数は特別なハックを持ち、コンソールハンドルを与えられたときにコンソールの所有者と通信します( "通常の"ハンドルのようにカーネルを呼び出すのではなく)。 コンソールウィンドウは通常のHWNDで、ほとんどの部分が通常のGDIを使用します。
旧式のコンソールは、おそらくBIOS/VGAのものを直接使用するネイティブのハードウェアフルスクリーンモードもサポートしています。ウィンドウモードでは私はそれが文書化されていないGdiConsoleTextOut
関数を使用していると信じています。 CSRSSはコアプロセスなので、より高度なDLLのロードを避けるために文書化されていないNT関数を呼び出すかもしれませんが、実際の描画コードについては特別なことは何もありません。
新しいバージョンのWindowsでは、DWMが原因でフルスクリーンモードが削除され、特権のないプロセス(ConHost.exe)がCSRSSに対してshatter attacksを防ぐためのコンソールウィンドウを所有しています。 ConHost.exeはPolyTextOutW
をインポートするので、それをテキストの描画に使用していると仮定します。
NTコンソールでは、文書化されていないビットマップグラフィックスモードもサポートされています。また、プレーンGDIも使用すると想定しています。
これはもちろん文書化されていない実装の詳細であり、いつでも変更することができます。あなたが公式の文書に最も近いのはおそらくthis blog postで、使用されているIPC方法が文書化されていないLPCの特徴であることが明らかになっています。
関連する問題
- 1. Windows NT ACLはどのように機能しますか?
- 2. logstash kv {}機能はどのように機能しますか?
- 3. WatchKit:ディクテーション機能はどのように機能しますか?
- 4. 機能はどのように機能しますか?
- 5. Windows PCのChrome Setup.exeはどのように機能しますか?
- 6. Windows Phoneアプリの向きはどのように機能しますか?
- 7. Windows Phoneソケットゲームはどのように機能しますか?ブルートゥース? XBOX LIVE API?
- 8. $ watchのコール機能は一度にどのように機能しますか?
- 9. array_udiff()、array_uintersect()などはどのように機能しますか?
- 10. OpenLayers.Control.Scale.template - それはどのように機能し、全く機能しますか?
- 11. マップ機能はReact.jsではどのように機能しますか?
- 12. Schemeではコレクタ機能はどのように機能しますか?
- 13. dropbox.comの複数のファイルアップロード機能はどのように機能しますか?
- 14. JQueryのdatepickerのポップアップ機能はどのように機能しますか?
- 15. この機能割り当てはどのように機能しますか?
- 16. セッターテンプレートのライブライブテンプレート機能はどのように機能しますか?
- 17. Facebookのリンク機能はどのように機能しますか?
- 18. このソート機能はどのように機能しますか?
- 19. Solrのスケール機能はどのように機能しますか?
- 20. この単語置換機能はどのように機能しますか?
- 21. この機能はどのように機能しますか? char * getname(); C++
- 22. ソケットioの発光機能はどのように機能しますか?
- 23. 豚の置換機能はどのように機能しますか?
- 24. Readerモナドの「質問」機能はどのように機能しますか?
- 25. 機能の削減はどのように機能しますか?
- 26. jqueryのshow/hide機能はどのように機能しますか?
- 27. Pythonの "all"機能はどのように機能しますか?
- 28. このトランスポーズ機能はどのように機能しますか?
- 29. Aureliaの機能とルーティングはどのように機能しますか?
- 30. Safariのリーダー機能はどのように機能しますか?
あなたが求めている質問は、マイクロソフトからのみ回答できます。閉鎖されたシステムなので、人々は何が起こっているかだけ推測することができます。 –
@EmettSpeerはい、しかし、ここでは「マイクロソフトが答えてくれるだけのものは何か」というように、「何がハンドルですか?ここで答えられた、なぜdownvote? –
質問は大きく、そのプロジェクトで作業していない人は答えられません。私もあなたの質問をdownvoteしませんでしたが、その可能性が高いので、あなたの質問に大きな。 –