COMの文字列にはBSTRというデータ型が使われています。 BSTRが定義されているWindows SDKのヘッダーを見てみましょう。 // <wtypes.h> in Windows SDK 8.1 #ifndef _PREFAST_ typedef /* [wire_marshal] */ OLECHAR *BSTR; #else // _PREFAST_ typedef _Null_terminated_ OLECHAR *BSTR; #endif OLECHARはもともとCOMの前身であるOLE (Object Linking and Embedding) で使われていた文字型の名残で、当時はANSI MBCSのcharでしたが、現在はWCHARすなわちwchar_tと等価です。Windows上ではsizeof(wchar_t) == 2であり、UTF-16エンコーディングのUni