Función ZwSetInformationFile (wdm.h)

La rutina ZwSetInformationFile cambia varios tipos de información sobre un objeto de archivo.

Sintaxis

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

Parámetros

[in] FileHandle

Identificador del objeto de archivo. Este identificador se crea mediante una llamada correcta a ZwCreateFile o ZwOpenFile.

[out] IoStatusBlock

Puntero a una estructura de IO_STATUS_BLOCK que recibe el estado de finalización final e información sobre la operación solicitada. El miembro Information recibe el número de bytes establecidos en el archivo.

[in] FileInformation

Puntero a un búfer que contiene la información que se va a establecer para el archivo. La estructura concreta de este búfer viene determinada por el parámetro FileInformationClass . Por ejemplo, si el parámetro FileInformationClass se establece en la constante FileDispositionInformationEx , este parámetro debe ser un puntero a una estructura FILE_DISPOSITION_INFORMATION_EX .

[in] Length

Tamaño, en bytes, del búfer FileInformation .

[in] FileInformationClass

Tipo de información, proporcionada en el búfer al que apunta FileInformation, para establecer para el archivo. Los controladores intermedios y de dispositivo pueden especificar cualquiera de los siguientes valores de FILE_INFORMATION_CLASS .

FileInformationClass Valor Significado
FileBasicInformation Cambie la información proporcionada en una estructura FILE_BASIC_INFORMATION . El llamador debe haber abierto el archivo con la marca FILE_WRITE_ATTRIBUTES establecida en el parámetro DesiredAccess .
FileDispositionInformation Solicite eliminar el archivo cuando se cierre o cancele una eliminación solicitada anteriormente. La opción de eliminar o cancelar se proporciona en una estructura FILE_DISPOSITION_INFORMATION . El autor de la llamada debe haber abierto el archivo con la marca DELETE establecida en el parámetro DesiredAccess .
FileDispositionInformationEx Solicite eliminar el archivo o cancelar una eliminación solicitada anteriormente. La opción de eliminar o cancelar, así como la configuración de cuándo y cómo se debe realizar la eliminación, se proporciona en una estructura de FILE_DISPOSITION_INFORMATION_EX . El autor de la llamada debe haber abierto el archivo con la marca DELETE** establecida en el parámetro DesiredAccess .
FileEndOfFileInformation Cambie la información de fin de archivo actual, proporcionada en una estructura de FILE_END_OF_FILE_INFORMATION . La operación puede truncar o extender el archivo. El llamador debe haber abierto el archivo con la marca FILE_WRITE_DATA establecida en el parámetro DesiredAccess .
FileIoPriorityHintInformation Cambie la sugerencia de prioridad irP predeterminada actual para el identificador de archivo. El nuevo valor se proporciona en una estructura FILE_IO_PRIORITY_HINT_INFORMATION . Esta estructura debe estar alineada con 8 bytes.
FileLinkInformation Cree un vínculo físico a un archivo existente, que se especifica en una estructura de FILE_LINK_INFORMATION . No todos los sistemas de archivos admiten enlaces físicos; por ejemplo, NTFS hace mientras FAT no.
FilePositionInformation Cambie la información del archivo actual, que se almacena en una estructura de FILE_POSITION_INFORMATION .
FileRenameInformation Cambie el nombre de archivo actual, que se proporciona en una estructura de FILE_RENAME_INFORMATION . El autor de la llamada debe tener acceso DELETE al archivo.
FileShortNameInformation Cambie el nombre de archivo corto actual, que se proporciona en una estructura de FILE_NAME_INFORMATION . El archivo debe estar en un volumen NTFS y el autor de la llamada debe haber abierto el archivo con la marca DesiredAccess DELETE establecida en el parámetro DesiredAccess .
FileValidDataLengthInformation Cambie la longitud de datos válida actual para el archivo, que se proporciona en una estructura de FILE_VALID_DATA_LENGTH_INFORMATION . El archivo debe estar en un volumen NTFS y el autor de la llamada debe haber abierto el archivo con la marca FILE_WRITE_DATA establecida en el parámetro DesiredAccess . Los usuarios no administradores y remotos deben tener el privilegio SeManageVolumePrivilege .
FileReplaceCompletionInformation Cambie o quite el puerto de finalización de E/S del identificador de archivo especificado. El llamador proporciona un puntero a una estructura de FILE_COMPLETION_INFORMATION que especifica un identificador de puerto y una clave de finalización. Si el identificador de puerto no es NULL, este identificador especifica un nuevo puerto de finalización de E/S que se asociará al identificador de archivo. Para quitar el puerto de finalización de E/S asociado al identificador de archivo, establezca el identificador de puerto en la estructura en NULL. Para obtener un identificador de puerto, un llamador en modo de usuario puede llamar a la función CreateIoCompletionPort .

Valor devuelto

ZwSetInformationFile devuelve STATUS_SUCCESS o un estado de error adecuado.

Comentarios

ZwSetInformationFile cambia la información sobre un archivo. Omite cualquier miembro de una estructura FILE_XXX_INFORMATION que no sea compatible con un dispositivo o sistema de archivos determinado.

Si establece FileInformationClass en FileDispositionInformation, posteriormente puede pasar FileHandle a ZwClose, pero no a ninguna otra rutina de archivo ZwXxx. Dado que FileDispositionInformation hace que el archivo se marque para su eliminación, se trata de un error de programación para intentar cualquier operación posterior en el identificador que no sea cerrarlo.

Si establece FileInformationClass en FilePositionInformation y la llamada anterior a ZwCreateFile incluía la marca FILE_NO_INTERMEDIATE_BUFFERING en el parámetro CreateOptions , se aplican ciertas restricciones en el miembro CurrentByteOffset de la estructura FILE_POSITION_INFORMATION . Para obtener más información, vea ZwCreateFile.

Si establece FileInformationClass en FileEndOfFileInformation y el miembro EndOfFile de FILE_END_OF_FILE_INFORMATION especifica un desplazamiento más allá de la marca de fin de archivo actual, ZwSetInformationFile extiende el archivo y rellena la extensión con ceros.

Para obtener más información sobre cómo trabajar con archivos, vea Uso de archivos en un controlador.

Los autores de llamadas de ZwSetInformationFile deben ejecutarse en IRQL = PASSIVE_LEVEL y con las API de kernel especiales habilitadas.

Si la llamada a esta función se produce en modo de usuario, debe usar el nombre "NtSetInformationFile" en lugar de "ZwSetInformationFile".

En el caso de las llamadas desde controladores en modo kernel, las versiones NtXxx y ZwXxx de una rutina de Windows Native System Services pueden comportarse de forma diferente en la forma en que controlan e interpretan los parámetros de entrada. Para obtener más información sobre la relación entre las versiones NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (consulte la sección Comentarios)
Reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte también

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 de las versiones Nt y Zw de las rutinas nativas de System Services

ZwClose

ZwCreateFile

ZwOpenFile

ZwQueryInformationFile