MAPI 文字セット
適用対象: Outlook 2013 | Outlook 2016
MAPI 準拠のクライアント アプリケーションとサービス プロバイダーは、ANSI 文字 (1 バイト) または Unicode 文字 (2 バイト) を使用できます。 OEM 文字セットはサポートされていません。 MAPI メソッドまたは関数に渡される OEM 文字列によって、そのメソッドまたは関数が失敗します。 OEM 文字セット内のファイル名を処理するクライアント アプリケーションは、MAPI メソッドまたは関数に渡す前に、それらを ANSI に変換するように注意する必要があります。
クライアントとサービス プロバイダーの両方で、Unicode 文字セットのサポートは省略可能です。 すべてのサービス プロバイダーは、Unicode をサポートしているかどうかに関係なくコンパイルできるように、コードを記述する必要があります。 クライアントはサポートのレベルに応じて条件付きでコンパイルされますが、サービス プロバイダーはコンパイルしません。 文字セットが変更されたときに再コンパイルする必要はありません。 サービス プロバイダー コード内の何も条件付きにする必要はありません。
Unicode をサポートするクライアントまたはサービス プロバイダーが、文字列を入力パラメーターまたは出力パラメーターとして含むメソッド呼び出しを行うと、MAPI_UNICODE フラグが設定されます。 このフラグを設定すると、すべての受信文字列が Unicode 文字列であることを実装に示します。 出力時に、このフラグを設定すると、実装から返されるすべての文字列が可能であれば Unicode 文字列であることが要求されます。 Unicode をサポートするメソッド実装者は、要求に準拠します。Unicode サポートを提供しないメソッド 実装者は準拠しません。 Unicode 形式ではない文字列プロパティは、PT_STRING8型です。
MAPI は、ヘッダー ファイル MAPIDEFS の fMapiUnicode 定数を定義します。既定の文字セットを表す H。 クライアントまたはサービス プロバイダーが Unicode をサポートしている場合、 fMapiUnicode は MAPI_UNICODE に設定されます。 Unicode をサポートしていないクライアントとサービス プロバイダーは 、fMapiUnicode を 0 に設定します。
Unicode をサポートしていないサービス プロバイダーは、次のことを行う必要があります。
文字セット間の変換の実行を拒否します。
メソッド呼び出しで MAPI_UNICODE フラグを渡すことはありません。
MAPI_UNICODE フラグが渡されたときにMAPI_E_BAD_CHARWIDTHを返します。
ANSI 文字列プロパティを明示的に宣言します。
サービス プロバイダーは、Unicode のみをサポートし、クライアントが MAPI_UNICODE フラグを渡さない場合にも、MAPI_E_BAD_CHARWIDTHを返すことができます。
MAPI の現在のバージョンでは、次の方法で Unicode がサポートされています。
IMAPIProp::GetLastError (IAddrBook 実装のみ)
これらのメソッドの場合、呼び出し元は返された文字列が Unicode 文字列であると想定できます。 その他のメソッドの MAPI 実装から返される文字列は、ANSI 文字列になります。