VisualStudio 技術解説 – 低レベル

.NETおよびWindowsの低レベルレイヤーの記事を主体に扱っています。

  • CLRや.NET BCLの内層
  • Win32 APIやその内部
  • WDK (Windows Driver)
  • ユーザーモードとカーネルモード

メモリを使用する、とは

physical-full本稿では、Windows(広く一般のOSでも、基礎的な知識としては適合する)の、「メモリ使用量」の取り扱いについてまとめたものです。特に、コードからメモリを使用するとはどういうことなのかがちょっとでも明らかになれば良いかなと思っています。

技術レベル:300~400

メモリを使用する、とは


.NET非同期処理(async-await)と例外の制御

asyncexception6Taskクラスとasync-awaitを使用して非同期処理を記述する場合の、例外にまつわるあれこれをまとめました。カーネルモードから発生する例外的な事象が、どのように.NET非同期例外として伝搬するのかを解説しています。

  • 表面上は殆ど変らない
  • 現実の動作
  • タスクコンテキストとスレッドコンテキスト
  • スタックウォーク
  • 処理されない例外

技術レベル:300~400

.NET非同期処理(async-await)と例外の制御


中華タブX89Winをアレする – 1円にもならない無駄な技術 Advent Calendar 2014

中華タブを買って、クリーンインストールする趣味ネタです。デバイスドライバの抽出コードを書いています。

技術レベル:200

中華タブX89Winをアレする – 1円にもならない無駄な技術 Advent Calendar 2014


Async訪ねて3000里

「Async訪ねて3000里」は、C# 5.0で導入された非同期メソッドのDeep-Diveな記事です。.NET上で非同期メソッドを呼び出してから、Windowsのカーネルモードを経由して、デバイスにI/Oが発行され、結果が非同期で返却される過程を網羅しています。何故、スレッド並列化ではなく、非同期駆動する必要があるのかが読み取ってもらえれば幸いです。

# 注意:本稿は初心者向けではありません

技術レベル:500

目次

Async訪ねて3000里 (1): ユーザーモードのターン
Async訪ねて3000里 (2): ファイルシステム・パーティションマネージャ・物理ディスクデバイスドライバ
Async訪ねて3000里 (3): ハードウェア割り込みとDPC
Async訪ねて3000里 (4): I/Oの完了とAPC
Async訪ねて3000里 (5): TaskCompletionSourceでTaskの継続へ
Async訪ねて3000里 (6): I/O完了ポートによるワーカースレッドの運用


継続飛行

「継続」とは何か、を、自分が経験してきたソフトウェアの知見を元に考えてみるシリーズです(現在連載執筆中)。

技術レベル:200~400

継続飛行 (1) – 原点


Beachhead implements new opcode on CLR JIT

.NET Core 1.0が公開された記念に、coreclrの実装に自分で考えた新しいOpCodeを加える方法について解説しました。.NET Fringe JAPAN 2016にて登壇して発表しました。

技術レベル:500

.NET Fringe JAPAN 2016も絡めた記事はこちら


About .NET Micro Framework in 2017

Center CLRビデオネタです。

「2017年、.NET Micro Frameworkに動きはあったのか? NETMFの開発チームは2015年ごろから動きが鈍くなっていました。しかし、最近になって、NETMFのコードをフォークして移植性を高めようという動きがあります。このようなNETMFの新しい動きについて、ラフに総括してみます」

技術レベル:100


TinyCLR OS (Resurrect .NET Microframework)

Center CLRビデオネタです。

「TinyCLR OSは、従来の環境よりも更に扱いやすくなっています。私たちはTinyCLR OSをどうやって始めれば良いか、デモも交えてディスカッションします」

技術レベル:100

TinyCLR OS

TinyCLR OSのその後ともろもろ


Making archive IL2C

IL2Cをフルスクラッチで設計していくビデオシリーズです。現在進行形です。

Making archive IL2C #6-4で、一番ミニマムなIL2Cが出来ました。まだ非常に限定されたILしかサポートしていませんが、このシリーズでリフレクションの使い方・ILについての洞察・C言語によるソースコードとの整合性・極限までコンパクトなコード生成を行うための考慮点など、非常に雑多でDeepなメタプログラミングの技術を一から紹介します。

技術レベル:300-600

Making archive IL2C – Center CLR YouTube playlist

GitHub IL2C repository


de:code 2019 CM12 – Interoperability of .NET assemblies

de:code 2019

「de:code 2019」のセッション「CM12: .NET Core マルチプラットフォームの本質」に関連した資料ということで、.NETアセンブリファイルの相互運用性についての解説記事を書いたものです。

技術レベル:350-500

記事: de:code 2019 CM12 – Interoperability of .NET assemblies