_access_s, _waccess_s
Определяет разрешения на чтение и запись файла. Это версия _access, _waccess с усовершенствованиями безопасности, как описано в Функции безопасности в CRT.
errno_t _access_s(
const char *path,
int mode
);
errno_t _waccess_s(
const wchar_t *path,
int mode
);
Параметры
path
Путь к файлу или каталогу.mode
Параметры разрешений
Возвращаемое значение
Каждая функция возвращает значение 0, если файл имеет заданный режим. Функция возвращает код ошибки, если именованный файл не существует или недоступен в заданном режиме. В этом случае функция возвращает код ошибки из следующего набора, а также устанавливает для errno то же значение.
EACCES
Доступ запрещен. Настройка разрешений файла не позволяет указанный доступ.ENOENT
Имя файла или путь не найден.EINVAL
Неверный параметр
Дополнительные сведения см. в разделе errno, _doserrno, _sys_errlist, and _sys_nerr.
Заметки
При использовании с файлами, функция _access_s определяет существует ли указанный файл и можно ли получить к нему доступ, используя указанный режим mode. При использовании с каталогами, _access_s определяет существует ли указанный каталог. В Windows 2000 и последующих версиях операционных систем все каталоги имеют доступ для чтения и записи.
значение режима |
Проверяет файл |
---|---|
00 |
Только на существование. |
02 |
Разрешение на запись. |
04 |
Разрешение на чтение. |
06 |
Разрешение на чтение и запись. |
Разрешения на чтение или запись файла не достаточно для того, чтобы убедиться в возможности открыть файл. Например, если файл блокирован другим процессом, он может быть недоступен, даже если _access_s возвращает 0.
_waccess_s — двухбайтовая версия _access_s, где аргумент path для _waccess_s - строка двухбайтовых знаков. В противном случае поведение _waccess_s и _access_s идентично.
Эти функции проверяют свои параметры. Если path равно NULL, или mode не определяет допустимый режим, то вызывается обработчик недопустимого параметра, как описано в разделе Проверка параметров. Если продолжение выполнения разрешено, эти функции устанавливают для errno значение EINVAL и возвращают EINVAL.
Универсальное текстовое сопоставление функций
Подпрограмма 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" );
}
}
Эквивалент в .NET Framework
См. также
Ссылки
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32