# Win32API

Win32API に関するメモ

## iniファイル

Windows 2000(NT3?) ごろに Unicode 対応版WritePrivateProfileStringW() 等が実装されたと思われます。

iniファイルの文字コードやUnicode/ANSIを混在して使用していた場合のド キュメントは見当たらないため動作をまとめました。最近のWindows(少なく ともWindows 10,11)では、Unicodeに対応するため次のような動作となって います。

- ファイルの先頭にUTF-16LE BOM(0xff 0xfe)がついているとき、iniファイルはUnicodeのファイルとして扱われます。
- ANSI/Unicode APIでUnicode/非Unicode iniファイルを読み書きしたとき自動でACP/Unicode変換が行わます(9x系では行われません)。

- Unicode iniファイルのとき、Unicodeとして読み書きします。
- Unicode iniファイルではないとき、日本語環境ではShift_JIS(ACP)として読み書きします。
- このためiniファイルの文字コードによらず透過的にAPIを利用できます。
- 非Unicode iniファイルにShift_JISで表現できないUnicode文字を書き込むと"?"に置換されて書き込まれます。

- Unicode API で最初にファイルを作成するとき、Unicode iniファイルになりません。
- BOMだけの空ファイルを作ってから書き込むとUnicode iniファイルとして扱えます。