記事では、特定の DLL が他の DLL よりも先にアンロードされる問題を調査し、コンテキスト上の手がかりから CcNamespace.dll がそのグループの「首謀者」であると特定した経緯を解説しています。デバッグやログ分析による間接的な証拠の積み重ねが、原因の特定に繋がった事例です。
devblogs-microsoft-com-oldnewthing
devblogs-microsoft-com-oldnewthing から 30 件
一度 FILE_FLAG_DELETE_ON_CLOSE フラグを指定してファイルを開くと、後から「やっぱり削除したくない」と変更することはできない。しかし、別の方法で目的を達成できる。
Windows 95では、特定のプログラムがセットアップ(インストーラ)であるかどうかをヒューリスティック(経験則)に基づいて判断していました。これにより、セットアップ実行時にファイルのバージョン管理やシステムの変更などを適切に処理できるようになっていました。
制御フローガード(Control Flow Guard)には、検証と関数呼び出しを1つのパッケージにまとめた「複合検証+呼び出し」という別の種類のチェックが存在する。これにより、セキュリティチェックと実際の呼び出しを効率的に統合する方法が解説されている。
アンロードされたサードパーティ製DLLからスレッドが実行されてしまう問題について解説。意図せずDLLがアンロードされた後もコードが実行され続けるケースを取り上げ、その原因と対処法を説明する。
Raymond Chenのブログ「The Old New Thing」が2026年の年央に達したことを記念し、これまでに蓄積したリンクを整理・紹介する記事です。前半戦を乗り切った節目として、関連リソースへのリンクをまとめています。
本記事では、管理者設定の変更が、まるで気密ハッチの反対側にいるかのように複雑で困難な状況に陥ることを解説しています。内部からドアを開錠するという比喩を通じて、システム管理における権限の壁とその回避策について、ユーモアを交えながら詳しく説明しています。
データを隠す不正な場所を見つける話。本記事では、Windowsウィンドウクラスのエクストラバイトを本来の用途以外で使用する互換性上の問題について解説しています。
プレフィックスによって意図された使用方法がコード化されている。本記事では、Windowsプラットフォームにおけるウィンドウとクラスのエクストラバイトの進化について解説する。
2つのバグが連鎖して、DLLが正式にアンロードされていないにもかかわらずメモリ上から消えてしまうという不可解な問題を解説。パート2では、その原因となった2つのバグの相互作用について詳しく掘り下げる。
Windows Runtime におけるアクティビティのキャンセルは、要求しても確認を待たずに非同期で実行される動作について解説しています。キャンセル要求が即座に完了しない点を理解し、正しい非同期パターンで処理する必要があることを説明しています。
DLLが正式にアンロードされていないのに、メモリ上から消えてしまう現象の原因を探るブログ記事。デバッグの過程で明らかになる、メモリ管理やDLLのライフサイクルに関する意外な落とし穴について解説する。
レイモンドが海南鶏飯(ハイナンチキン)について自身の率直な見解を述べている。繊細な味わいが特徴のこの料理に対する、彼ならではの「辛口評価」に注目。
マイクロソフト社内用語「エスクロー(escrow)」と「リリース候補(release candidate)」は実質的に同じ概念だが、名称の違いは心理的なトリックである。エスクローという言葉を使うことで、関係者に「まだ最終決定ではない」という慎重な姿勢を促し、プレッシャーを軽減する効果があると解説する。
Wordから始まり、ほぼすべてのワードプロセッサ、さらにはワードプロセッサ以外のものにも広がった、単語の下に赤や緑の波線を引くこの機能の開発者を追悼する記事。
この記事は、HMODULE(モジュールハンドル)の最下位ビット(bottom bit)が設定されている特別なケースについて解説しています。通常のモジュールハンドルとは異なり、特定の条件下でこのビットがフラグとして使用される仕組みとその意味を、Windowsプログラミングの文脈で説明しています。
GetLastInputInfo() は偽装 (impersonation) を考慮しません。その動作は「そのままの内容」で、偽装されたユーザーではなく、呼び出し元スレッドの実際のユーザーに関する最終入力情報を返します。
本記事では、Windowsのスタック制限チェックの回顧に関するフォローアップとして、目的のスタック割り当てサイズを渡すために使用するレジスタの選択について解説する。
WM_COPYDATAメッセージは、Windows 3.1に後付けで追加できるよう、意図的にシンプルに設計されていた。この記事では、その設計思想と実装の容易さについて解説している。
gccのコンパイラが使用する単方向ローテーションアルゴリズムについて、新たな驚くべき発見があった。従来の理解を覆すこの発見により、ローテーション操作の実装におけるgccの振る舞いが再評価される。詳細はブログ記事を参照。
本記事では、最小ステップ数で配列をローテーションする手法として、巡回分解(サイクル分解)を用いる方法を解説する。特に、clangのlibcxxライブラリでの実装に焦点を当て、効率的な要素の移動アルゴリズムを紹介する。
数学は難しい。だから数えよう!この記事では、配列のローテーション操作において、サイクル分解を行う際に最大公約数(gcd)を計算する必要をなくす方法について解説する。従来の手法ではサイクル数を求めるためにgcdの計算が必要だったが、別のアプローチによってそれを回避できることを示す。
本記事では、Bjarne Stroustrup著『C++:プログラミング言語』の裏表紙に書かれた内容が、表表紙だけでは解決しない新たな疑問を読者に投げかけている点を指摘する。著者はこの現象をユーモアを交えて紹介し、技術書のカバーデザインが時に予想外の興味を引くことを示唆している。
ブロックシャッフルを3つ以上の任意のブロック数に一般化する方法について解説する。これまで3ブロックに限定されていたシャッフル手法を拡張し、より柔軟なローテーション処理を実現する。
かつてマイクロソフトの社内パーティーで、全員が名札を交換し合う遊びが行われた。上司までもがこの催しに参加し、盛り上がったエピソードが紹介されている。
ClipCursor関数とは逆に、カーソルを特定の領域から除外する機能は標準では存在しない。しかし、仮想的に除外することで同様の効果を実現できる。
ルールを破ろうとするとき、そのルールがなぜ存在するのかを理解することの重要性について論じている。技術的には「自分はやっていない」と言い訳したくなる状況でも、ルールの背景にある意図を考えれば、安易な回避が必ずしも正しいとは限らないという洞察を示す。
スレッドプールは本来スループット向けに設計されており、レイテンシには最適化されていない。この記事では、スレッドプールで低レイテンシが求められるワークをスケジュールする方法について解説する。
ソフトウェアエンジニアの目に「有害」と映るコードがあった。x86エミュレータの開発チームは、エミュレーション中にそのコードを直接修正するほど酷いと判断したという逸話を紹介する。
複数のコルーチンが1つの非同期操作(IAsyncOperation)の結果を共有する方法について解説。各コルーチンが順番待ちで結果を取得できる実装アプローチを紹介する。