Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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