_access_s、_waccess_s_access_s, _waccess_s

ファイルの読み取り/書き込みアクセス許可を決定します。Determines file read/write permissions. これは、「CRT のセキュリティ機能」の説明にあるとおり、セキュリティが強化されたバージョンの _access, _waccess です。This is a version of _access, _waccess with security enhancements as described in Security Features in the CRT.

構文Syntax

errno_t _access_s(
   const char *path,
   int mode
);
errno_t _waccess_s(
   const wchar_t *path,
   int mode
);

パラメーターParameters

pathpath
ファイルまたはディレクトリ パス。File or directory path.

モードmode
アクセス許可の設定。Permission setting.

戻り値Return Value

ファイルに特定のモードが設定されている場合、各関数は 0 を返します。Each function returns 0 if the file has the given mode. 指定したファイルが存在しないか、特定のモードでアクセスできない場合、関数はエラー コードを返します。The function returns an error code if the named file does not exist or is not accessible in the given mode. この場合、関数は次のようにエラー コードをセットから返し、errno も同じ値に設定します。In this case, the function returns an error code from the set as follows and also sets errno to the same value.

errno の値errno value 条件Condition
EACCES アクセスが拒否されました。Access denied. ファイルのアクセス許可の設定では、指定したアクセスは許可されません。The file's permission setting does not allow specified access.
ENOENT ファイル名またはパスが見つかりません。File name or path not found.
EINVAL 無効なパラメーター。Invalid parameter.

詳細については、「errno、_doserrno、_sys_errlist、_sys_nerr」をご覧ください。For more information, see errno, _doserrno, _sys_errlist, and _sys_nerr.

RemarksRemarks

ファイルを使用すると、 _access_s関数は、指定したファイルが存在し、としてアクセスできるかどうかを決定します。 の値で指定されたモードします。When used with files, the _access_s function determines whether the specified file exists and can be accessed as specified by the value of mode. ディレクトリを使用すると _access_sだけを指定したディレクトリが存在するかどうか判断します。When used with directories, _access_s determines only whether the specified directory exists. Windows 2000 および以降のオペレーティング システムでは、すべてのディレクトリは読み取りおよび書き込みアクセス。In Windows 2000 and later operating systems, all directories have read and write access.

モード値mode value ファイル チェックの目的Checks file for
0000 存在のみExistence only.
0202 書き込みアクセス許可Write permission.
0404 読み取りアクセス許可Read permission.
0606 読み取りおよび書き込みアクセス許可Read and write permission.

ファイルの読み取りおよび書き込みアクセス許可では、ファイルを開く権限を確認するには不十分です。Permission to read or write the file is not enough to ensure the ability to open a file. たとえば、ファイルが別のプロセスによってロックされている場合、可能性がありますアクセスできない場合でも _access_s 0 を返します。For example, if a file is locked by another process, it might not be accessible even though _access_s returns 0.

_waccess_sのワイド文字バージョンは、 _access_sここで、パス引数 _waccess_sはワイド文字列です。_waccess_s is a wide-character version of _access_s, where the path argument to _waccess_s is a wide-character string. それ以外の場合、 _waccess_s_access_s動作は同じです。Otherwise, _waccess_s and _access_s behave identically.

これらの関数では、パラメーターの検証が行われます。These functions validate their parameters. 場合パスnull またはモード有効なモードを指定しない」の説明に従って、無効なパラメーター ハンドラーが呼び出されるパラメーターの検証です。If path is NULL or mode does not specify a valid mode, the invalid parameter handler is invoked, as described in Parameter Validation. 実行の継続が許可された場合、これらの関数は errnoEINVAL に設定し、EINVAL を返します。If execution is allowed to continue, these functions set errno to EINVAL and return EINVAL.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

Tchar.h のルーチンTchar.h routine _UNICODE および _MBCS が未定義の場合_UNICODE and _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_taccess_s _access_s_access_s _access_s_access_s _waccess_s_waccess_s

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header オプション ヘッダーOptional header
_access_s_access_s <io.h><io.h> <errno.h><errno.h>
_waccess_s_waccess_s <wchar.h> または <io.h><wchar.h> or <io.h> <errno.h><errno.h>

Example

この例では _access_sが存在し、書き込みが許可されているかどうかを確認する crt_access_s.c という名前のファイルをチェックします。This example uses _access_s to check the file named crt_access_s.c to see whether it exists and whether writing is allowed.

// 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.

関連項目See also

ファイル処理File Handling
_access、_waccess_access, _waccess
_chmod、_wchmod_chmod, _wchmod
_fstat、_fstat32、_fstat64、_fstati64、_fstat32i64、_fstat64i32_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
_open、_wopen_open, _wopen
_stat、_wstat 関数_stat, _wstat Functions