estructura FILE_STREAM_INFORMATION (ntifs.h)
La estructura FILE_STREAM_INFORMATION se usa para enumerar las secuencias de un archivo.
Sintaxis
typedef struct _FILE_STREAM_INFORMATION {
ULONG NextEntryOffset;
ULONG StreamNameLength;
LARGE_INTEGER StreamSize;
LARGE_INTEGER StreamAllocationSize;
WCHAR StreamName[1];
} FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
Miembros
NextEntryOffset
Desplazamiento de la siguiente entrada FILE_STREAM_INFORMATION. Este miembro es cero si ninguna otra entrada sigue esta.
StreamNameLength
Longitud, en bytes, de la cadena streamName de
StreamSize
Tamaño, en bytes, de la secuencia.
StreamAllocationSize
Tamaño de asignación de secuencias de archivos, en bytes. Normalmente, este valor es un múltiplo del tamaño del sector o clúster del dispositivo físico subyacente.
StreamName[1]
Cadena Unicode que contiene el nombre de la secuencia.
Observaciones
La estructura FILE_STREAM_INFORMATION se usa para enumerar las secuencias de un archivo. Esta operación se puede realizar de cualquiera de las maneras siguientes:
Llamando a FltQueryInformationFile o ZwQueryInformationFile y especificando FileStreamInformation para el parámetro FileInformationClass. A cambio, el búfer de FileInformation contiene una estructura FILE_STREAM_INFORMATION para cada secuencia de archivos.
Enviando una solicitud de IRP_MJ_QUERY_INFORMATION al sistema de archivos y especificando FileStreamInformation para el parámetro fileInformationClass de
. A cambio, Irp->AssociatedIrp.SystemBuffer contiene una estructura de FILE_STREAM_INFORMATION para cada secuencia de archivos.
No se requieren derechos de acceso específicos para consultar esta información. Por lo tanto, esta información está disponible siempre que el archivo esté abierto.
La compatibilidad con la enumeración de secuencias depende del sistema de archivos. Si un sistema de archivos no admite la enumeración de secuencias, debe devolver STATUS_INVALID_PARAMETER o STATUS_NOT_IMPLEMENTED para estas solicitudes.
Si un sistema de archivos admite la enumeración de secuencias, pero el archivo no tiene secuencias distintas de la secuencia de datos predeterminada, que no tiene nombre, el sistema de archivos debe devolver una única estructura de FILE_STREAM_INFORMATION que contenga "::$DATA" o una cadena Unicode de longitud cero como la StreamName.
NTFS devuelve "::$DATA" como streamName para el flujo de datos predeterminado.
Para un flujo de datos con nombre, NTFS anexa ":$DATA" al nombre de la secuencia. Por ejemplo, para un flujo de datos de usuario con el nombre "Authors", NTFS devuelve ":Authors:$DATA" como streamName .
Al llamar a una rutina como ZwCreateFile para abrir una secuencia de archivos con nombre, se puede omitir la parte ":$DATA" del nombre. Por ejemplo, para abrir la secuencia "Authors" de un archivo denominado "Book", el autor de la llamada puede especificar "Book:Authors" o "Book:Authors:$DATA" como nombre de la secuencia. Ambos nombres son equivalentes.
El tamaño del búfer pasado en el parámetro FileInformation de
La compatibilidad con flujos de datos con nombre es específica del sistema de archivos. Los controladores de filtro del sistema de archivos pueden determinar si un sistema de archivos admite secuencias con nombre de cualquiera de las maneras siguientes:
Llamando a
oFltQueryVolumeInformation y especificando FileFsAttributeInformation para el parámetro FsInformationClass deZwQueryVolumeInformationFile . A cambio, el búfer de FsInformation de contiene una estructura de FILE_FS_ATTRIBUTE_INFORMATION. Si el bit de FILE_NAMED_STREAMS se establece en el FileSystemAttributes miembro de esta estructura, el sistema de archivos admite secuencias con nombre. Enviando una solicitud IRP_MJ_QUERY_VOLUME_INFORMATION al sistema de archivos y especificando FileFsAttributeInformation para el parámetro FsInformationClass. A cambio, Irp->AssociatedIrp.SystemBuffer contiene una estructura de FILE_FS_ATTRIBUTE_INFORMATION. Si el bit de FILE_NAMED_STREAMS se establece en el FileSystemAttributes miembro de esta estructura, el sistema de archivos admite secuencias con nombre.
La estructura FILE_STREAM_INFORMATION debe alinearse en un límite de LONGLONG (8 bytes). Si un búfer contiene dos o más de estas estructuras, el nextEntryOffset valor de cada entrada, excepto el último, cae en un límite de 8 bytes.
Requisitos
Requisito | Valor |
---|---|
encabezado de |
ntifs.h (incluya Ntifs.h, Fltkernel.h) |
Consulte también
fltQueryInformationFile de
IRP_MJ_QUERY_VOLUME_INFORMATION