Freigeben über


CreateFile2FromAppW-Funktion (fileapifromapp.h)

Erstellt oder öffnet eine Datei oder ein E/A-Gerät. Das Verhalten dieser Funktion ist identisch mit CreateFile2, mit der Ausnahme, dass diese Funktion dem Universelle Windows-Plattform App-Sicherheitsmodell entspricht.

Syntax

WINSTORAGEAPI HANDLE CreateFile2FromAppW(
  LPCWSTR                           lpFileName,
  DWORD                             dwDesiredAccess,
  DWORD                             dwShareMode,
  DWORD                             dwCreationDisposition,
  LPCREATEFILE2_EXTENDED_PARAMETERS pCreateExParams
) noexcept;

Parameter

lpFileName

Der Name der Datei oder des Geräts, die erstellt oder geöffnet werden soll.

Informationen zu speziellen Gerätenamen finden Sie unter Definieren eines MS-DOS-Gerätenamens.

Geben Sie zum Erstellen eines Dateidatenstroms den Namen der Datei, einen Doppelpunkt und dann den Namen des Datenstroms an. Weitere Informationen finden Sie unter Dateistreams.

Weitere Informationen zum Deaktivieren der MAX_PATH Einschränkung ohne Vorheriges "\\?\" finden Sie im Abschnitt "Maximale Pfadlängenbegrenzung" unter Benennungsdateien, Pfade und Namespaces .

dwDesiredAccess

Der angeforderte Zugriff auf die Datei oder das Gerät, der als Lese-, Schreib-, beides oder weder null) zusammengefasst werden kann.

Die am häufigsten verwendeten Werte sind GENERIC_READ, GENERIC_WRITE oder beides (GENERIC_READ | GENERIC_WRITE). Weitere Informationen finden Sie unter Generische Zugriffsrechte, Dateisicherheit und Zugriffsrechte, Dateizugriffsrechtekonstanten und ACCESS_MASK.

Wenn dieser Parameter null ist, kann die Anwendung bestimmte Metadaten wie Datei-, Verzeichnis- oder Geräteattribute abfragen, ohne auf diese Datei oder das Gerät zuzugreifen, auch wenn GENERIC_READ Zugriff verweigert worden wäre.

Sie können keinen Zugriffsmodus anfordern, der mit dem Freigabemodus in Konflikt steht, der durch den dwShareMode-Parameter in einer offenen Anforderung angegeben wird, die bereits über ein geöffnetes Handle verfügt.

dwShareMode

Der angeforderte Freigabemodus der Datei oder des Geräts, der gelesen, geschrieben, beide, gelöscht, alle oder keine (siehe folgende Tabelle) sein kann. Zugriffsanforderungen auf Attribute oder erweiterte Attribute sind von diesem Flag nicht betroffen.

Wenn dieser Parameter null ist und die Funktion erfolgreich ist, kann die Datei oder das Gerät nicht freigegeben und nicht erneut geöffnet werden, bis das Handle für die Datei oder das Gerät geschlossen ist. Weitere Informationen finden Sie im Abschnitt mit Hinweisen.

Sie können keinen Freigabemodus anfordern, der in Konflikt mit dem Zugriffsmodus steht, der in einer vorhandenen Anforderung mit einem geöffneten Handle angegeben ist. Diese Funktion schlägt fehl, und die GetLastError-Funktion gibt ERROR_SHARING_VIOLATION zurück.

Damit ein Prozess eine Datei oder ein Gerät freigeben kann, während die Datei oder das Gerät in einem anderen Prozess geöffnet ist, verwenden Sie eine kompatible Kombination aus mindestens einem der folgenden Werte. Weitere Informationen zu gültigen Kombinationen dieses Parameters mit dem dwDesiredAccess-Parameter finden Sie unter Erstellen und Öffnen von Dateien.

Hinweis Die Freigabeoptionen für jedes geöffnete Handle bleiben gültig, bis dieses Handle geschlossen wird, unabhängig vom Prozesskontext.

 

Wert Bedeutung
0 0x00000000

Verhindert, dass andere Prozesse eine Datei oder ein Gerät öffnen, wenn sie Lösch-, Lese- oder Schreibzugriff anfordern. Der exklusive Zugriff auf eine Datei oder ein Verzeichnis wird nur gewährt, wenn die Anwendung Schreibzugriff auf die Datei hat.

FILE_SHARE_DELETE 0x00000004

Ermöglicht nachfolgende Geöffnete Vorgänge für eine Datei oder ein Gerät, um den Löschzugriff anzufordern.

Andernfalls können andere Prozesse die Datei oder das Gerät nicht öffnen, wenn sie Löschzugriff anfordern.

Wenn dieses Flag nicht angegeben ist, aber die Datei oder das Gerät für den Löschzugriff geöffnet wurde, schlägt die Funktion fehl.

Hinweis Der Löschzugriff ermöglicht sowohl Lösch- als auch Umbenennungsvorgänge.
 
FILE_SHARE_READ 0x00000001

Ermöglicht nachfolgende Geöffnete Vorgänge für eine Datei oder ein Gerät, um Lesezugriff anzufordern.

Andernfalls können andere Prozesse die Datei oder das Gerät nicht öffnen, wenn sie Lesezugriff anfordern.

Wenn dieses Flag nicht angegeben ist, aber die Datei oder das Gerät für den Lesezugriff geöffnet wurde, schlägt die Funktion fehl.

Wenn eine Datei oder ein Verzeichnis geöffnet wird und dieses Flag nicht angegeben wird und der Aufrufer keinen Schreibzugriff auf die Datei oder das Verzeichnis hat, schlägt die Funktion fehl.

FILE_SHARE_WRITE 0x00000002

Ermöglicht nachfolgende Geöffnete Vorgänge für eine Datei oder ein Gerät, um Schreibzugriff anzufordern.

Andernfalls können andere Prozesse die Datei oder das Gerät nicht öffnen, wenn sie Schreibzugriff anfordern.

Wenn dieses Flag nicht angegeben ist, die Datei oder das Gerät jedoch für den Schreibzugriff geöffnet wurde oder über eine Dateizuordnung mit Schreibzugriff verfügt, schlägt die Funktion fehl.

dwCreationDisposition

Eine Aktion, die für eine Datei oder ein Gerät ausgeführt werden soll, die vorhanden ist oder nicht vorhanden ist.

Für andere Geräte als Dateien ist dieser Parameter normalerweise auf OPEN_EXISTING festgelegt.

Dieser Parameter muss einer der folgenden Werte sein, die nicht kombiniert werden können:

Wert Bedeutung
CREATE_ALWAYS 2

Erstellt immer eine neue Datei.

Wenn die angegebene Datei vorhanden und beschreibbar ist, schneidet die Funktion die Datei ab, die Funktion ist erfolgreich, und der Code für den letzten Fehler ist auf ERROR_ALREADY_EXISTS (183) festgelegt.

Wenn die angegebene Datei nicht vorhanden ist und ein gültiger Pfad ist, wird eine neue Datei erstellt, die Funktion erfolgreich ausgeführt, und der Code des letzten Fehlers wird auf Null festgelegt.

CREATE_NEW 1

Erstellt eine neue Datei nur, wenn sie noch nicht vorhanden ist.

Wenn die angegebene Datei vorhanden ist, schlägt die Funktion fehl, und der Letzte Fehlercode wird auf ERROR_FILE_EXISTS (80) festgelegt.

Wenn die angegebene Datei nicht vorhanden ist und ein gültiger Pfad zu einem beschreibbaren Speicherort ist, wird eine neue Datei erstellt.

OPEN_ALWAYS 4

Öffnet eine Datei immer.

Wenn die angegebene Datei vorhanden ist, ist die Funktion erfolgreich, und der Letzte Fehlercode wird auf ERROR_ALREADY_EXISTS (183) festgelegt.

Wenn die angegebene Datei nicht vorhanden ist und ein gültiger Pfad zu einem beschreibbaren Speicherort ist, erstellt die Funktion eine Datei, und der Code des letzten Fehlers wird auf 0 festgelegt.

OPEN_EXISTING 3

Öffnet eine Datei oder ein Gerät nur, wenn es vorhanden ist.

Wenn die angegebene Datei oder das angegebene Gerät nicht vorhanden ist, schlägt die Funktion fehl, und der Code des letzten Fehlers ist auf ERROR_FILE_NOT_FOUND (2) festgelegt.

TRUNCATE_EXISTING 5

Öffnet eine Datei und schneidet sie ab, sodass ihre Größe null Bytes beträgt, nur wenn sie vorhanden ist.

Wenn die angegebene Datei nicht vorhanden ist, schlägt die Funktion fehl, und der Letzte Fehlercode ist auf ERROR_FILE_NOT_FOUND (2) festgelegt.

Der aufrufende Prozess muss die Datei mit dem GENERIC_WRITE Bit öffnen, das als Teil des dwDesiredAccess-Parameters festgelegt ist.

pCreateExParams

Zeiger auf eine optionale CREATEFILE2_EXTENDED_PARAMETERS-Struktur .

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein geöffnetes Handle für die angegebene Datei, das angegebene Gerät, die benannte Pipe oder den angegebenen E-Mail-Slot.

Wenn die Funktion fehlschlägt, ist der Rückgabewert INVALID_HANDLE_VALUE. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 1803
Kopfzeile fileapifromapp.h