_access_s
, _waccess_s
, _taccess_s
Determina as permissões de leitura/gravação do arquivo. Estas funções são versões de _access
, _waccess
com aprimoramentos de segurança, conforme descrito em Recursos de segurança no CRT.
Para _taccess_s
, consulte Mapeamentos de função de texto genérico.
Sintaxe
errno_t _access_s(
const char *path,
int mode
);
errno_t _waccess_s(
const wchar_t *path,
int mode
);
Parâmetros
path
Caminho do arquivo ou do diretório.
mode
Configuração de permissão.
Valor retornado
Cada função retorna 0 se o arquivo tem o modo determinado. A função retornará um código de erro se o arquivo nomeado não existir ou não estiver acessível no modo especificado. Nesse caso, a função retorna um código de erro do conjunto da seguinte maneira e também define errno
com o mesmo valor.
errno valor |
Condição |
---|---|
EACCES |
Acesso negado. A configuração de permissão do arquivo não permite o acesso especificado. |
ENOENT |
Nome ou caminho do arquivo não encontrado. |
EINVAL |
Parâmetro inválido. |
Para obter mais informações, consulte errno
, _doserrno
, _sys_errlist
e _sys_nerr
.
Comentários
Quando usada com arquivos, a função _access_s
determina se o arquivo especificado existe e pode ser acessado conforme a especificação do valor de mode
. Quando usada com diretórios, _access_s
apenas determina se o diretório especificado existe. No Windows 2000 e nos sistemas operacionais mais recentes, todos os diretórios têm acesso de leitura e gravação.
mode valor |
Verifica o arquivo quanto a |
---|---|
00 | Existência apenas. |
02 | Permissão de gravação. |
04 | Permissão de leitura. |
06 | Permissão de leitura e gravação. |
A permissão para ler ou gravar o arquivo não é suficiente para garantir a capacidade de abrir um arquivo. Por exemplo, se um arquivo estiver bloqueado por outro processo, ele poderá não estar acessível mesmo que _access_s
retorne 0.
_waccess_s
é uma versão de caractere largo de _access_s
, na qual o argumento path
para _waccess_s
é uma cadeia de caracteres largos. Caso contrário, _waccess_s
e _access_s
comportam-se de modo idêntico.
Essas funções validam seus parâmetros. Se path
for NULL
ou mode
não especificar um modo válido, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução tiver permissão para continuar, essas funções definirão errno
como EINVAL
e retornarão EINVAL
.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Mapeamentos de funções de texto genérico
A função na coluna é mapeada tchar.h
para a função nas outras colunas, dependendo do conjunto de caracteres definido em tempo de compilação.
Função tchar.h |
_UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_taccess_s |
_access_s |
_access_s |
_waccess_s |
Requisitos
Rotina | Cabeçalho necessário | Cabeçalho opcional |
---|---|---|
_access_s |
<io.h> |
<errno.h> |
_waccess_s |
<wchar.h> ou <io.h> |
<errno.h> |
Exemplo
Este exemplo usa _access_s
para verificar o arquivo nomeado crt_access_s.c para saber se ele existe e se a gravação é permitida.
// 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.
Confira também
Manipulação de arquivos
_access
, _waccess
_chmod
, _wchmod
_fstat
, _fstat32
, _fstat64
, _fstati64
, _fstat32i64
, , _fstat64i32
_open
, _wopen
_stat
, _wstat
funções