ReOpenFile-Funktion (winbase.h)
Öffnet das angegebene Dateisystemobjekt mit unterschiedlichen Zugriffsrechten, Freigabemodi und Flags erneut.
Syntax
HANDLE ReOpenFile(
[in] HANDLE hOriginalFile,
[in] DWORD dwDesiredAccess,
[in] DWORD dwShareMode,
[in] DWORD dwFlagsAndAttributes
);
Parameter
[in] hOriginalFile
Ein Handle für das erneut zu öffnende Objekt. Das Objekt muss von der CreateFile-Funktion erstellt worden sein.
[in] dwDesiredAccess
Der erforderliche Zugriff auf das Objekt. Eine Liste der Werte finden Sie unter Dateisicherheit und Zugriffsrechte. Sie können keinen Zugriffsmodus anfordern, der mit dem in einer vorherigen offenen Anforderung angegebenen Freigabemodus in Konflikt steht, dessen Handle noch geöffnet ist.
Wenn dieser Parameter null (0) ist, kann die Anwendung Geräteattribute abfragen, ohne auf das Gerät zuzugreifen. Dies ist nützlich, wenn eine Anwendung die Größe eines Diskettenlaufwerks und die unterstützten Formate bestimmen möchte, ohne dass eine Diskette im Laufwerk erforderlich ist.
[in] dwShareMode
Der Freigabemodus des Objekts. Sie können keinen Freigabemodus anfordern, der mit dem in einer früheren offenen Anforderung angegebenen Zugriffsmodus in Konflikt steht, dessen Handle noch geöffnet ist.
Wenn dieser Parameter null (0) ist und CreateFile erfolgreich ist, kann das Objekt nicht freigegeben werden und kann erst wieder geöffnet werden, wenn das Handle geschlossen ist.
Damit andere Prozesse das Objekt freigeben können, während es in Ihrem Prozess geöffnet ist, verwenden Sie eine Kombination aus einem oder mehreren der folgenden Werte, um den Typ des Zugriffs anzugeben, den sie beim Öffnen des Objekts anfordern können. Diese Freigabeoptionen bleiben wirksam, bis Sie das Handle für das Objekt schließen.
[in] dwFlagsAndAttributes
Die Dateiflags. Dieser Parameter kann einen oder mehrere der folgenden Werte aufweisen.
Wert | Bedeutung |
---|---|
|
Gibt an, dass die Datei für einen Sicherungs- oder Wiederherstellungsvorgang geöffnet oder erstellt wird. Das System stellt sicher, dass der aufrufende Prozess Dateisicherheitsprüfungen außer Kraft setzt, vorausgesetzt, er verfügt über die SE_BACKUP_NAME - und SE_RESTORE_NAME-Berechtigungen . Weitere Informationen finden Sie unter Ändern von Berechtigungen in einem Token.
Sie können dieses Flag auch festlegen, um ein Handle für ein Verzeichnis abzurufen. Sofern angegeben, kann ein Verzeichnishandle anstelle eines Dateihandles an einige Funktionen übergeben werden. |
|
Gibt an, dass das Betriebssystem die Datei sofort nach dem Schließen aller Handles löschen soll, nicht nur das angegebene Handle, sondern auch alle anderen geöffneten oder duplizierten Handles.
Nachfolgende offene Anforderungen für die Datei schlagen fehl, es sei denn , FILE_SHARE_DELETE wird verwendet. |
|
Weist das System an, die Datei ohne Zwischenpufferung oder Zwischenspeicherung zu öffnen. In Kombination mit FILE_FLAG_OVERLAPPED sorgt das Flag für maximale asynchrone Leistung, da die E/A-Vorgänge nicht von den synchronen Vorgängen des Speicher-Managers abhängig sind. Einige E/A-Vorgänge dauern jedoch länger, da die Daten nicht im Cache gespeichert werden.
Eine Anwendung muss bestimmte Anforderungen erfüllen, wenn sie mit Dateien arbeiten, die mit FILE_FLAG_NO_BUFFERING geöffnet werden:
Eine Anwendung kann eine Volumensektorgröße ermitteln, indem sie die GetDiskFreeSpace-Funktion aufruft. |
|
Gibt an, dass die Dateidaten angefordert, aber weiterhin im Remotespeicher gespeichert werden sollen. Es sollte nicht zurück in den lokalen Speicher transportiert werden. Dieses Flag ist für die Verwendung durch Remotespeichersysteme vorgesehen. |
|
Wenn dieses Flag verwendet wird, erfolgt die normale Analysepunktverarbeitung nicht, und ReOpenFile versucht, den Analysepunkt zu öffnen. Wenn eine Datei geöffnet wird, wird ein Dateihandle zurückgegeben, unabhängig davon, ob der Filter, der den Analysepunkt steuert, betriebsbereit ist. Dieses Flag kann nicht mit dem CREATE_ALWAYS-Flag verwendet werden. Wenn die Datei kein Analysepunkt ist, wird dieses Flag ignoriert. |
|
Weist das System an, das Objekt zu initialisieren, sodass Vorgänge, für die die Verarbeitung einen erheblichen Zeitraum in Anspruch nimmt, ERROR_IO_PENDING zurückgeben. Wenn der Vorgang abgeschlossen ist, wird das angegebene Ereignis auf den Signalzustand festgelegt.
Wenn Sie FILE_FLAG_OVERLAPPED angeben, müssen die Lese- und Schreibfunktionen der Datei eine ÜBERLAPPENDE Struktur angeben. Das heißt, wenn FILE_FLAG_OVERLAPPED angegeben wird, muss eine Anwendung überlappende Lese- und Schreibvorgänge ausführen. Wenn FILE_FLAG_OVERLAPPED angegeben wird, behält das System den Dateizeiger nicht bei. Die Dateiposition muss als Teil des parameters lpOverlapped (der auf eine OVERLAPPED-Struktur verweist) an die Lese- und Schreibfunktionen der Datei übergeben werden. Dieses Flag ermöglicht auch, dass mehrere Vorgänge gleichzeitig mit dem Handle ausgeführt werden können (z. B. ein gleichzeitiger Lese- und Schreibvorgang). |
|
Gibt an, dass auf die Datei gemäß POSIX-Regeln zugegriffen werden soll. Dies schließt das Zulassen mehrerer Dateien mit Namen ein, die sich nur für den Fall unterscheiden, für Dateisysteme, die eine solche Benennung unterstützen. Verwenden Sie diese Option vorsichtig, da mit diesem Flag erstellte Dateien möglicherweise nicht für Anwendungen zugänglich sind, die für MS-DOS oder 16-Bit-Windows geschrieben wurden. |
|
Gibt an, dass auf die Datei willkürlich zugegriffen wird. Das System kann dies als Hinweis zur Optimierung der Zwischenspeicherung von Dateien verwenden. |
|
Gibt an, dass auf die Datei sequenziell vom Anfang bis zum Ende zugegriffen wird. Das System kann dies als Hinweis zur Optimierung der Zwischenspeicherung von Dateien verwenden. Wenn eine Anwendung den Dateizeiger für den zufälligen Zugriff verschiebt, erfolgt möglicherweise keine optimale Zwischenspeicherung. Die ordnungsgemäße Ausführung ist jedoch weiterhin gewährleistet.
Das Angeben dieses Flags kann die Leistung für Anwendungen erhöhen, die große Dateien mithilfe des sequenziellen Zugriffs lesen. Noch deutlicher kann die Leistung bei Anwendungen sein, die große Dateien meist sequenziell lesen, aber gelegentlich kleine Bytebereiche überspringen. |
|
Weist das System an, durch jeden Zwischencache zu schreiben und direkt auf den Datenträger zu wechseln. Das System kann Schreibvorgänge weiterhin zwischenspeichern, aber nicht verzögert leeren. |
Wenn das Handle die Clientseite einer Named Pipe darstellt, kann der dwFlags-Parameter auch Informationen zur Sicherheitsqualität des Diensts enthalten. Weitere Informationen finden Sie unter Identitätswechsel. Wenn die aufrufende Anwendung das flag SECURITY_SQOS_PRESENT angibt, kann der dwFlags-Parameter einen oder mehrere der folgenden Werte enthalten.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein geöffnetes Handle für die angegebene Datei.
Wenn die Funktion fehlschlägt, ist der Rückgabewert INVALID_HANDLE_VALUE. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Hinweise
Der dwFlags-Parameter kann keines der Dateiattributeflags (FILE_ATTRIBUTE_*) enthalten. Diese können nur angegeben werden, wenn die Datei erstellt wird.
Unter Windows 8 und Windows Server 2012 wird diese Funktion von den folgenden Technologien unterstützt.
Technologie | Unterstützt |
---|---|
SMB 3.0-Protokoll (Server Message Block) | Ja |
SMB 3.0 Transparent Failover (TFO) | Ja |
SMB 3.0 mit Dateifreigaben mit horizontaler Skalierung (SO) | Ja |
Dateisystem mit freigegebenen Clustervolumes (CsvFS) | Ja |
Robustes Dateisystem (Resilient File System, ReFS) | Ja |
Anforderungen
Unterstützte Mindestversion (Client) | Windows Vista [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winbase.h (Windows.h einschließen) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |