Partager via


_sopen_s, _wsopen_s

ouvre un fichier pour partager.Ce sont des versions de _sopen et _wsopen avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du CRT.

errno_t _sopen_s(
   int* pfh,
   const char *filename,
   int oflag,
   int shflag,
   int pmode
);
errno_t _wsopen_s(
   int* pfh,
   const wchar_t *filename,
   int oflag,
   int shflag,
   int pmode,
);

Paramètres

  • [out] pfh
    Le handle de fichier, ou -1 dans le cas d'une erreur.

  • [in] filename
    Nom du fichier.

  • [in] oflag
    Type d'opérations autorisées.

  • [in] shflag
    Type de partage autorisé.

  • [in] pmode
    paramètre d'autorisation.

Valeur de retour

Une valeur de retour différente de zéro indique une erreur, dans ce cas errno a une des valeurs suivantes.

  • EACCES
    le chemin d'accès donné est un répertoire, ou le fichier est en lecture seule, mais une opération d'ouvert-pour-écriture a été tentée.

  • EEXIST
    _O_CREATet des balises d' _O_EXCLont été spécifiés, mais filename existe déjà.

  • EINVAL
    oflagvalide, shflag, ou l'argument d'pmode , ou l' pfh ou l' filename s'agissait d'un pointeur null.

  • EMFILE
    Pas plus de descripteurs de fichiers disponibles.

  • ENOENT
    Fichier ou un chemin d'accès introuvable.

Si un argument non valide est passé à la fonction, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, errno est défini à EINVAL et EINVAL est retourné.

Pour plus d'informations sur ces éléments et d'autres codes de retour, consultez _doserrno, errno, _sys_errlist, et _sys_nerr.

Dans le cas d'une erreur, -1 sera retourné par pfh (à moins qu' pfh est un pointeur null).

Notes

la fonction d' _sopen_s ouvre le fichier spécifié par filename et prépare le fichier pour la lecture ou l'écriture partagée, comme défini par oflag et shflag._wsopen_s est une version à caractère élargi d' _sopen_s; l'argument d' filename à _wsopen_s est une chaîne à caractères larges._wsopen_s et _sopen_s se comportent de sinon.

mappages de routines de texte générique

routine de Tchar.h

_UNICODE et _MBCS non définis

_MBCS défini

_UNICODE défini

_tsopen_s

_sopen_s

_sopen_s

_wsopen_s

L'expression entière oflag est formée en combinant un ou plusieurs constantes manifestes, définies dans le fichier Fcntl.h.Lorsque deux constantes ou plus constituent l'argument oflag, elles sont combinées avec l'opérateur de bits OR ( | ).

  • _O_APPEND
    Repositionne le pointeur de fichier à la fin de le fichier avant chaque opération d'écriture.

  • _O_BINARY
    Ouvre un fichier en mode (non traduit) binaire.(Consultez fopen pour une description du mode binaire.)

  • _O_CREAT
    Crée et ouvre le nouveau fichier pour l'écriture.N'a pas d'effet si le fichier spécifié par filename existe.

  • _O_CREAT| _O_SHORT_LIVED
    Créez un fichier comme temporaire et si possible ne le vide pas sur le disque.

  • _O_CREAT| _O_TEMPORARY
    Créez un fichier comme temporaire ; le fichier est supprimé lorsque le dernier descripteur de fichier est fermé.

  • _O_CREAT| _O_EXCL
    Retourne une valeur d'erreur si le fichier spécifié par filename existe.S'applique uniquement en cas de utilisation avec _O_CREAT.

  • _O_NOINHERIT
    Empêché la création d'un descripteur de fichier partagé.

  • _O_RANDOM
    Spécifie principalement l'accès aléatoire à partir de le disque.

  • _O_RDONLY
    Ouvre un fichier pour lire uniquement ; ne peut pas être spécifié avec _O_RDWR ou _O_WRONLY.

  • _O_RDWR
    ouvre un fichier pour la lecture et l'écriture ; ne peut pas être spécifié avec _O_RDONLY ou _O_WRONLY.

  • _O_SEQUENTIAL
    Spécifie principalement un accès séquentiel à partir de le disque.

  • _O_TEXT
    Ouvre un fichier en mode de texte (traduits).(Pour plus d'informations, consultez E/S de fichier du mode de texte et de binaire et le fopen.)

  • _O_TRUNC
    Ouvrir un fichier et le tronque à la longueur nulle ; le fichier doit avoir l'autorisation en écriture.vous ne pouvez pas spécifier cette balise avec _O_RDONLY._O_TRUNCelle est utilisée avec _O_CREATouvre un fichier existant ou crée un fichier.

    [!REMARQUE]

    la balise d' _O_TRUNC détruit le contenu du fichier spécifié.

  • _O_WRONLY
    Ouvre un fichier pour entrer uniquement ; ne peut pas être spécifié avec _O_RDONLY ou _O_RDWR.

  • _O_U16TEXT
    Ouvrez le mode UTF-16 de fichier au format Unicode.

  • _O_U8TEXT
    Ouvrez le mode UTF-8 de fichier au format Unicode.

  • _O_WTEXT
    Ouvrez le mode de fichier au format Unicode.

pour spécifier le mode d'accès au fichier, vous devez spécifier _O_RDONLY, _O_RDWR, ou _O_WRONLY.Il n'existe aucune valeur par défaut pour le mode d'accès.

Si _sopen_s est appelé avec _O_WRONLY|_O_APPEND (mode adjacent) et _O_WTEXT, _O_U16TEXT, ou _O_U8TEXT, il essaie d'abord d'ouvrir le fichier pour la lecture et en écriture, lisez le BOM, puis rouvrez -le pour entrer uniquement.Si l'ouverture du fichier pour les échecs de lecture et d'écriture, il ouvre le fichier pour entrer uniquement et utilise la valeur par défaut pour définir en mode Unicode.

L'argument shflag est une expression constante se composer de constantes manifestes suivantes, défini dans Share.h.

  • _SH_DENYRW
    Refuse l'accès en lecture et en écriture dans un fichier.

  • _SH_DENYWR
    refuse l'accès en écriture à un fichier.

  • _SH_DENYRD
    Accès en lecture refuser à un fichier.

  • _SH_DENYNO
    Autorise l'accès en lecture et en écriture.

L'argument d' pmode est toujours requis, contrairement à _sopen.Lorsque vous spécifiez _O_CREAT, si le fichier n'existe pas, pmode spécifie les paramètres d'autorisation de fichier, qui sont définis lorsque le fichier est fermé la première fois.Sinon pmode est ignoré.pmode est une expression entière contenant une ou les deux constantes manifestes _S_IWRITE et _S_IREAD, définie dans le système \Stat .h.Lorsque les deux constantes sont données, ils sont combinées avec l'opérateur de bits OR.La signification d' pmode est la suivante.

  • _S_IWRITE
    écriture autorisée.

  • _S_IREAD
    lecture autorisée.

  • _S_IREAD | _S_IWRITE
    lecture et écriture autorisées.

Si l'autorisation d'écriture n'est pas accordée, le fichier est en lecture seule.Sous le système d'exploitation Windows, tous les fichiers sont compréhensibles ; il n'est pas possible d'accorder l'autorisation en écriture seule.Par conséquent, les modes _S_IWRITE et _S_IREAD | _S_IWRITE sont équivalents.

_sopen_s applique le masque d'autorisation de fichier en cours à pmode avant de définir les autorisations (consultez _umask).

Configuration requise

routine

en-tête requis

en-tête facultatif

_sopen_s

<io.h>

<fcntl.h> <sys/types.h> <sys/stat.h> , <share.h>

_wsopen_s

<io.h> ou <wchar.h>

<fcntl.h> <sys/types.h> <sys/stat.h> , <share.h>

Pour plus d'informations de compatibilité, consultez compatibilité dans l'introduction.

Exemple

Consultez l'exemple pour _locking.

Voir aussi

Référence

E/S de bas niveau

_close

_create, _wcreat

le fopen, _wfopen

_fsopen, _wfsopen

_open, _wopen