SetFileApisToANSI 関数 (fileapi.h)
ファイル I/O 関数で、現在のプロセスに ANSI 文字セット コード ページを使用させます。 この関数は、8 ビットコンソールの入出力操作に役立ちます。
構文
void SetFileApisToANSI();
戻り値
なし
解説
コード ページが SetFileApisToANSI によって設定されているファイル I/O 関数は、ファイル名を受け入れるか返す KERNEL32.DLL によってエクスポートされる関数です。 SetFileApisToANSI は、スレッドごとまたはコンピューターごとではなく、プロセスごとにコード ページを設定します。
SetFileApisToANSI 関数は SetFileApisToOEM 関数を補完します。これにより、同じファイル I/O 関数のセットで OEM 文字セット コード ページが使用されます。
8 ビット コンソール関数では、既定で OEM コード ページが使用されます。 その他のすべての関数では、既定で ANSI コード ページが使用されます。 つまり、コンソール関数によって返される文字列は、他の関数によって正しく処理されない可能性があり、その逆も同様です。 たとえば、 FindFirstFileA 関数が特定の拡張 ANSI 文字を含む文字列を返し、8 ビット コンソール関数が OEM コード ページを使用するように設定されている場合、 WriteConsoleA 関数は文字列を正しく表示しません。
AreFileApisANSI 関数を使用して、ファイル I/O 関数のセットが現在使用しているコード ページを確認します。 SetConsoleCP 関数と SetConsoleOutputCP 関数を使用して、8 ビット コンソール関数のコード ページを設定します。
コード ページの非互換性の問題を解決するには、コンソール アプリケーションに Unicode を使用することをお勧めします。 Unicode を使用するコンソール アプリケーションは、8 ビット コンソール関数を使用するアプリケーションよりもはるかに汎用性が高くなります。 そのソリューションを除いて、コンソール アプリケーションは SetFileApisToOEM 関数を呼び出して、ファイル I/O 関数のセットで ANSI 文字セット文字列ではなく OEM 文字セット文字列を使用させることができます。 SetFileApisToANSI 関数を使用して、それらの関数を ANSI コード ページに戻します。
コマンド ラインを処理する場合、コンソール アプリケーションは Unicode 形式でコマンド ラインを取得し、関連する文字から OEM 関数を使用して OEM フォームに変換する必要があります。 また、コマンド ライン メイン関数の argv パラメーターの配列には、この場合の ANSI 文字セット文字列が含まれていることに注意してください。
Windows 8 と Windows Server 2012 では、この関数は、次のテクノロジによってサポートされています。
テクノロジ | サポートされています |
---|---|
サーバー メッセージ ブロック (SMB) 3.0 プロトコル | はい |
SMB 3.0 Transparent Failover (TFO) | はい |
スケールアウト ファイル共有 (SO) を使う SMB 3.0 | はい |
クラスターの共有ボリューム ファイル システム (CsvFS) | はい |
Resilient File System (ReFS) | はい |
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | fileapi.h (Windows.h、WinBase.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |