NtCreateFile-Funktion (winternl.h)
Erstellt eine neue Datei oder ein neues Verzeichnis oder öffnet eine vorhandene Datei, ein vorhandenes Gerät, ein Verzeichnis oder ein Volume.
Diese Funktion ist der Benutzermodus, der der ZwCreateFile-Funktion entspricht, die im Windows Driver Kit (WDK) dokumentiert ist.
Syntax
__kernel_entry NTSTATUS NtCreateFile(
[out] PHANDLE FileHandle,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in, optional] PLARGE_INTEGER AllocationSize,
[in] ULONG FileAttributes,
[in] ULONG ShareAccess,
[in] ULONG CreateDisposition,
[in] ULONG CreateOptions,
[in] PVOID EaBuffer,
[in] ULONG EaLength
);
Parameter
[out] FileHandle
Ein Zeiger auf eine Variable, die das Dateihandle empfängt, wenn der Aufruf erfolgreich ist.
[in] DesiredAccess
Der ACCESS_MASK Wert, der den Zugriff ausdrückt, den der Aufrufer für die Datei oder das Verzeichnis benötigt. Der Satz systemdefinierter DesiredAccess-Flags bestimmt die folgenden spezifischen Zugriffsrechte für Dateiobjekte.
Geben Sie beim Erstellen oder Öffnen eines Verzeichnisses keine FILE_READ_DATA ,FILE_WRITE_DATA, FILE_APPEND_DATA oder FILE_EXECUTE an.
Aufrufer von NtCreateFile können für jedes Dateiobjekt, das keine Verzeichnisdatei darstellt, eine oder eine Kombination der folgenden Angeben angeben, möglicherweise mithilfe eines bitweisen OR mit zusätzlichen kompatiblen Flags aus der vorherigen Liste der DesiredAccess-Flags .
Der FILE_GENERIC_EXECUTE Wert ist für Geräte- und Zwischentreiber irrelevant.
Die STANDARD_RIGHTS_XXX sind vordefinierte Systemwerte, die zum Erzwingen der Sicherheit von Systemobjekten verwendet werden.
Um eine Verzeichnisdatei zu öffnen oder zu erstellen, können Aufrufer von NtCreateFile, wie auch mit dem CreateOptions-Parameter angegeben, eine oder eine Kombination aus den folgenden Angeben angeben, möglicherweise mithilfe eines bitweisen OR mit einem oder mehreren kompatiblen Flags aus der vorherigen Liste der DesiredAccess-Flags.
Wert | Bedeutung |
---|---|
|
Dateien im Verzeichnis können aufgelistet werden. |
|
Das Verzeichnis kann durchquert werden, d. h. es kann Teil des Pfadnamens einer Datei sein. |
[in] ObjectAttributes
Ein Zeiger auf eine Struktur, die bereits mit InitializeObjectAttributes initialisiert wurde. Elemente dieser Struktur für ein Dateiobjekt umfassen Folgendes.
Wert | Bedeutung |
---|---|
|
Gibt die Anzahl der Bytes der bereitgestellten ObjectAttributes-Daten an. Dieser Wert muss mindestens sizeof(OBJECT_ATTRIBUTES) sein. |
|
Gibt optional ein Handle für ein Verzeichnis an, das durch einen vorherigen Aufruf von NtCreateFile abgerufen wurde. Wenn dieser Wert NULL ist, muss das ObjectName-Element eine vollqualifizierte Dateispezifikation sein, die den vollständigen Pfad zur Zieldatei enthält. Wenn dieser Wert nicht NULL ist, gibt das ObjectName-Element einen Dateinamen relativ zu diesem Verzeichnis an. |
|
Zeigt auf eine gepufferte Unicode-Zeichenfolge, die die zu erstellende oder zu öffnende Datei benennt. Dieser Wert muss eine vollqualifizierte Dateispezifikation oder der Name eines Geräteobjekts sein, es sei denn, es handelt sich um den Namen einer Datei relativ zum von RootDirectory angegebenen Verzeichnis. Beispiel: \Device\Floppy1\myfile.dat oder \?? \B:\myfile.dat kann die vollqualifizierte Dateispezifikation sein, vorausgesetzt, der Diskettentreiber und das überladene Dateisystem sind bereits geladen. Weitere Informationen finden Sie unter Dateinamen, Pfade und Namespaces. |
|
Ist eine Gruppe von Flags, die die Dateiobjektattribute steuert. Dieser Wert kann null oder OBJ_CASE_INSENSITIVE sein, was angibt, dass Name-Lookup-Code die Groß-/Kleinschreibung des ObjectName-Members ignorieren sollte, anstatt eine Suche nach exakter Übereinstimmung durchzuführen. Der Wert OBJ_INHERIT ist für Geräte- und Zwischentreiber irrelevant. |
|
Gibt optional einen Sicherheitsdeskriptor an, der auf eine Datei angewendet werden soll. AcLs, die von einem solchen Sicherheitsdeskriptor angegeben werden, werden nur auf die Datei angewendet, wenn sie erstellt wird. Wenn der Wert beim Erstellen einer Datei NULL ist, ist die in der Datei platzierte ACL dateisystemabhängig. Die meisten Dateisysteme verteilen einen Teil einer solchen ACL aus der übergeordneten Verzeichnisdatei in Kombination mit der Standard-ACL des Aufrufers. Geräte- und Zwischentreiber können dieses Element auf NULL festlegen. |
|
Gibt die Zugriffsrechte an, die einem Server für den Sicherheitskontext des Clients erteilt werden sollen. Dieser Wert ist nur nicht NULL , wenn eine Verbindung mit einem geschützten Server hergestellt wird, sodass der Aufrufer steuern kann, welche Teile des Sicherheitskontexts des Aufrufers für den Server zur Verfügung gestellt werden und ob der Server die Identität des Aufrufers annehmen darf. |
[out] IoStatusBlock
Ein Zeiger auf eine Variable, die die endgültige Vervollständigung status und Informationen zum angeforderten Vorgang empfängt. Wenn sie von NtCreateFile zurückgegeben wird, enthält das Information-Element einen der folgenden Werte:
- FILE_CREATED
- FILE_OPENED
- FILE_OVERWRITTEN
- FILE_SUPERSEDED
- FILE_EXISTS
- FILE_DOES_NOT_EXIST
[in, optional] AllocationSize
Die anfängliche Zuordnungsgröße in Bytes für die Datei. Ein Wert ohne Zero hat keine Auswirkung, es sei denn, die Datei wird erstellt, überschrieben oder ersetzt.
[in] FileAttributes
Die Dateiattribute. Explizit angegebene Attribute werden nur angewendet, wenn die Datei erstellt, ersetzt oder in einigen Fällen überschrieben wird. Standardmäßig ist dieser Wert ein FILE_ATTRIBUTE_NORMAL, der durch eine ORed-Kombination aus einem oder mehreren FILE_ATTRIBUTE_xxxx-Flags überschrieben werden kann, die in Wdm.h und NtDdk.h definiert sind. Eine Liste der Flags, die mit NtCreateFile verwendet werden können, finden Sie unter CreateFile.
[in] ShareAccess
Der Typ des Freigabezugriffs, den der Aufrufer in der Datei verwenden möchte, als Null oder als einer oder eine Kombination der folgenden Werte.
Weitere Informationen finden Sie im Windows SDK.
[in] CreateDisposition
Gibt je nachdem, ob die Datei bereits vorhanden ist, als einen der folgenden Werte an, was zu tun ist.
[in] CreateOptions
Die Optionen, die beim Erstellen oder Öffnen der Datei als kompatible Kombination der folgenden Flags angewendet werden sollen.
Wert | Bedeutung |
---|---|
|
Die Datei, die erstellt oder geöffnet wird, ist eine Verzeichnisdatei. Mit diesem Flag muss der CreateDisposition-Parameter auf FILE_CREATE, FILE_OPEN oder FILE_OPEN_IF festgelegt werden. Mit diesem Flag enthalten andere kompatible CreateOptions-Flags nur Folgendes: FILE_SYNCHRONOUS_IO_ALERT, FILE_SYNCHRONOUS_IO _NONALERT, FILE_WRITE_THROUGH, FILE_OPEN_FOR_BACKUP_INTENT und FILE_OPEN_BY_FILE_ID. |
|
Die datei, die geöffnet wird, darf keine Verzeichnisdatei sein, andernfalls tritt bei diesem Aufruf ein Fehler auf. Das geöffnete Dateiobjekt kann eine Datendatei, ein logisches, virtuelles oder physisches Gerät oder ein Volume darstellen. |
|
Anwendungen, die Daten in die Datei schreiben, müssen die Daten tatsächlich in die Datei übertragen, bevor ein angeforderter Schreibvorgang als abgeschlossen betrachtet wird. Dieses Flag wird automatisch festgelegt, wenn das CreateOptions-Flag FILE_NO_INTERMEDIATE _BUFFERING festgelegt ist. |
|
Alle Zugriffe auf die Datei erfolgen sequenziell. |
|
Zugriffe auf die Datei können zufällig erfolgen, sodass keine sequenziellen Read-Ahead-Vorgänge für die Datei von FSDs oder dem System ausgeführt werden sollten. |
|
Die Datei kann nicht in den internen Puffern eines Treibers zwischengespeichert oder gepuffert werden. Dieses Flag ist mit dem DesiredAccess-FILE_APPEND_DATA-Flag nicht kompatibel. |
|
Alle Vorgänge für die Datei werden synchron ausgeführt. Jede Wartezeit im Namen des Anrufers unterliegt einer vorzeitigen Beendigung von Warnungen. Dieses Flag bewirkt auch, dass das E/A-System den Dateipositionskontext verwaltet. Wenn dieses Flag festgelegt ist, muss auch das DesiredAccessSYNCHRONIZE-Flag festgelegt werden. |
|
Alle Vorgänge für die Datei werden synchron ausgeführt. Wartezeiten im System, um E/A-Warteschlangen und -Abschluss zu synchronisieren, unterliegen keinen Warnungen. Dieses Flag bewirkt auch, dass das E/A-System den Dateipositionskontext verwaltet. Wenn dieses Flag festgelegt ist, muss auch das DesiredAccessSYNCHRONIZE-Flag festgelegt werden. |
|
Erstellen Sie eine Strukturverbindung für diese Datei, um sie über das Netzwerk zu öffnen. Dieses Flag wird von Geräte- und Zwischentreibern nicht verwendet. |
|
Wenn die erweiterten Attribute für eine vorhandene Datei, die geöffnet wird, angeben, dass der Aufrufer EAs verstehen muss, um die Datei ordnungsgemäß zu interpretieren, schlägt diese Anforderung fehl, da der Aufrufer nicht versteht, wie mit EAs umgegangen werden soll. Dieses Flag ist für Geräte- und Zwischentreiber irrelevant. |
|
Öffnen Sie eine Datei mit einem Analysepunkt, und umgehen Sie die normale Analysepunktverarbeitung für die Datei. Weitere Informationen finden Sie im Abschnitt mit Hinweisen. |
|
Löschen Sie die Datei, wenn das letzte Handle an NtClose übergeben wird. Wenn dieses Flag festgelegt ist, muss das DELETE-Flag im DesiredAccess-Parameter festgelegt werden. |
|
Der durch den ObjectAttributes-Parameter angegebene Dateiname enthält die 8-Byte-Dateireferenznummer für die Datei. Diese Nummer wird von und spezifisch für das jeweilige Dateisystem zugewiesen. Wenn es sich bei der Datei um einen Analysepunkt handelt, enthält der Dateiname auch den Namen eines Geräts. Beachten Sie, dass das FAT-Dateisystem dieses Flag nicht unterstützt. Dieses Flag wird von Geräte- und Zwischentreibern nicht verwendet. |
|
Die Datei wird für die Sicherungsabsicht geöffnet. Daher sollte das System bestimmte Zugriffsrechte überprüfen und dem Aufrufer den entsprechenden Zugriff auf die Datei gewähren, bevor der DesiredAccess-Parameter mit dem Sicherheitsdeskriptor der Datei überprüft wird. Dieses Flag wird von Geräte- und Zwischentreibern nicht verwendet. |
|
Dieses Flag ermöglicht es einer Anwendung, eine oplock(opportunistische) Filtersperre anzufordern, um zu verhindern, dass andere Anwendungen Freigabeverletzungen erhalten. Wenn bereits geöffnete Handles vorhanden sind, schlägt die Erstellungsanforderung mit STATUS_OPLOCK_NOT_GRANTED fehl. Weitere Informationen finden Sie im Abschnitt mit Hinweisen. |
|
Die Datei wird geöffnet, und eine opportunistische Sperre (Oplock) für die Datei wird als einzelner atomischer Vorgang angefordert. Das Dateisystem sucht nach Oplocks, bevor es den Erstellungsvorgang ausführt. Die Erstellung schlägt mit einem Rückgabecode von STATUS_CANNOT_BREAK_OPLOCK fehl, wenn das Ergebnis einen vorhandenen Oplock unterbrechen würde. Weitere Informationen finden Sie im Abschnitt Hinweise. Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Dieses Flag wird nicht unterstützt.
Dieses Flag wird in den folgenden Dateisystemen unterstützt: NTFS, FAT und exFAT. |
|
Schließen Sie diesen Vorgang sofort mit dem alternativen Erfolgscode STATUS_OPLOCK_BREAK_IN_PROGRESS ab, wenn die Zieldatei oplocked ist, anstatt den Thread des Aufrufers zu blockieren. Wenn die Datei oplocked ist, hat bereits ein anderer Aufrufer Zugriff auf die Datei. Dieses Flag wird von Geräte- und Zwischentreibern nicht verwendet. |
[in] EaBuffer
Zeiger auf einen EA-Puffer, der zum Übergeben erweiterter Attribute verwendet wird.
[in] EaLength
Länge des EA-Puffers.
Rückgabewert
NtCreateFile gibt entweder STATUS_SUCCESS oder einen entsprechenden Fehler status zurück. Wenn ein Fehler status zurückgegeben wird, kann der Aufrufer weitere Informationen zur Ursache des Fehlers finden, indem er den IoStatusBlock überprüft. Um diese Überprüfung zu vereinfachen, kann eine Anwendung die Makros NT_SUCCESS, NT_ERROR und NT_WARNING verwenden.
Hinweise
Das von NtCreateFile angegebene Handle kann von nachfolgenden Aufrufen verwendet werden, um Daten innerhalb der Datei oder des Zustands oder der Attribute des Dateiobjekts zu bearbeiten.
Es gibt zwei alternative Möglichkeiten, den Namen der Datei anzugeben, die mit NtCreateFile erstellt oder geöffnet werden soll:
- Als vollqualifizierter Pfadname, der im ObjectName-Member der Eingabe ObjectAttributes angegeben wird
- Als Pfadname relativ zur Verzeichnisdatei, die durch das Handle im RootDirectory-Member der Eingabe ObjectAttributes dargestellt wird
- Damit ein Aufrufer eine E/A-Vervollständigung synchronisieren kann, indem er auf das zurückgegebene FileHandle wartet, muss das SYNCHRONIZE-Flag festgelegt werden.
- Das Übergeben einer Null an DesiredFlags ist ungültig.
- Wenn nur die Flags FILE_APPEND_DATA und SYNCHRONIZE festgelegt sind, kann der Aufrufer nur an das Ende der Datei schreiben, und alle Offsetinformationen zu Schreibvorgängen in die Datei werden ignoriert. Die Datei wird jedoch automatisch erweitert, wenn dies für diesen Schreibvorgang erforderlich ist.
- Das Festlegen des FILE_WRITE_DATA-Flags für eine Datei ermöglicht auch Schreibvorgänge über das Ende der Datei hinaus. Die Datei wird auch für diese Schreibart automatisch erweitert.
- Wenn nur die FILE_EXECUTE - und SYNCHRONIZE-Flags festgelegt sind, kann der Aufrufer keine Daten in der Datei direkt lesen oder schreiben, indem das zurückgegebene FileHandle verwendet wird. Das heißt, alle Vorgänge für die Datei erfolgen über den System pager als Reaktion auf Anweisungen und Datenzugriffe.
Damit eine freigegebene Datei erfolgreich geöffnet werden kann, muss der angeforderte DesiredAccess-Parameter für die Datei sowohl mit den DesiredAccess - als auch mit den ShareAccess-Spezifikationen aller vorherigen Öffnungen kompatibel sein, die noch nicht mit NtClose veröffentlicht wurden. Das heißt, der DesiredAccess-Parameter , der ntCreateFile für eine bestimmte Datei angegeben wird, darf nicht mit den Zugriffen in Konflikt stehen, die andere Öffnende der Datei nicht zugelassen haben.
Der CreateDisposition-WertFILE_SUPERSEDE erfordert, dass der Aufrufer über DELETE-Zugriff auf ein vorhandenes Dateiobjekt verfügt. Wenn ja, wird diese Datei durch einen erfolgreichen Aufruf von NtCreateFile mit FILE_SUPERSEDE für eine vorhandene Datei effektiv gelöscht und dann neu erstellt. Dies bedeutet, dass die Datei geöffnet wurde, wenn die Datei bereits von einem anderen Thread geöffnet wurde, indem sie einen ShareAccess-Parameter mit dem FILE_SHARE_DELETE-Flag festgelegt hat. Beachten Sie, dass diese Art von Disposition mit dem POSIX-Stil zum Überschreiben von Dateien konsistent ist. Die CreateDisposition-WerteFILE_OVERWRITE_IF und FILE_SUPERSEDE sind ähnlich. Wenn ZwCreateFile mit einer vorhandenen Datei und einem dieser CreateDisposition-Werte aufgerufen wird, wird die Datei ersetzt.
Das Überschreiben einer Datei entspricht semantisch einem Ablösevorgang, mit Ausnahme des Folgenden:
- Der Aufrufer muss Schreibzugriff auf die Datei haben, anstatt den Zugriff zu löschen. Dies bedeutet, dass, wenn die Datei bereits von einem anderen Thread geöffnet wurde, die Datei mit dem imShareAccess-Parameter für eingabe festgelegten FILE_SHARE_WRITE-Flag geöffnet wurde.
- Die angegebenen Dateiattribute werden logisch mit denen, die sich bereits in der Datei befinden, aufgehoben. Dies bedeutet, dass ein nachfolgender Aufrufer von NtCreateFile vorhandene FileAttributes-Flags nicht deaktivieren kann, wenn die Datei bereits von einem anderen Thread geöffnet wurde, aber zusätzliche Flags für dieselbe Datei aktivieren kann. Beachten Sie, dass diese Art des Überschreibens von Dateien mit den Betriebssystemen MS-DOS, Windows 3.1 und OS/2 konsistent ist.
Das Flag CreateOptionsFILE_NO_INTERMEDIATE_BUFFERING verhindert, dass das Dateisystem im Auftrag des Aufrufers zwischenpuffert. Wenn Sie diesen Wert angeben, gelten bestimmte Einschränkungen für die Parameter des Aufrufers für andere NtXXXFile-Routinen , einschließlich der folgenden:
- Jedes optionale ByteOffset , das an die NtReadFile- oder NtWriteFile-Funktion übergeben wird, muss ein Integral der Sektorgröße sein.
- Die anNtReadFile oder NtWriteFile übergebene Länge muss ein Integral der Sektorgröße sein. Beachten Sie, dass das Angeben eines Lesevorgangs für einen Puffer, dessen Länge genau der Sektorgröße entspricht, dazu führen kann, dass eine geringere Anzahl wichtiger Bytes an diesen Puffer übertragen wird, wenn das Ende der Datei während der Übertragung erreicht wurde.
- Puffer müssen entsprechend der Ausrichtungsanforderung des zugrunde liegenden Geräts angepasst werden. Diese Informationen können abgerufen werden, indem Sie NtCreateFile aufrufen, um ein Handle für das Dateiobjekt abzurufen, das das physische Gerät darstellt, und dann NtQueryInformationFile mit diesem Handle aufrufen. Eine Liste der Systemwerte FILE_XXX_ALIGNMENT finden Sie in der Windows SDK-Dokumentation.
- Aufrufe von NtSetInformationFile , bei denen der FileInformationClass-Parameter auf FilePositionInformation festgelegt ist, müssen einen Offset angeben, der ein Integral der Sektorgröße ist.
Wenn der CreateOptions-Parameter das flag FILE_OPEN_REPARSE_POINT angibt und NtCreateFile eine Datei mit einem Analysepunkt öffnet, wird die normale Reparseverarbeitung nicht ausgeführt, und NtCreateFile versucht, die Analysepunktdatei direkt zu öffnen. Wenn das FILE_OPEN_REPARSE_POINT-Flag nicht angegeben ist, erfolgt die normale Analysepunktverarbeitung für die Datei. In beiden Fällen gibt NtCreateFileSTATUS_SUCCESS zurück, wenn der geöffnete Vorgang erfolgreich war. andernfalls ein Fehlercode. Die NtCreateFile-Funktion gibt nie STATUS_REPARSE zurück.
Das FILE_OPEN_REQUIRING_OPLOCK Flag des CreateOptions-Parameters beseitigt die Zeit zwischen dem Öffnen der Datei und dem Anfordern eines Oplocks, der möglicherweise einem Drittanbieter das Öffnen der Datei ermöglichen könnte, was zu einer Freigabeverletzung führen würde. Eine Anwendung kann das FILE_OPEN_REQUIRING_OPLOCK-Flag mit NtCreateFile verwenden und dann einen beliebigen Oplock anfordern. Dadurch wird sichergestellt, dass ein Oplock-Besitzer über jede nachfolgende offene Anforderung benachrichtigt wird, die eine Freigabeverletzung verursacht.
Wenn in Windows 7 andere Handles für die Datei vorhanden sind, wenn eine Anwendung dieses Flag verwendet, schlägt der Erstellungsvorgang mit STATUS_OPLOCK_NOT_GRANTED fehl. Diese Einschränkung ist ab Windows 8 nicht mehr vorhanden.
Wenn dieser Erstellungsvorgang einen Oplock unterbricht, der bereits in der Datei vorhanden ist, führt das Festlegen des FILE_OPEN_REQUIRING_OPLOCK Flags dazu, dass der Erstellungsvorgang mit STATUS_CANNOT_BREAK_OPLOCK fehlschlägt. Der vorhandene Oplock wird durch diesen Erstellungsvorgang nicht unterbrochen.
Eine Anwendung, die dieses Flag verwendet, muss einen Oplock anfordern, nachdem dieser Aufruf erfolgreich war, da sonst alle nachfolgenden Versuche zum Öffnen der Datei ohne den Vorteil der normalen oplock-Verarbeitung blockiert werden. Wenn dieser Aufruf erfolgreich ist, aber die nachfolgende oplock-Anforderung fehlschlägt, muss eine Anwendung, die dieses Flag verwendet, ihr Handle schließen, nachdem sie erkannt hat, dass die oplock-Anforderung fehlgeschlagen ist.
Das FILE_RESERVE_OPFILTER Flag des CreateOptions-Parameters ermöglicht es einer Anwendung, einen Oplock der Ebene 1, Batch oder Filter anzufordern, um zu verhindern, dass andere Anwendungen Freigabeverletzungen erhalten. In der Praxis ist die FILE_RESERVE_OPFILTER jedoch nur für Filter oplocks nützlich. Um es zu verwenden, müssen Sie die folgenden Schritte ausführen:
- Stellen Sie eine Create-Anforderung mit CreateOptions von FILE_RESERVE_OPFILTER, DesiredAccess von genau FILE_READ_ATTRIBUTES und ShareAccess genau
(FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE)
aus. Mögliche Fehler sind wie folgt:- Wenn bereits geöffnete Handles vorhanden sind, schlägt die Erstellungsanforderung mit STATUS_OPLOCK_NOT_GRANTED fehl, und auch der nächste angeforderte Oplock schlägt fehl.
- Wenn Sie mit mehr Zugriff als FILE_READ_ATTRIBUTES oder weniger Freigabe
(FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE)
öffnen, schlägt die Anforderung mit STATUS_OPLOCK_NOT_GRANTED fehl.
- Wenn die Erstellungsanforderung erfolgreich ist, fordern Sie einen oplock an.
- Öffnen Sie ein weiteres Handle für die Datei, um E/A-Vorgänge zu erledigen.
(FILE_READ_ATTRIBUTES | FILE_WRITE_ATTRIBUTES | FILE_READ_DATA | FILE_READ_EA | FILE_EXECUTE | SYNCHRONIZE | READ_CONTROL)
enthält und trotzdem keinen Filter-Oplock unterbricht. Ein DesiredAccess größer als (FILE_READ_ATTRIBUTES | FILE_WRITE_ATTRIBUTES | SYNCHRONIZE)
unterbricht jedoch einen Level 1- oder Batch-Oplock und macht das FILE_RESERVE_OPFILTER Flag für diese Oplock-Typen nutzlos.
NTFS ist das einzige Microsoft-Dateisystem, das FILE_RESERVE_OPFILTER implementiert.
Weitere Informationen zu oplocks finden Sie unter Oplock Semantics.
Beachten Sie, dass die WDK-Headerdatei NtDef.h für viele Konstantendefinitionen sowie für das Makro InitializeObjectAttributes erforderlich ist. Sie können auch die Funktionen LoadLibrary und GetProcAddress verwenden, um eine dynamische Verknüpfung mit NtDll.dll.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | winternl.h |
Bibliothek | ntdll.lib |
DLL | ntdll.dll |
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für