_sopen_s、_wsopen_s
共有のファイルを開きます。これらは CRT のセキュリティ機能 に説明されているようにのセキュリティが強化された _sopen_wsopen のバージョンです。
errno_t _sopen_s(
int* pfh,
const char *filename,
int oflag,
int shflag,
int pmode
);
errno_t _wsopen_s(
int* pfh,
const wchar_t *filename,
int oflag,
int shflag,
int pmode,
);
パラメーター
[出力] pfh
エラーが発生した場合にファイル ハンドルまたは -1。[入力] filename
ファイル名。[入力] oflag
許可される操作の型。[入力] shflag
許可される共有の型。[入力] pmode
アクセス許可の設定。
戻り値
ゼロ以外の戻り値は errno が次の値の 1 に設定するとエラーになります。
EACCES
指定したディレクトリ パスはファイルが読み取り専用ですがが表示されます。書き込み操作としました。EEXIST
_O_CREAT と _O_EXCL フラグが指定されましたがfilename は既に存在します。EINVAL
無効な oflagshflagまたは pmode の引数または pfh または filename が null ポインターです。EMFILE
使用できるこれ以上のファイル記述子。ENOENT
検索またはファイル パス。
無効な引数が関数に渡されると無効なパラメーター ハンドラーが パラメーターの検証 に説明されているように開始されます。実行の継続が許可 errno は EINVAL に設定されEINVAL が返されます。
リターン コードの詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。
エラーの場合-1 は pfh して pfh が null ポインターである) が返されます。
解説
_sopen_s の関数は filename で指定されたファイルを開き共有読み取りまたは書き込みに oflag と shflag の定義に従ってファイルを準備します。_wsopen_s 関数は、_sopen_s 関数のワイド文字バージョンです。_wsopen_s 関数の引数 filename は、ワイド文字列です。それ以外では、_wsopen_s と _sopen_s の動作は同じです。
汎用テキスト ルーチンのマップ
Tchar.h のルーチン |
_UNICODE および _MBCS が未定義の場合 |
_MBCS が定義されている場合 |
_UNICODE が定義されている場合 |
---|---|---|---|
_tsopen_s |
_sopen_s |
_sopen_s |
_wsopen_s |
整数式 oflag は Fcntl.h ファイルで定義されているマニフェスト定数の一つ以上を組み合わせて作成されます。複数の引数が定数 oflag を作成した場合ビットごとの OR 演算子で結合されます。 | ).
_O_APPEND
すべての書き込み操作の前にファイルの末尾にファイル ポインターを移動します。_O_BINARY
バイナリ (無変換) モードでファイルを開きます。(バイナリ モードの詳細についてはfopen を参照してください)。_O_CREAT
書き込み用に新しいファイルを作成し開きます。filename で指定されたファイルがある場合は影響しません。_O_CREAT| _O_SHORT_LIVED
一時できればディスクにフラッシュしないためファイルを作成します。_O_CREAT| _O_TEMPORARY
ファイルを一時ファイルと作成します。; ファイルが最後のファイル記述子が閉じられるとファイルは削除されます。_O_CREAT| _O_EXCL
filename で指定されたファイルがある場合はエラー値を返します。_O_CREAT に対して使用した場合にのみ適用されます。_O_NOINHERIT
共有ファイル記述子を作成しなくて済みます。_O_RANDOM
ディスクから主にランダム アクセスを指定します。_O_RDONLY
読み取り専用ファイルを開きます ; _O_RDWR または _O_WRONLY で指定することはできません。_O_RDWR
読み取りと書き込みの両方のモードでファイルを開きます ; _O_RDONLY または _O_WRONLY で指定することはできません。_O_SEQUENTIAL
ディスクから主に順次アクセスを指定します。_O_TEXT
テキスト (変換) モードでファイルを開きます。(詳細についてはテキストとバイナリ モードのファイル I/O と fopen を参照してください)。_O_TRUNC
ファイルを開き長さだけ切り詰めますに ; ファイルが書き込みのアクセス許可が必要です。_O_RDONLY でこのフラグを指定することはできません。_O_TRUNC は _O_CREAT を開くと既存のファイルを使用するか新しいファイルを作成します。[!メモ]
_O_TRUNC フラグを指定したファイルの内容を破棄します。
_O_WRONLY
書き込み用にファイルを開きます ; _O_RDONLY または _O_RDWR で指定することはできません。_O_U16TEXT
Unicode UTF-16 モードでファイルを開きます。_O_U8TEXT
Unicode UTF-8 モードでファイルを開きます。_O_WTEXT
Unicode モードでファイルを開きます。
ファイル アクセス モードを指定するには_O_RDONLY_O_RDWRまたは _O_WRONLY を指定する必要があります。アクセス モードの既定値はありません。
_sopen_s が _O_WRONLY|_O_APPEND (モードを追加します。_O_WTEXT) と**_O_U16TEXT**または _O_U8TEXT 呼び出すと最初に読み取ることのファイルを開くと記述BOM をことを書き込み用だけを再開します。読み取りと書き込みのファイルを開くことができない場合は書き込み用にファイルを開きUnicode モードの設定の既定値を使用します。
引数 shflag は次のマニフェスト定数の 1 文字で構成される定数式 Share.h で定義されます。
_SH_DENYRW
ファイルの読み取りと書き込みを禁止アクセス。_SH_DENYWR
ファイルへの書き込みアクセスを禁止します。_SH_DENYRD
ファイルへの読み取りアクセスを拒否します。_SH_DENYNO
読み取りおよび書き込みアクセス許可。
pmode の引数は _sopen とは異なり常に指定する必要があります。_O_CREAT を指定するとファイルが存在しない場合はpmode は新しいファイルを最初に開いたときに設定されているファイル アクセス許可の設定を指定します。それ pmode は無視されます。pmode はマニフェスト定数 _S_IWRITE と _S_IREAD1 のいずれかまたは両方を含む SYS \ Stat.h で定義されている整数式です。定数が両方とも指定するとビットごとの OR 演算子で結合されます。pmode の意味は次のとおりです。
_S_IWRITE
許可される書き込みます。_S_IREAD
許可される読み取り。_S_IREAD | _S_IWRITE
許可される読み取りと書き込み。
書き込みアクセス許可を指定しない場合ファイルは読み取り専用です。Windows オペレーティング システムではすべてのファイルを読み取ることができます。; 書き込み専用アクセス許可を与えることはできません。したがって_S_IWRITE モードと _S_IREAD | _S_IWRITE は同じです。
_sopen_s は pmode にアクセス許可を設定する前に現在のファイルのアクセス許可マスクを適用します (_umask を参照してください。
必要条件
ルーチン |
必須ヘッダー |
オプション ヘッダー |
---|---|---|
_sopen_s |
<io.h> |
<fcntl.h> <sys/types.h> <sys/stat.h><share.h> |
_wsopen_s |
<io.h> または <wchar.h> |
<fcntl.h> <sys/types.h> <sys/stat.h><share.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
_locking の例を参照してください。