Compartir a través de


Función IoCreateStreamFileObjectLite (ntifs.h)

La rutina IoCreateStreamFileObjectLite crea un nuevo objeto de archivo de secuencia, pero no hace que se envíe una solicitud de IRP_MJ_CLEANUP a la pila de controladores del sistema de archivos.

Sintaxis

PFILE_OBJECT IoCreateStreamFileObjectLite(
  [in, optional] PFILE_OBJECT   FileObject,
  [in, optional] PDEVICE_OBJECT DeviceObject
);

Parámetros

[in, optional] FileObject

Puntero al objeto de archivo al que está relacionado el nuevo archivo de secuencia. Este parámetro es opcional y puede ser NULL.

[in, optional] DeviceObject

Puntero a un objeto de dispositivo para el dispositivo en el que se va a abrir el archivo de secuencia. Si el autor de la llamada especifica un valor distinto de NULL para FileObject, se omite el valor de DeviceObject . De lo contrario, el autor de la llamada debe especificar un valor distinto de NULL para DeviceObject.

Valor devuelto

IoCreateStreamFileObjectLite devuelve un puntero al objeto de archivo de secuencia recién creado.

Comentarios

Los sistemas de archivos llaman a IoCreateStreamFileObjectLite para crear un nuevo objeto de archivo de secuencia. Un objeto de archivo de secuencia es idéntico a un objeto de archivo normal, salvo que se establece la marca de objeto de archivo FO_STREAM_FILE.

Normalmente, un objeto de archivo de secuencia se usa para representar una secuencia interna para un volumen montado por el sistema de archivos. Este archivo de volumen virtual permite al sistema de archivos ver, cambiar y almacenar en caché la estructura del volumen en disco como si fuera un archivo normal. En este caso, el parámetro DeviceObject de la llamada a IoCreateStreamFileObjectLite especifica el objeto de dispositivo de volumen (VDO) para el volumen.

También se puede usar un objeto de archivo de secuencia para representar un flujo de datos alternativo para acceder a metadatos, como atributos extendidos o descriptores de seguridad, para un archivo ya abierto. En este caso, el parámetro FileObject de la llamada a IoCreateStreamFileObjectLite especifica un objeto de archivo existente para el archivo. El objeto de archivo de secuencia recién creado permite al sistema de archivos ver, cambiar y almacenar en caché los metadatos del archivo como si fuera un archivo normal.

Cuando el objeto de archivo de secuencia ya no es necesario, el autor de la llamada debe disminuir su recuento de referencias llamando a ObDereferenceObject. Cuando el recuento de referencias del objeto de archivo de secuencia alcanza cero, se envía una solicitud de IRP_MJ_CLOSE a la pila de controladores del sistema de archivos para el volumen.

Los escritores de controladores de filtro del sistema de archivos deben tener en cuenta que, a diferencia de IoCreateStreamFileObjectLite, ioCreateStreamFileObjectLite no hace que se envíe una solicitud de IRP_MJ_CLEANUP a la pila de controladores del sistema de archivos. Por este motivo, y dado que los sistemas de archivos suelen crear objetos de archivo de secuencia como un efecto secundario de las operaciones distintas de IRP_MJ_CREATE, es difícil que los controladores de filtro detecten de forma confiable la creación de objetos de archivo de secuencia. Por lo tanto, los controladores de filtro deben esperar recibir solicitudes de IRP_MJ_CLOSE para objetos de archivo no vistos previamente.

Si se produce un error de asignación de grupo, IoCreateStreamFileObjectLite genera una excepción de STATUS_INSUFFICIENT_RESOURCES.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000
Plataforma de destino Universal
Encabezado ntifs.h (incluya Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Consulte también

IRP_MJ_CLEANUP

IRP_MJ_CLOSE

IRP_MJ_CREATE

IoCreateStreamFileObject

IoCreateStreamFileObjectEx

ObDereferenceObject