Função IoCreateStreamFileObjectLite (ntifs.h)
A rotina IoCreateStreamFileObjectLite cria um novo objeto de arquivo de fluxo, mas não faz com que uma solicitação IRP_MJ_CLEANUP seja enviada para a pilha de driver do sistema de arquivos.
Sintaxe
PFILE_OBJECT IoCreateStreamFileObjectLite(
[in, optional] PFILE_OBJECT FileObject,
[in, optional] PDEVICE_OBJECT DeviceObject
);
Parâmetros
[in, optional] FileObject
Um ponteiro para o objeto de arquivo ao qual o novo arquivo de fluxo está relacionado. Esse parâmetro é opcional e pode ser NULL.
[in, optional] DeviceObject
Um ponteiro para um objeto de dispositivo para o dispositivo no qual o arquivo de fluxo deve ser aberto. Se o chamador especificar um valor não NULL para FileObject, o valor de DeviceObject será ignorado. Caso contrário, o chamador deve especificar um valor não NULL para DeviceObject.
Retornar valor
IoCreateStreamFileObjectLite retorna um ponteiro para o objeto de arquivo de fluxo recém-criado.
Comentários
Os sistemas de arquivos chamam IoCreateStreamFileObjectLite para criar um novo objeto de arquivo de fluxo. Um objeto de arquivo de fluxo é idêntico a um objeto de arquivo comum, exceto que o sinalizador de objeto de arquivo FO_STREAM_FILE está definido.
Um objeto de arquivo de fluxo é comumente usado para representar um fluxo interno para um volume montado pelo sistema de arquivos. Esse arquivo de volume virtual permite que o sistema de arquivos exiba, altere e armazene em cache a estrutura em disco do volume como se fosse um arquivo comum. Nesse caso, o parâmetro DeviceObject na chamada para IoCreateStreamFileObjectLite especifica o VDO (objeto de dispositivo de volume) para o volume.
Um objeto de arquivo de fluxo também pode ser usado para representar um fluxo de dados alternativo para acessar metadados, como atributos estendidos ou descritores de segurança, para um arquivo já aberto. Nesse caso, o parâmetro FileObject na chamada para IoCreateStreamFileObjectLite especifica um objeto de arquivo existente para o arquivo. O objeto de arquivo de fluxo recém-criado permite que o sistema de arquivos exiba, altere e armazene em cache os metadados do arquivo como se fosse um arquivo comum.
Quando o objeto de arquivo de fluxo não é mais necessário, o chamador deve diminuir sua contagem de referência chamando ObDereferenceObject. Quando a contagem de referência do objeto de arquivo de fluxo atinge zero, uma solicitação IRP_MJ_CLOSE é enviada para a pilha de driver do sistema de arquivos para o volume.
Os gravadores de driver de filtro do sistema de arquivos devem observar que, ao contrário de IoCreateStreamFileObject, IoCreateStreamFileObjectLite não faz com que uma solicitação IRP_MJ_CLEANUP seja enviada para a pilha de driver do sistema de arquivos. Por esse motivo, e como os sistemas de arquivos geralmente criam objetos de arquivo de fluxo como um efeito colateral de operações diferentes de IRP_MJ_CREATE, é difícil para os drivers de filtro detectar de forma confiável a criação de objeto de arquivo de fluxo. Portanto, os drivers de filtro devem esperar receber IRP_MJ_CLOSE solicitações para objetos de arquivo não vistos anteriormente.
Se ocorrer uma falha de alocação de pool, IoCreateStreamFileObjectLite gerará uma exceção STATUS_INSUFFICIENT_RESOURCES.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 |
Plataforma de Destino | Universal |
Cabeçalho | ntifs.h (inclua Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |