Share via


Funzione ZwSetInformationFile (wdm.h)

La routine ZwSetInformationFile modifica vari tipi di informazioni su un oggetto file.

Sintassi

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

Parametri

[in] FileHandle

Handle per l'oggetto file. Questo handle viene creato da una chiamata riuscita a ZwCreateFile o ZwOpenFile.

[out] IoStatusBlock

Puntatore a una struttura IO_STATUS_BLOCK che riceve lo stato di completamento finale e informazioni sull'operazione richiesta. Il membro Information riceve il numero di byte impostati nel file.

[in] FileInformation

Puntatore a un buffer contenente le informazioni da impostare per il file. La struttura specifica in questo buffer è determinata dal parametro FileInformationClass . Ad esempio, se il parametro FileInformationClass è impostato sulla costante FileDispositionInformationEx , questo parametro deve essere un puntatore a una struttura FILE_DISPOSITION_INFORMATION_EX .

[in] Length

Dimensioni, in byte, del buffer FileInformation .

[in] FileInformationClass

Tipo di informazioni, fornito nel buffer a cui punta FileInformation, da impostare per il file. I driver intermedi e di dispositivo possono specificare uno dei valori di FILE_INFORMATION_CLASS seguenti.

FileInformationClass Valore Significato
FileBasicInformation Modificare le informazioni fornite in una struttura FILE_BASIC_INFORMATION . Il chiamante deve aver aperto il file con il flag FILE_WRITE_ATTRIBUTES impostato nel parametro DesiredAccess .
FileDispositionInformation Richiedere di eliminare il file quando viene chiuso o annullare un'eliminazione richiesta in precedenza. La scelta se eliminare o annullare viene fornita in una struttura FILE_DISPOSITION_INFORMATION . Il chiamante deve aver aperto il file con il flag DELETE impostato nel parametro DesiredAccess .
FileDispositionInformationEx Richiedere di eliminare il file o annullare un'eliminazione richiesta in precedenza. La scelta se eliminare o annullare, nonché le impostazioni per quando e come deve essere eseguita l'eliminazione, vengono fornite in una struttura di FILE_DISPOSITION_INFORMATION_EX . Il chiamante deve aver aperto il file con il flag DELETE** impostato nel parametro DesiredAccess .
FileEndOfFileInformation Modificare le informazioni di fine file correnti, fornite in una struttura di FILE_END_OF_FILE_INFORMATION . L'operazione può troncare o estendere il file. Il chiamante deve aver aperto il file con il flag FILE_WRITE_DATA impostato nel parametro DesiredAccess .
FileIoPriorityHintInformation Modificare l'hint di priorità IRP predefinito corrente per l'handle di file. Il nuovo valore viene fornito in una struttura FILE_IO_PRIORITY_HINT_INFORMATION . Questa struttura deve essere allineata a 8 byte.
FileLinkInformation Creare un collegamento rigido a un file esistente, specificato in una struttura FILE_LINK_INFORMATION . Non tutti i file system supportano collegamenti rigidi; ad esempio NTFS non funziona mentre FAT non.
FilePositionInformation Modificare le informazioni sul file corrente, archiviate in una struttura di FILE_POSITION_INFORMATION .
FileRenameInformation Modificare il nome del file corrente, fornito in una struttura FILE_RENAME_INFORMATION . Il chiamante deve avere accesso DELETE al file.
FileShortNameInformation Modificare il nome del file breve corrente, fornito in una struttura FILE_NAME_INFORMATION . Il file deve trovarsi in un volume NTFS e il chiamante deve aver aperto il file con il flag DesiredAccess DELETE impostato nel parametro DesiredAccess .
FileValidDataLengthInformation Modificare la lunghezza dei dati valida corrente per il file, fornito in una struttura di FILE_VALID_DATA_LENGTH_INFORMATION . Il file deve trovarsi in un volume NTFS e il chiamante deve aver aperto il file con il flag FILE_WRITE_DATA impostato nel parametro DesiredAccess . Gli utenti non amministratori e remoti devono avere il privilegio SeManageVolumePrivilege .
FileReplaceCompletionInformation Modificare o rimuovere la porta di completamento di I/O per l'handle di file specificato. Il chiamante fornisce un puntatore a una struttura FILE_COMPLETION_INFORMATION che specifica un handle di porta e una chiave di completamento. Se l'handle di porta non è NULL, questo handle specifica una nuova porta di completamento I/O da associare all'handle di file. Per rimuovere la porta di completamento di I/O associata all'handle di file, impostare l'handle di porta nella struttura su NULL. Per ottenere un handle di porta, un chiamante in modalità utente può chiamare la funzione CreateIoCompletionPort .

Valore restituito

ZwSetInformationFile restituisce STATUS_SUCCESS o uno stato di errore appropriato.

Commenti

ZwSetInformationFile modifica le informazioni su un file. Ignora qualsiasi membro di una struttura FILE_XXX_INFORMATION non supportata da un particolare dispositivo o file system.

Se imposti FileInformationClass su FileDispositionInformation, puoi successivamente passare FileHandle a ZwClose ma non su nessun'altra routine ZwXxxFile . Poiché FileDispositionInformation fa sì che il file venga contrassegnato per l'eliminazione, si tratta di un errore di programmazione per tentare qualsiasi operazione successiva nell'handle diverso da chiuderlo.

Se imposti FileInformationClass su FilePositionInformation e la chiamata precedente a ZwCreateFile includeva il flag FILE_NO_INTERMEDIATE_BUFFERING nel parametro CreateOptions , vengono applicate determinate restrizioni per il membro CurrentByteOffset della struttura FILE_POSITION_INFORMATION . Per altre informazioni, vedere ZwCreateFile.

Se imposti FileInformationClass su FileEndOfFileInformation e il membro EndOfFile di FILE_END_OF_FILE_INFORMATION specifica un offset oltre la fine del file corrente, ZwSetInformationFile estende il file e riempie l'estensione con zeri.

Per altre informazioni sull'uso dei file, vedere Uso di file in un driver.

I chiamanti di ZwSetInformationFile devono essere in esecuzione in IRQL = PASSIVE_LEVEL e con API kernel speciali abilitate.

Se la chiamata a questa funzione si verifica in modalità utente, devi usare il nome "NtSetInformationFile" anziché "ZwSetInformationFile".

Per le chiamate da driver in modalità kernel, le versioni NtXxx e ZwXxx di una routine di Servizi di sistema nativi di Windows possono comportarsi in modo diverso nel modo in cui gestiscono e interpretano i parametri di input. Per altre informazioni sulla relazione tra le versioni NtXxx e ZwXxx di una routine, vedere Using Nt and Zw Versions of the Native System Services Routines .For more information about the Nt Xxx and Zw versions of the Native System Services Routines.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (vedere la sezione Osservazioni)
Regole di conformità DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Vedi anche

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

Uso delle versioni Nt e Zw delle routine native di Servizi di sistema

ZwClose

ZwCreateFile

ZwOpenFile

ZwQueryInformationFile