SetFileApisToOEM 関数 (fileapi.h)
プロセスのファイル I/O 関数で、OEM 文字セット コード ページを使用させます。 この関数は、8 ビットコンソールの入出力操作に役立ちます。
構文
void SetFileApisToOEM();
戻り値
なし
解説
コード ページが SetFileApisToOEM によって設定されているファイル I/O 関数は、ファイル名を受け入れるか返す KERNEL32.DLL によってエクスポートされる関数です。 SetFileApisToOEM は 、スレッドごとまたはコンピューターごとではなく、プロセスごとにコード ページを設定します。
SetFileApisToOEM 関数は SetFileApisToANSI 関数によって補完され、同じファイル I/O 関数のセットで ANSI 文字セット コード ページが使用されます。
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 |