Delen via


_sopen_s, _wsopen_s

Hiermee opent u een bestand voor delen. Deze versies van _sopen en _wsopen hebben beveiligingsverbeteringen, zoals beschreven in Beveiligingsfuncties in de CRT-.

Syntaxis

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
);

Parameterwaarden

pfh
De bestandsingang of -1 als er een fout optreedt.

filename
Bestandsnaam.

oflag
Het soort bewerkingen dat is toegestaan.

shflag
Het type delen is toegestaan.

pmode
Machtigingsinstelling.

Retourwaarde

Een niet-nul-retourwaarde geeft een fout aan; in dat geval errno is ingesteld op een van de volgende waarden.

errno waarde Conditie
EACCES Het opgegeven pad is een map of het bestand heeft het kenmerk Alleen-lezen, maar er is geprobeerd een open-for-writing-bewerking uit te voeren.
EEXIST _O_CREAT en _O_EXCL vlaggen zijn opgegeven, maar filename bestaan al.
EINVAL Ongeldig oflag, shflagargument of pmodepfhfilename een null-aanwijzer.
EMFILE Er zijn geen bestandsdescriptors meer beschikbaar.
ENOENT Bestand of pad niet gevonden.

Als een ongeldig argument wordt doorgegeven aan de functie, wordt de ongeldige parameterhandler aangeroepen, zoals beschreven in parametervalidatie. Als de uitvoering mag worden voortgezet, wordt errno ingesteld op EINVALen wordt EINVAL geretourneerd.

Zie , , _doserrnoen _sys_errlist_sys_nerrvoor meer informatie over deze en andere retourcodeserrno .

Als er een fout optreedt, wordt -1 geretourneerd ( pfh tenzij pfh er een null-aanwijzer is).

Opmerkingen

De _sopen_s functie opent het bestand dat is opgegeven door filename en bereidt het bestand voor op gedeeld lezen of schrijven, zoals gedefinieerd door oflag en shflag. _wsopen_s is een breedtekenversie van _sopen_s; het argument dat u filename wilt _wsopen_s gebruiken is een tekenreeks met een breed teken. _wsopen_s en _sopen_s gedraagt zich op dezelfde manier als anders.

De globale status van deze functie is standaard gericht op de toepassing. Zie Globale status in de CRT-om deze te wijzigen.

Algemene routinetoewijzingen voor tekst

Tchar.h routine _UNICODE en _MBCS niet gedefinieerd _MBCS Gedefinieerd _UNICODE Gedefinieerd
_tsopen_s _sopen_s _sopen_s _wsopen_s

De expressie oflag voor gehele getallen wordt gevormd door een of meer manifestconstanten te combineren, die zijn gedefinieerd in <fcntl.h>. Wanneer twee of meer constanten het argument oflagvormen, worden ze gecombineerd met de operator bitwise-OR ( | ).

oflag constant Gedrag
_O_APPEND Hiermee verplaatst u de bestandswijzer vóór elke schrijfbewerking naar het einde van het bestand.
_O_BINARY Hiermee opent u het bestand in de binaire modus (niet-vertaald). (Zie fopen voor een beschrijving van de binaire modus.)
_O_CREAT Hiermee maakt u een bestand en opent u het voor schrijven. Heeft geen effect als het bestand dat is opgegeven door filename bestaat. Het pmode argument is vereist wanneer _O_CREAT deze is opgegeven.
_O_CREAT | _O_SHORT_LIVED Hiermee maakt u een bestand als tijdelijk en indien mogelijk wordt deze niet naar de schijf leeggemaakt. Het pmode argument is vereist wanneer _O_CREAT deze is opgegeven.
_O_CREAT | _O_TEMPORARY Hiermee maakt u een bestand als tijdelijk; het bestand wordt verwijderd wanneer de laatste bestandsdescriptor wordt gesloten. Het pmode argument is vereist wanneer _O_CREAT deze is opgegeven. Als u het verouderde gedrag voor app-compatibiliteit wilt behouden, kunnen andere processen dit bestand niet verwijderen.
_O_CREAT | _O_EXCL Retourneert een foutwaarde als er een bestand bestaat dat is opgegeven door filename . Is alleen van toepassing wanneer deze wordt gebruikt met _O_CREAT.
_O_NOINHERIT Hiermee voorkomt u dat een gedeelde bestandsdescriptor wordt gemaakt.
_O_RANDOM Hiermee geeft u op dat caching is geoptimaliseerd voor, maar niet beperkt tot, willekeurige toegang vanaf schijf.
_O_RDONLY Hiermee opent u een bestand om alleen te lezen. Kan niet worden opgegeven met _O_RDWR of _O_WRONLY.
_O_RDWR Hiermee opent u een bestand voor zowel lezen als schrijven. Kan niet worden opgegeven met _O_RDONLY of _O_WRONLY.
_O_SEQUENTIAL Hiermee geeft u op dat caching is geoptimaliseerd voor, maar niet beperkt tot, sequentiële toegang vanaf schijf.
_O_TEXT Hiermee opent u een bestand in de ANSI-tekstmodus (vertaald). Zie Voor meer informatie , tekst en binaire modus bestand I/O en fopen.
_O_TRUNC Hiermee opent u een bestand en kapt u het af tot nullengte; het bestand moet schrijfmachtigingen hebben. Kan niet worden opgegeven met _O_RDONLY. _O_TRUNC gebruikt met _O_CREAT opent een bestaand bestand of maakt een bestand. Notitie: De _O_TRUNC vlag vernietigt de inhoud van het opgegeven bestand.
_O_WRONLY Hiermee opent u alleen een bestand voor schrijven. Kan niet worden opgegeven met _O_RDONLY of _O_RDWR.
_O_U16TEXT Hiermee opent u een bestand in de Unicode UTF-16-modus.
_O_U8TEXT Hiermee opent u een bestand in de Unicode UTF-8-modus.
_O_WTEXT Hiermee opent u een bestand in de Unicode-modus.

Als u de modus voor bestandstoegang wilt opgeven _O_RDONLY, moet u ofwel , _O_RDWRof _O_WRONLY. Er is geen standaardwaarde voor de toegangsmodus.

Wanneer een bestand wordt geopend in de Unicode-modus door invoerfuncties te gebruiken_O_WTEXT_O_U8TEXT, of_O_U16TEXT, vertalen invoerfuncties de gegevens die uit het bestand worden gelezen in UTF-16-gegevens die zijn opgeslagen als typewchar_t. Functies die schrijven naar een bestand dat is geopend in de Unicode-modus, verwachten buffers die UTF-16-gegevens bevatten die zijn opgeslagen als type wchar_t. Als het bestand is gecodeerd als UTF-8, worden UTF-16-gegevens omgezet in UTF-8 wanneer het wordt geschreven. De UTF-8-gecodeerde inhoud van het bestand wordt omgezet in UTF-16 wanneer deze wordt gelezen. Een poging om een oneven aantal bytes in de Unicode-modus te lezen of schrijven, veroorzaakt een parametervalidatiefout. Als u gegevens wilt lezen of schrijven die zijn opgeslagen in uw programma als UTF-8, gebruikt u een tekst- of binaire bestandsmodus in plaats van een Unicode-modus. U bent verantwoordelijk voor elke vereiste coderingsvertaling.

Als _sopen_s wordt aangeroepen met _O_WRONLY | _O_APPEND (toevoegmodus) en _O_WTEXT, _O_U16TEXTof _O_U8TEXT, wordt eerst geprobeerd het bestand te openen voor lezen en schrijven, de bom te lezen en vervolgens opnieuw te openen voor schrijven. Als het openen van het bestand voor lezen en schrijven mislukt, wordt het bestand alleen geopend voor schrijven en wordt de standaardwaarde gebruikt voor de instelling unicodemodus.

Het argument shflag is een constante expressie die bestaat uit een van de volgende manifestconstanten, die zijn gedefinieerd in <share.h>.

shflag constant Gedrag
_SH_DENYRW Hiermee wordt lees- en schrijftoegang tot een bestand geweigerd.
_SH_DENYWR Hiermee wordt schrijftoegang tot een bestand geweigerd.
_SH_DENYRD Weigert leestoegang tot een bestand.
_SH_DENYNO Hiermee staat u lees- en schrijftoegang toe.

Het pmode argument is altijd vereist, in tegenstelling tot in _sopen. Wanneer u opgeeft _O_CREAT, als het bestand niet bestaat, geeft u de machtigingsinstellingen van het bestand op pmode , die worden ingesteld wanneer het nieuwe bestand de eerste keer wordt gesloten. pmode Anders wordt dit genegeerd. pmode is een expressie met een geheel getal dat een of beide manifestconstanten _S_IWRITE bevat en _S_IREAD, die zijn gedefinieerd in <sys\stat.h>. Wanneer beide constanten worden gegeven, worden ze gecombineerd met de bitwise-OR-operator. De betekenis is pmode als volgt.

pmode Betekenis
_S_IREAD Alleen lezen is toegestaan.
_S_IWRITE Schrijven is toegestaan. (In feite staat lezen en schrijven toe.)
_S_IREAD | _S_IWRITE Lezen en schrijven toegestaan.

Als er geen schrijfmachtiging is opgegeven, heeft het bestand het kenmerk Alleen-lezen. In het Windows-besturingssysteem zijn alle bestanden leesbaar; Het is niet mogelijk om alleen-schrijvenmachtigingen te verlenen. Daarom zijn de modi _S_IWRITE en _S_IREAD | _S_IWRITE gelijkwaardig.

_sopen_s past het huidige masker voor bestandsmachtigingen toe op pmode voordat de machtigingen zijn ingesteld. (Zie _umask.)

Behoeften

Functie Vereiste header Optionele koptekst
_sopen_s <io.h> <fcntl.h>,<sys\types.h>,<sys\stat.h>,<share.h>
_wsopen_s <io.h> of <wchar.h> <fcntl.h>,<sys/types.h>,<sys/stat.h>,<share.h>

_sopen_s en _wsopen_s zijn Microsoft-extensies. Zie Compatibiliteit voor meer compatibiliteitsinformatie.

Voorbeeld

Zie het voorbeeld voor _locking.

Zie ook

I/O op laag niveau
_close
_creat, _wcreat
fopen, _wfopen
_fsopen, _wfsopen
_open, _wopen