先週、C# で FTD2XX.DLL FT_GetDeviceInfoList を試したところ、最新のドライバ(2.12.04) とひとつ前のドライバ(2.12.00) と結果が違うと書きました。C++ でドライバを直接使って C# と同様の結果になるか確認。同じ結果なら、C# 用の Wrapper は問題ないということになります。
2014-09-29 2.12.00 WHQL Certified のドライバで動かすと最初のスクリーンショットのようにちゃんと値が帰ってきます。
2015-07-03 2.12.04 WHQL Certified では、serialnumber にゴミが入るのと、Description のところにシリアル番号らしきものが入っています。
FTDI のサイトにあるサンプルコードで FT_GetDeviceInfoList でシリアル番号・デスクリプションを参照する場合は 2014-09-29 2.12.00 WHQL Certified 使ったほうがいいです。
プログラムを動かす時には、
FT_STATUS FT_Open (int iDevice, FT_HANDLE *ftHandle)
FT_STATUS FT_OpenEx (PVOID pvArg1, DWORD dwFlags, FT_HANDLE *ftHandle)
のどちらかでオープンしますが、写真のように複数デバイスを接続したときの FT_GetDeviceInfoList の結果は次のスクリーンショットのようになりました。
2014-09-29 2.12.00 WHQL Certified ならシリアル番号などはハッキリわかるので、デバイス選択するときに間違いが減ると思います。ドライバのバージョンに気をつければ C++, C# どちらでも開発出来るというはわかりました。次余裕あれば、Raspberry Pi + FTD2XX ドライバ + python で動くかやってみたいと思います。(頒布物がらみの調べものに移行するかも)