IPropertySetStorage-implémentation du système de fichiers NTFS

La version NTFS 5,0 fournit une implémentation de IPropertySetStorage pour les fichiers sur un volume NTFS lorsque les fichiers eux-mêmes ne sont pas des fichiers composés. L’implémentation de NTFS équivaut à l' implémentation de fichier composé. Pour plus d’informations sur les exceptions, consultez la section Notes.

Pour obtenir un pointeur vers l’implémentation NTFS de IPropertySetStorage

  1. Appelez StgCreateStorageEx et spécifiez le _ fichier STGFMT dans le paramètre grfFlags pour créer un nouveau fichier.
  2. Appelez StgOpenStorageEx et spécifiez le _ fichier STGFMT ou STGFMT _ toute valeur d’énumération dans le paramètre grfFlags pour ouvrir un fichier existant.

Toutefois, vous ne pouvez pas obtenir l’implémentation NTFS de IPropertySetStorage pour un fichier composé. Lors de l’ouverture d’un fichier composé avec StgOpenStorage, la spécification de la valeur d’énumération du _ fichier STGFMT génère une erreur.

En outre, les jeux de propriétés simples ne peuvent pas être traités. Autrement dit, vous ne pouvez pas spécifier STGM _ traité dans le paramètre grfMode des méthodes Create et Open , sauf si vous spécifiez également PROPSETFLAG _ unsimple dans le paramètre grfFlags . L’objet de stockage du jeu de propriétés ne prend pas en charge le traitement des transactions.

Quand l’utiliser

Appelez les méthodes IPropertySetStorage pour créer, ouvrir ou supprimer des jeux de propriétés dans le stockage de jeux de propriétés NTFS actuel. Il existe également une méthode, IPropertySetStorage :: enum, qui fournit un pointeur vers un énumérateur qui peut être utilisé pour énumérer les jeux de propriétés dans le stockage.

Compatibilité

les implémentations NTFS de IPropertySetStorage et IPropertyStorage sont disponibles à partir de Windows 2000. Les versions antérieures ne peuvent pas accéder à ces jeux de propriétés.

L’implémentation NTFS stocke les jeux de propriétés dans les autres flux d’un fichier NTFS. Les flux de remplacement doivent être copiés lorsque le fichier principal est copié.

Attention

Tous les systèmes de fichiers ne prennent pas en charge ces flux. Si un fichier NTFS avec des jeux de propriétés est copié sur un volume FAT, seules les données du fichier sont copiées ; le jeu de propriétés est perdu. Dans ce cas, la fonction CopyFile ne retourne pas d’erreur.

Attention

si l’ordinateur qui effectue la copie de fichiers n’est pas un ordinateur qui s’exécute sur Windows 2000 ou une version ultérieure, les jeux de propriétés peuvent être perdus. par exemple, si un ordinateur exécutant le système d’exploitation Windows 95 copie un fichier ntfs, le jeu de propriétés est perdu même si le fichier de destination se trouve également sur un volume ntfs.

Méthodes

L’implémentation du système de fichiers NTFS de IPropertySetStorage prend en charge les méthodes suivantes.

IPropertySetStorage :: Create

Crée un nouveau jeu de propriétés dans le stockage de fichiers NTFS actuel et fournit un pointeur d’interface vers l’implémentation de fichier NTFS IPropertyStorage . Le mode de partage spécifié dans le paramètre grfMode doit être STGM _ share _ exclusive.

IPropertySetStorage :: Open

Ouvre un jeu de propriétés existant dans le stockage de propriétés actuel. Au retour, elle fournit un pointeur d’interface vers l’implémentation de fichier NTFS de IPropertyStorage. Le mode de partage spécifié dans le paramètre grfMode doit être STGM _ share _ exclusive.

IPropertySetStorage ::D supprim

Supprime un jeu de propriétés dans le stockage de propriétés actuel.

IPropertySetStorage :: enum

Crée un objet utilisé pour énumérer les structures STATPROPSETSTG . Chaque structure STATPROPSETSTG fournit des données relatives à un jeu de propriétés unique.

Remarques

Les implémentations NTFS de IPropertySetStorage et IPropertyStorage stockent des jeux de propriétés dans un fichier sans affecter le contenu de ce fichier. Par exemple, si vous créez un jeu de propriétés dans un fichier HTML nommé Default.htm, ce fichier s’affiche toujours correctement dans un navigateur Web. Autrement dit, les modifications apportées à un fichier à l’aide de ces deux interfaces ne sont pas détectables lors de l’accès à un fichier avec la fonction CreateFile .

L’implémentation NTFS de IPropertySetStorage fournit une implémentation sécurisée lorsqu’elle est utilisée pour écrire des jeux de propriétés dans un fichier sur un volume NTFS version 5,0. Ces jeux de propriétés ne peuvent pas être endommagés par l’implémentation même en cas de défaillance du système. Par exemple, si la puissance d’un système échoue pendant un appel à IPropertyStorage :: Commit alors que le jeu de propriétés est vidé sur le disque, le jeu de propriétés n’est jamais laissé dans un état intermédiaire. Soit la version précédente du jeu de propriétés est conservée, soit toutes les mises à jour sont enregistrées.

L’implémentation NTFS de IPropertySetStorage diffère de l’implémentation de fichier composé des manières suivantes :

  • Une structure STATPROPSETSTG obtenue à partir de l’interface IEnumSTATPROPSETSTG contient un membre CLSID dont la valeur est toujours égale à zéro (CLSID _ null). avec l’implémentation de fichier composé, le membre clsid correct est retourné pour les jeux de propriétés non simples (voir les objets Stockage et de flux pour un jeu de propriétés).

  • Lors de l’obtention d’une implémentation NTFS du pointeur d’interface IPropertySetStorage à l’aide de la fonction StgCreateStorageEx ou StgOpenStorageEx , le paramètre grfMode doit suivre les mêmes règles que pour l’implémentation de fichier composé.

    En outre, les indicateurs suivants ne peuvent pas être utilisés :

    STGM _ SIMPLE, STGM _ traité, STGM _ Convert, STGM _ Priority et STGM _ DELETEONRELEASE.

  • Lorsqu’une interface IPROPERTYSETSTORAGE NTFS est obtenue par les fonctions StgCreateStorageEx ou StgOpenStorageEx , les modes de partage s’appliquent principalement à d’autres instances de cette interface, et non à des instances de l’ouverture du fichier lui-même. Par exemple, si une interface IPROPERTYSETSTORAGE NTFS est ouverte en appelant la fonction StgOpenStorageEx , avec le paramètre grfMode défini sur STGM _ ReadWrite | STGM _ share _ exclusive, il est possible d’ouvrir le fichier avec la fonction CreateFile .

    Ces instances simultanées d’ouverture de cette interface sont soumises aux contraintes suivantes : le paramètre dwShareMode dans la fonction CreateFile doit spécifier l’indicateur de lecture de _ partage _ de fichiers , et le paramètre dwAccess ne doit pas spécifier l’indicateur Delete . En outre, les fonctions DeleteFile et MoveFile ne doivent pas être appelées sur un fichier pour lequel ces interfaces de jeu de propriétés sont ouvertes, car ces fonctions requièrent l’accès en suppression au fichier.

  • Si une méthode IPROPERTYSETSTORAGE NTFS est ouverte en lecture seule et si le fichier n’a actuellement aucun jeu de propriétés, l’objet retourné ne contient pas réellement l’ouverture du fichier. Par conséquent, d’autres ouvertures de ce fichier échouent, même si le mode de partage de l’opération d’ouverture d’origine le rejette.

    Tels Si un IPROPERTYSETSTORAGE NTFS est ouvert en mode STGM _ Read | STGM _ share _ exclusive et que le fichier n’a pas de jeu de propriétés, il est possible d’ouvrir simultanément le fichier STGM _ ReadWrite | STGM _ share _ exclusive.

IPropertyStorage-implémentation du système de fichiers NTFS

IPropertySetStorage

IPropertyStorage

IStorage :: EnumElements

Constantes PROPSETFLAG

STATPROPSETSTG