Fonction IoCreateStreamFileObjectLite (ntifs.h)
La routine IoCreateStreamFileObjectLite crée un objet de fichier de flux, mais n’entraîne pas l’envoi d’une requête IRP_MJ_CLEANUP à la pile des pilotes du système de fichiers.
Syntaxe
PFILE_OBJECT IoCreateStreamFileObjectLite(
[in, optional] PFILE_OBJECT FileObject,
[in, optional] PDEVICE_OBJECT DeviceObject
);
Paramètres
[in, optional] FileObject
Pointeur vers l’objet de fichier auquel le nouveau fichier de flux est associé. Ce paramètre est facultatif et peut être NULL.
[in, optional] DeviceObject
Pointeur vers un objet d’appareil pour l’appareil sur lequel le fichier de flux doit être ouvert. Si l’appelant spécifie une valeurNULL non pour FileObject, la valeur de DeviceObject est ignorée. Sinon, l’appelant doit spécifier une valeur deNULL non pour DeviceObject.
Valeur de retour
IoCreateStreamFileObjectLite retourne un pointeur vers l’objet de fichier de flux nouvellement créé.
Remarques
Les systèmes de fichiers appellent IoCreateStreamFileObjectLite pour créer un objet de fichier de flux. Un objet de fichier de flux est identique à un objet de fichier ordinaire, sauf que l’indicateur d’objet de fichier FO_STREAM_FILE est défini.
Un objet de fichier de flux est couramment utilisé pour représenter un flux interne pour un volume monté par le système de fichiers. Cette fichier de volume virtuel permet au système de fichiers d’afficher, de modifier et de mettre en cache la structure sur disque du volume comme s’il s’agissait d’un fichier ordinaire. Dans ce cas, le paramètre DeviceObject dans l’appel à IoCreateStreamFileObjectLite spécifie l’objet d’appareil de volume (VDO) du volume.
Un objet de fichier de flux peut également être utilisé pour représenter un autre flux de données pour accéder aux métadonnées, telles que les attributs étendus ou les descripteurs de sécurité, pour un fichier déjà ouvert. Dans ce cas, le paramètre FileObject dans l’appel à IoCreateStreamFileObjectLite spécifie un objet de fichier existant pour le fichier. L’objet de fichier de flux nouvellement créé permet au système de fichiers d’afficher, de modifier et de mettre en cache les métadonnées du fichier comme s’il s’agissait d’un fichier ordinaire.
Lorsque l’objet de fichier de flux n’est plus nécessaire, l’appelant doit décrémenter son nombre de références en appelant ObDereferenceObject. Lorsque le nombre de références de l’objet de fichier de flux atteint zéro, une requête IRP_MJ_CLOSE est envoyée à la pile de pilotes du système de fichiers pour le volume.
Les enregistreurs de pilotes de filtre de système de fichiers doivent noter que, contrairement à IoCreateStreamFileObject, IoCreateStreamFileObjectLite n’entraîne pas l’envoi d’une requête IRP_MJ_CLEANUP à la pile des pilotes du système de fichiers. Pour cette raison, et parce que les systèmes de fichiers créent souvent des objets de fichier de flux en tant qu’effet secondaire des opérations autres que IRP_MJ_CREATE, il est difficile pour les pilotes de filtre de détecter de manière fiable la création d’objets de fichier de flux. Par conséquent, les pilotes de filtre doivent s’attendre à recevoir IRP_MJ_CLOSE demandes d’objets de fichier précédemment invisibles.
Si un échec d’allocation de pool se produit, IoCreateStreamFileObjectLite déclenche une exception STATUS_INSUFFICIENT_RESOURCES.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 2000 |
plateforme cible | Universel |
d’en-tête | ntifs.h (include Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |