C#でOutputDebugString()をキャプチャする

C#でOutputDebugStringをキャプチャするコードを書いたので置いておきます。
SysinternalsのDebugViewのコア機能をC#で書き直した形です。

github.com

 

普段はDebugViewやVisual Studioをアタッチしているのですが、DebugViewよりも使いやすいUIを構築したかったり、コマンドラインツールに組み込みたかったりしたので用意しました。

あと、コードは.NET 6で書きましたが.NET Framework 4.6を使っているプロジェクトでもnullable関連を数か所書き換えればコンパイルできます。

Swiss Tablesはどれくらい速いのか

気になるので調べる。
この記事は調べた結果を書くまではプレースホルダ

 

abseilはGoogle内製のC++ライブラリ群で、Swiss Tablesはハッシュテーブルの実装。
衝突管理はオープンアドレス法。

 

CppConでの発表動画が残っている。
ブログ記事を読むことでも理解できるけど、まずは全体の設計思想や解こうとしている問題について動画で観るのがいいと思う。

www.youtube.com

 

abseil.io

 

abseil.io

2022年にMac mini (mid 2011)へWindows 10をインストールした記録

個人的メモ。

インストールする環境

ハードウェア

Mac mini (mid 2011)にはいくつかのモデルがあるが、試したのはこれ。

CPU: Intel Core i5 2520M
GPU: Radeon HD 6630M (見かけ上無効化されているが、Intel HD Graphics 3000もある)

macOS

High Sierraだったが、Boot campアシスタントは使わなかった。
そして、今回はmacOSは削除することにした。

Windows

Windows 10 Pro 20H2

前準備

WindowsのISOイメージ入手とUSB起動ディスクの作成

2022年2月現在、20H2のISOファイルはMicrosoftのサイトから直接ダウンロードできないため、Rufusを使って入手する。

Rufusが生成するリンクはMicrosoftサーバー上のものなので安心。
ダウンロードしたISOはRufusUSBメモリに書き込んでおく。

Boot camp Support Software (ドライバ)

Google検索すると「5.1.5621」を紹介しているサイトが引っかかるが、igdkmd64.sysがsystem_thread_exception_not_handledでブルースクリーンを連発してしまった。

いろいろ試したところ、うちのハードウェア構成だと正常に動くのは「5.0.5033」だった。

Boot Camp Support Software 5.0.5033 (日本)

 

ダウンロードしたzipを展開し、内容物をUSB起動ディスクのドライブ直下に配置する。
これを行っておくと、Windowsのインストール時にインストーラーが自動的に走る。

f:id:in_code_i_trust:20220314003002p:plain

Mac miniのブートメニューを呼び出す方法の確認

Mac mini (mid 2011)の場合、Altキーを効かせるためにはヘッドホン端子に一番近いUSB端子にキーボードを接続する必要があった。USBハブなどは経由させず、ほかのUSBポートには何も挿さないこと。

参考リンク: How do I get into boot options with a non-mac keyboard? - Ask Different

 

インストール手順

詳細は割愛。

ブートメニュー経由でUSB起動ディスクからWindowsのインストールを始める。


パーティション選択画面では(macOSが入っているものを含めた)すべてのパーティションを削除し、全領域に対してボリュームを作成。
macOSを生かしておきたい場合は、macOSを起動してディスクユーティリティからFATのパーティションを作成しておき、インストール時にそのパーティションを指定すればよい

 

Windowsの初回ログイン時にBoot campインストーラーが起動してくるのでインストールを進める。再起動を促されたら再起動する。

 

Windows Update画面から20H2のアップデートを開始。

 

動かないもの

サウンドバイス(適当なデバイスドライバがない)

Radeon HD 6630M(デバイスが動作を停止してしまうのでドライバインストールに失敗する。はんだクラック現象を踏んでいる個体かもしれない)

 

適用してはいけないアップデート

Windows Update経由のIntel HD Graphics 3000ドライバ更新(Windowsが再起動ループに陥ってしまう)
詳しいやり方は「Windows Update からドライバーを除外する」でググる

 

Re: Re: Re: Re: Re: Re: Re: Re: Re: PCが突然再起動される現象に悩んでいた話

Ryzen 9でWHEA-LoggerのCache hierarchy errorが出ちゃう件。

 

前回の記事Ryzen Masterをアンインストールしたけど、やっぱり関係なかった。
今日やったことを書いておく。
本当に返品してみようか。手続きが面倒だなぁ。

 

AMD Radeon Softwareをダウンロードして、チップセットドライバなどを更新した。

www.amd.com

 

ちなみに、今のAI Suite3の設定画面はこんな感じ。

f:id:in_code_i_trust:20220214220037p:plain

 

それと、cpuinfoはこれ。

f:id:in_code_i_trust:20220214222748p:plain

 

Re: Re: Re: Re: Re: Re: Re: Re: PCが突然再起動される現象に悩んでいた話

Ryzen 9 5900Xのマシンが不調な話です。

前回の記事で電圧を盛って様子見する話をしましたが、ダメでした。
ある程度負荷をかけた状態でPCをつけっぱなしにして外出し、帰ってきたら再起動していました。
イベントビューアーを見たらWHEA-LoggerのCache Hierarchy Errorが。

f:id:in_code_i_trust:20220105211338p:plain

WHEA-Logger

 

ただ、今までと違うのはエラーが立て続けに起こっていることです。
WHEA-Loggerの一つ下にあるエラーはRyzenMasterDriverV17のものでした。

f:id:in_code_i_trust:20220105211548p:plain

RyzenMasterDriverV17

 

普通に考えれば、まずハードウェア不調が発生してドライバがエラーを出力したのだと思いますが、念のためにRyzenMasterをアンインストールしてみます。

f:id:in_code_i_trust:20220105212043p:plain

f:id:in_code_i_trust:20220105212055p:plain

 

これで良くなるとは思えないけど、そうなるといいなぁ。

Re: Re: Re: Re: Re: Re: Re: PCが突然再起動される現象に悩んでいた話

 前回の記事で解決したと書いたけれど、あれは嘘でした。

BattleField 2042を遊んでいるとPCが急に再起動することがあり、イベントビューアを開いたらWHEAのCache hierarchy errorが記録されていた。
このゲーム以外では全く問題が起こらないので、たぶん何かまずいパターンがまだあるのだと思う。

もうRMAするのが良い気がする(期限切れているかもしれない・・・)

 

 どうやらこちらのブログで紹介されているように、高負荷時の電源制御に問題があるみたい。

CPU LLC は BIOS OC Tweaker メニューの下の方にある Voltage Configuration から変更可能。デフォルトの Auto だと Level5 になっていて、高負荷時の電圧降下 (Vdroop というらしい) への補正が一番弱い設定。

ここのレベルを Level4 にあげてやると安定するようになったので、高負荷状態が続くとCPUへの供給電圧が落ちてリブート、となっていたのではないかと推測。

この現象に遭遇してから電源回りは疑ってマザーボードを別メーカのものに交換したし、駆動電圧を盛ったりもしたけれど、これは知らなかった。これが効くなら朗報。
とりあえず設定して様子見しよう。

 

 ASUS ROG X570-F GamingのBIOS(UEFI)では、Advanced ModeのAi Tweaker > DIGI+ VRM > VDDCR CPU Load Line Calibration に設定項目があった。
後述するように、AI Suite 3を使えばWindows上から設定可能。

f:id:in_code_i_trust:20220104031209j:plain

Ai Tweaker

f:id:in_code_i_trust:20220104031244j:plain

DIGI+ VRM

f:id:in_code_i_trust:20220104031314j:plain

VDDCR CPU Load Line Calibration

 とりあえずLevel 4に設定してみたけど、あとでAI Suite 3の存在を思い出して説明文を見たところ、少なくともROG X570-F GamingのデフォルトはLevel 5ではない気がする。Levelの数値が上がるほど電圧ラインが上がっていくため。

f:id:in_code_i_trust:20220104032510p:plain

AI Suite 3