Freigeben über


ZwSetInformationFile-Funktion (wdm.h)

Die ZwSetInformationFile-Routine ändert verschiedene Arten von Informationen zu einem Dateiobjekt.

Syntax

NTSYSAPI NTSTATUS ZwSetInformationFile(
  [in]  HANDLE                 FileHandle,
  [out] PIO_STATUS_BLOCK       IoStatusBlock,
  [in]  PVOID                  FileInformation,
  [in]  ULONG                  Length,
  [in]  FILE_INFORMATION_CLASS FileInformationClass
);

Parameter

[in] FileHandle

Handle für das Dateiobjekt. Dieses Handle wird durch einen erfolgreichen Aufruf von ZwCreateFile oder ZwOpenFile erstellt.

[out] IoStatusBlock

Zeiger auf eine IO_STATUS_BLOCK-Struktur, die den endgültigen Abschluss status und Informationen zum angeforderten Vorgang empfängt. Das Information-Element empfängt die Anzahl von Bytes, die für die Datei festgelegt sind.

[in] FileInformation

Zeiger auf einen Puffer, der die für die Datei festzulegenden Informationen enthält. Die spezifische Struktur in diesem Puffer wird durch den FileInformationClass-Parameter bestimmt. Wenn der FileInformationClass-Parameter beispielsweise auf die FileDispositionInformationEx-Konstante festgelegt ist, sollte dieser Parameter ein Zeiger auf eine FILE_DISPOSITION_INFORMATION_EX-Struktur sein.

[in] Length

Die Größe des FileInformation-Puffers in Bytes.

[in] FileInformationClass

Der Typ der Informationen, die im Puffer bereitgestellt werden, auf den von FileInformation verwiesen wird, der für die Datei festgelegt werden soll. Geräte- und Zwischentreiber können einen der folgenden FILE_INFORMATION_CLASS-Werte angeben.

FileInformationClass Wert Bedeutung
FileBasicInformation Ändern Sie die Informationen, die in einer FILE_BASIC_INFORMATION-Struktur bereitgestellt werden. Der Aufrufer muss die Datei mit dem im DesiredAccess-Parameter festgelegten FILE_WRITE_ATTRIBUTES-Flag geöffnet haben.
FileDispositionInformation Anforderung zum Löschen der Datei, wenn sie geschlossen wird, oder Abbrechen eines zuvor angeforderten Löschvorgangs. Die Auswahl, ob gelöscht oder abgebrochen werden soll, wird in einer FILE_DISPOSITION_INFORMATION-Struktur angegeben. Der Aufrufer muss die Datei geöffnet haben, wobei das DELETE-Flag im DesiredAccess-Parameter festgelegt ist.
FileDispositionInformationEx Anforderung zum Löschen der Datei oder Abbrechen eines zuvor angeforderten Löschvorgangs. Die Auswahl, ob gelöscht oder abgebrochen werden soll, sowie Die Einstellungen, wann und wie der Löschvorgang ausgeführt werden soll, werden in einer FILE_DISPOSITION_INFORMATION_EX-Struktur bereitgestellt. Der Aufrufer muss die Datei mit dem delete**-Flag geöffnet haben, das im DesiredAccess-Parameter festgelegt ist.
FileEndOfFileInformation Ändern Sie die aktuellen Informationen zum Dateiende, die in einer FILE_END_OF_FILE_INFORMATION-Struktur bereitgestellt werden. Der Vorgang kann die Datei entweder abschneiden oder erweitern. Der Aufrufer muss die Datei mit dem im DesiredAccess-Parameter festgelegten FILE_WRITE_DATA-Flag geöffnet haben.
FileIoPriorityHintInformation Ändern Sie den aktuellen IRP-Standardprioritätshinweis für das Dateihandle. Der neue Wert wird in einer FILE_IO_PRIORITY_HINT_INFORMATION-Struktur bereitgestellt. Diese Struktur muss 8 Byte ausgerichtet sein.
FileLinkInformation Erstellen Sie eine feste Verknüpfung mit einer vorhandenen Datei, die in einer FILE_LINK_INFORMATION-Struktur angegeben ist. Nicht alle Dateisysteme unterstützen feste Links. Beispielsweise funktioniert NTFS, während FAT dies nicht tut.
FilePositionInformation Ändern Sie die aktuellen Dateiinformationen, die in einer FILE_POSITION_INFORMATION-Struktur gespeichert sind.
FileRenameInformation Ändern Sie den aktuellen Dateinamen, der in einer FILE_RENAME_INFORMATION-Struktur angegeben wird. Der Aufrufer muss über DELETE-Zugriff auf die Datei verfügen.
FileShortNameInformation Ändern Sie den aktuellen kurzen Dateinamen, der in einer FILE_NAME_INFORMATION-Struktur angegeben wird. Die Datei muss sich auf einem NTFS-Volume befinden, und der Aufrufer muss die Datei mit dem DELETE-Flag DesiredAccess geöffnet haben, das im DesiredAccess-Parameter festgelegt ist.
FileValidDataLengthInformation Ändern Sie die aktuell gültige Datenlänge für die Datei, die in einer FILE_VALID_DATA_LENGTH_INFORMATION-Struktur angegeben wird. Die Datei muss sich auf einem NTFS-Volume befinden, und der Aufrufer muss die Datei mit dem im DesiredAccess-Parameter festgelegten FILE_WRITE_DATA-Flag geöffnet haben. Nicht-Administratoren und Remotebenutzer müssen über die SeManageVolumePrivilege-Berechtigung verfügen.
FileReplaceCompletionInformation Ändern oder entfernen Sie den E/A-Vervollständigungsport für das angegebene Dateihandle. Der Aufrufer stellt einen Zeiger auf eine FILE_COMPLETION_INFORMATION-Struktur bereit, die ein Porthandle und einen Abschlussschlüssel angibt. Wenn das Porthandle ungleich NULL ist, gibt dieses Handle einen neuen E/A-Vervollständigungsport an, der dem Dateihandle zugeordnet werden soll. Um den E/A-Vervollständigungsport zu entfernen, der dem Dateihandle zugeordnet ist, legen Sie das Porthandle in der Struktur auf NULL fest. Um ein Porthandle zu erhalten, kann ein Benutzermodusaufrufer die CreateIoCompletionPort-Funktion aufrufen.

Rückgabewert

ZwSetInformationFile gibt STATUS_SUCCESS oder einen entsprechenden Fehler status zurück.

Hinweise

ZwSetInformationFile ändert Informationen zu einer Datei. Es ignoriert alle Member einer FILE_XXX_INFORMATION-Struktur , die von einem bestimmten Gerät oder Dateisystem nicht unterstützt wird.

Wenn Sie FileInformationClass auf FileDispositionInformation festlegen, können Sie FileHandle anschließend an ZwClose, aber nicht an eine andere ZwXxx-Dateiroutine übergeben. Da FileDispositionInformation bewirkt, dass die Datei zum Löschen markiert wird, ist es ein Programmierfehler, jeden nachfolgenden Vorgang für das Handle außer dem Schließen zu versuchen.

Wenn Sie FileInformationClass auf FilePositionInformation festlegen und der vorherige Aufruf von ZwCreateFile das flag FILE_NO_INTERMEDIATE_BUFFERING im CreateOptions-Parameter enthält, werden bestimmte Einschränkungen für das CurrentByteOffset-Element der FILE_POSITION_INFORMATION-Struktur erzwungen. Weitere Informationen finden Sie unter ZwCreateFile.

Wenn Sie FileInformationClass auf FileEndOfFileInformation festlegen und der EndOfFile-Member von FILE_END_OF_FILE_INFORMATION einen Offset angibt, der über die aktuelle Dateiendemarkierung hinausgeht, erweitert ZwSetInformationFile die Datei und füllt die Erweiterung mit Nullen.

Weitere Informationen zum Arbeiten mit Dateien finden Sie unter Verwenden von Dateien in einem Treiber.

Aufrufer von ZwSetInformationFile müssen unter IRQL = PASSIVE_LEVEL und mit aktivierten speziellen Kernel-APCs ausgeführt werden.

Wenn der Aufruf dieser Funktion im Benutzermodus erfolgt, sollten Sie den Namen "NtSetInformationFile" anstelle von "ZwSetInformationFile" verwenden.

Bei Aufrufen von Kernelmodustreibern können sich die NtXxx - und ZwXxx-Versionen einer Windows Native System Services-Routine anders verhalten, wie sie Eingabeparameter verarbeiten und interpretieren. Weitere Informationen zur Beziehung zwischen den Nt Xxx- und ZwXxx-Versionen einer Routine finden Sie unter Verwenden von Nt- und Zw-Versionen der systemeigenen Systemdienstroutinen.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (siehe Abschnitt "Hinweise")
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Weitere Informationen

CreateIoCompletionPort

FILE_BASIC_INFORMATION

FILE_COMPLETION_INFORMATION

FILE_DISPOSITION_INFORMATION

FILE_END_OF_FILE_INFORMATION

FILE_IO_PRIORITY_HINT_INFORMATION

FILE_LINK_INFORMATION

FILE_NAME_INFORMATION

FILE_POSITION_INFORMATION

FILE_RENAME_INFORMATION

FILE_VALID_DATA_LENGTH_INFORMATION

Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen

ZwClose

ZwCreateFile

ZwOpenFile

ZwQueryInformationFile