ファイルの読み取り/書き込みアクセス許可を決定します。 これらの関数は、「CRT のセキュリティ機能」で説明されているように、セキュリティが強化されたバージョンの _access、_waccess です。
_taccess_sについては、Generic-text 関数のマッピングを参照してください。
構文
errno_t _access_s(
const char *path,
int mode
);
errno_t _waccess_s(
const wchar_t *path,
int mode
);
パラメーター
path
ファイルまたはディレクトリ パス。
mode
アクセス許可の設定。
戻り値
ファイルに特定のモードが設定されている場合、各関数は 0 を返します。 指定されたファイルが存在しないか、指定されたモードでアクセスできない場合、関数はエラー コードを返します。 この場合、関数は次のようにエラー コードをセットから返し、errno も同じ値に設定します。
errno 値 |
条件 |
|---|---|
EACCES |
アクセスが拒否されました。 ファイルのアクセス許可設定では、指定されたアクセスは許可されません。 |
ENOENT |
ファイル名またはパスが見つかりません。 |
EINVAL |
無効なパラメーター。 |
詳細については、「errno」、「_doserrno」、「_sys_errlist」、および「_sys_nerr」を参照してください。
解説
ファイルを使用すると、_access_s 関数は、指定したファイルが存在し、mode 値で指定されているとおりにアクセスできるかどうかを判断します。 ディレクトリを使用すると、_access_s は指定されたディレクトリが存在するかどうかだけを判断します。 Windows 2000 以降のオペレーティング システムでは、すべてのディレクトリに読み取りおよび書き込みアクセスできます。
mode 値 |
ファイル チェックの目的 |
|---|---|
| 00 | 存在のみ |
| 02 | 書き込みアクセス許可 |
| 04 | 読み取りアクセス許可 |
| 06 | 読み取りおよび書き込みアクセス許可 |
ファイルの読み取りまたは書き込みのアクセス許可では、ファイルを開く機能を確保するには不十分です。 たとえば、ファイルが別のプロセスによってロックされている場合、_access_s が 0 を返してもアクセスできない可能性があります。
_waccess_s 関数は、_access_s 関数のワイド文字バージョンです。 _waccess_s 関数の引数 path は、ワイド文字列です。 それ以外では、 _waccess_s と _access_s の動作は同じです。
これらの関数では、パラメーターの検証が行われます。 pathがNULLの場合、または有効なモードmode指定されていない場合は、「パラメーターの検証で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、これらの関数は errno を EINVAL に設定し、EINVAL を返します。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
汎用テキスト関数マッピング
tchar.h列の関数は、コンパイル時に定義されている文字セットに応じて、他の列の関数にマップされます。
tchar.h 関数 |
_UNICODE と _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
|---|---|---|---|
_taccess_s |
_access_s |
_access_s |
_waccess_s |
要件
| ルーチンによって返される値 | 必須ヘッダー | オプション ヘッダー |
|---|---|---|
_access_s |
<io.h> |
<errno.h> |
_waccess_s |
<wchar.h> または <io.h> |
<errno.h> |
例
この例では、_access_s を使用して、crt_access_s.c という名前のファイルが存在し、書き込みが許可されているかどうかを確認します。
// crt_access_s.c
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
errno_t err = 0;
// Check for existence.
if ((err = _access_s( "crt_access_s.c", 0 )) == 0 )
{
printf_s( "File crt_access_s.c exists.\n" );
// Check for write permission.
if ((err = _access_s( "crt_access_s.c", 2 )) == 0 )
{
printf_s( "File crt_access_s.c does have "
"write permission.\n" );
}
else
{
printf_s( "File crt_access_s.c does not have "
"write permission.\n" );
}
}
else
{
printf_s( "File crt_access_s.c does not exist.\n" );
}
}
File crt_access_s.c exists.
File crt_access_s.c does not have write permission.
関連項目
ファイル処理
_access, _waccess
_chmod, _wchmod
_fstat、 _fstat32、 _fstat64、 _fstati64、 _fstat32i64、 _fstat64i32
_open, _wopen
_stat、_wstat 関数