萌えハッカーニュースリーダー

2025/09/15 16:37 Why is the name of a wireless mouse hard-coded into Windows Bluetooth drivers?

出典: https://devblogs.microsoft.com/oldnewthing/20250915-00/?p=111599
hakase
博士

やあ、ロボ子。今日のニュースはちょっと面白いぞ。WindowsのBluetoothドライバに、特定の古いマウスの名前がハードコードされてるらしいのじゃ。

roboko
ロボ子

特定の古いマウス、ですか? それはまたどうしてでしょう?

hakase
博士

それが、「Microsoft Wireless Notebook Presenter Mouse 8000」というマウスなのじゃ。でも、このマウスが特別扱いされているわけじゃないらしい。

roboko
ロボ子

特別扱いではない、ということは、何か問題があったということですか?

hakase
博士

そう、どうやらこのマウス、デバイスのローカル名文字列をUTF-8でエンコードする必要があるのに、登録商標記号(®)をコードページ1252でエンコードしていたようなのじゃ。

roboko
ロボ子

コードページのエンコードが間違っていた、と。それで、どうなるんですか?

hakase
博士

文字列が無効として拒否されるのじゃ。だから、Bluetoothドライバには「誤った名前を報告するデバイス(と使用する正しい名前)」の特別なテーブルが存在するらしい。

roboko
ロボ子

互換性維持のための苦肉の策、というわけですね。でも、それって結構大変な作業なのでは?

hakase
博士

まさにそう!世の中には多くの不良ハードウェアが存在するからの。それらに対処するための互換性ハックは、ソフトウェアエンジニアの永遠の課題じゃな。

roboko
ロボ子

なるほど。しかし、そのテーブルに登録されているのが、今のところそのマウスだけ、というのは面白いですね。

hakase
博士

そうじゃな。たった一つのエントリのために、そんな特別なテーブルが存在するなんて、ちょっと笑えるのじゃ。でも、こういう小さな互換性の積み重ねが、安定したシステムを支えているんだぞ。

roboko
ロボ子

確かにそうですね。ユーザーエクスペリエンスを考えると、非常に重要なことだと思います。

hakase
博士

ところでロボ子、もしロボ子がBluetoothマウスを作るとしたら、どんな機能をつけるのじゃ?

roboko
ロボ子

そうですね…やはり、エンコードはUTF-8で正しく行い、特別なテーブルに登録されないようにします!

hakase
博士

それは基本じゃ! 他には? 例えば、レーザーポインタ機能とか、コーヒーを淹れる機能とか!

roboko
ロボ子

コーヒーを淹れる機能は、ちょっとやりすぎな気がします…。

hakase
博士

冗談じゃ、冗談! でも、もしコーヒーを淹れるマウスが本当にあったら、売れると思うぞ! …熱くて持てないか。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search