_access_s, _waccess_s

Determina los permisos de lectura y escritura del archivo. Estas funciones son versiones de _access, _waccess con mejoras de seguridad como se describe en Características de seguridad de CRT.

Sintaxis

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

Parámetros

path
Ruta de acceso del directorio o archivo.

mode
Configuración de permisos.

Valor devuelto

Cada función devuelve 0 si el archivo tiene el modo especificado. La función devuelve un código de error si el archivo con nombre no existe o no es accesible en el modo especificado. En este caso, la función devuelve un código de error del conjunto de la manera siguiente y también establece errno en el mismo valor.

Valor de errno Condición
EACCES Acceso denegado. La configuración de permisos del archivo no permite el acceso especificado.
ENOENT No se encuentra el nombre o la ruta de acceso del archivo.
EINVAL El parámetro no es válido.

Para obtener más información, veaerrno, _doserrno, _sys_errlisty _sys_nerr.

Comentarios

Cuando se usa con archivos, la función _access_s determina si el archivo especificado existe y si se puede acceder a él tal y como lo especifica el valor de mode. Cuando se usa con directorios, la función _access_s solo determina si existe el directorio especificado. En Windows 2000 y en los sistemas operativos posteriores, todos los directorios tienen acceso de lectura y escritura.

Valor de mode Comprueba el archivo para
00 Solo existencia.
02 Permiso de escritura.
04 Permiso de lectura.
06 Permisos de lectura y escritura.

El permiso para leer o escribir el archivo no es suficiente para garantizar la capacidad de abrir un archivo. Por ejemplo, si un archivo está bloqueado por otro proceso, puede que no sea accesible aunque _access_s devuelva 0.

_waccess_s es una versión con caracteres anchos de _access_s; donde el argumento path para _waccess_s es una cadena de caracteres anchos. De lo contrario, los objetos _waccess_s y _access_s se comportan de forma idéntica.

Estas funciones validan sus parámetros. Si path es NULL o mode no especifica un modo válido, se invoca al controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones establecen errno en EINVAL y devuelven EINVAL.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Asignaciones de rutinas de texto genérico

Rutina Tchar.h _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_taccess_s _access_s _access_s _waccess_s

Requisitos

Routine Encabezado necesario Encabezado opcional
_access_s <io.h> <errno.h>
_waccess_s <wchar.h> o <io.h> <errno.h>

Ejemplo

En este ejemplo se usa _access_s para comprobar el archivo denominado crt_access_s.c, para ver si existe y si se permite la escritura.

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

Consulte también

Control de archivos
_access, _waccess
_chmod, _wchmod
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
_open, _wopen
Funciones _stat, _wstat