MARK_HANDLE_INFO structure (winioctl.h)

Contient des informations utilisées pour marquer un fichier ou un répertoire spécifié, ainsi que son enregistrement de journal de modifications du nombre de séquences de mise à jour (USN) avec des données sur les modifications. Il est utilisé par le code de contrôle FSCTL_MARK_HANDLE .

Syntaxe

typedef struct _MARK_HANDLE_INFO {
  union {
    DWORD UsnSourceInfo;
    DWORD CopyNumber;
  } DUMMYUNIONNAME;
  DWORD  UsnSourceInfo;
  HANDLE VolumeHandle;
  DWORD  HandleInfo;
} MARK_HANDLE_INFO, *PMARK_HANDLE_INFO;

Membres

DUMMYUNIONNAME

DUMMYUNIONNAME.UsnSourceInfo

DUMMYUNIONNAME.CopyNumber

UsnSourceInfo

Type de modifications effectuées.

L’opération ne modifie pas le fichier ou le répertoire en externe du point de vue de l’application qui l’a créé.

Lorsqu’un thread écrit un nouvel enregistrement USN, les indicateurs d’informations sources dans l’enregistrement précédent continuent d’être présents uniquement si le thread définit également ces indicateurs. Par conséquent, la structure des informations sources permet aux applications de filtrer les enregistrements USN définis uniquement par une source connue, telle qu’un filtre antivirus.

Les valeurs suivantes sont définies.

Valeur Signification
USN_SOURCE_DATA_MANAGEMENT
0x00000001
L’opération fournit des informations sur une modification apportée au fichier ou au répertoire par le système d’exploitation.

Une utilisation courante est lorsque le stockage distant déplace des données d’un stockage externe vers un stockage local. Le stockage à distance est le logiciel de gestion du stockage hiérarchique. Un tel déplacement ajoute généralement au minimum l’indicateur USN_REASON_DATA_OVERWRITE à un enregistrement USN. Toutefois, les données n’ont pas changé du point de vue de l’utilisateur. En notant USN_SOURCE_DATA_MANAGEMENT dans le membre SourceInfo de la structure USN_RECORD qui contient l’enregistrement, vous pouvez déterminer que bien qu’une opération d’écriture soit effectuée sur l’élément, les données n’ont pas changé.

USN_SOURCE_AUXILIARY_DATA
0x00000002
L’opération ajoute un flux de données privé à un fichier ou un répertoire.

Par exemple, un détecteur de virus peut ajouter des informations de somme de contrôle. Lorsque le détecteur de virus modifie l’élément, le système génère des enregistrements USN. USN_SOURCE_AUXILIARY_DATA indique que les modifications n’ont pas modifié les données de l’application.

USN_SOURCE_REPLICATION_MANAGEMENT
0x00000004
L’opération crée ou met à jour le contenu d’un fichier répliqué.

Par exemple, le service de réplication de fichiers définit cet indicateur lorsqu’il crée ou met à jour un fichier dans un répertoire répliqué.

USN_SOURCE_CLIENT_REPLICATION_MANAGEMENT
0x00000008
La réplication est effectuée sur les systèmes clients à partir du cloud ou des serveurs.

VolumeHandle

Handle de volume vers le volume où réside le fichier ou le répertoire. Pour plus d’informations sur l’obtention d’un handle de volume, consultez la section Remarques.

Ce handle est nécessaire pour case activée les privilèges de cette opération.

L’appelant doit avoir le privilège SE_MANAGE_VOLUME_NAME . Pour plus d’informations, consultez Privilèges.

HandleInfo

Indicateur qui spécifie des informations supplémentaires sur le fichier ou le répertoire identifié par la valeur de handle dans le membre VolumeHandle .

Valeur Signification
MARK_HANDLE_PROTECT_CLUSTERS
0x00000001
Le fichier est marqué comme ne pouvant pas être défragmenté tant que le handle n’est pas fermé.

Une fois qu’un handle marqué MARK_HANDLE_PROTECT_CLUSTERS est fermé, il n’y a aucune garantie que les clusters du fichier ne se déplaceront pas.

MARK_HANDLE_TXF_SYSTEM_LOG
0x00000004
Le fichier est marqué comme ne pouvant pas être défragmenté tant que le handle n’est pas fermé.

Windows Server 2003 : Cet indicateur n’est pas pris en charge tant que Windows Server 2003 avec SP1.

Windows XP : Cet indicateur n’est pas pris en charge.

MARK_HANDLE_NOT_TXF_SYSTEM_LOG
0x00000008
Le fichier est marqué comme ne pouvant pas être défragmenté tant que le handle n’est pas fermé.

Windows Server 2003 : Cet indicateur n’est pas pris en charge tant que Windows Server 2003 avec SP1.

Windows XP : Cet indicateur n’est pas pris en charge.

MARK_HANDLE_REALTIME
0x00000020
Le fichier est marqué pour un comportement de lecture en temps réel, quel que soit le type de fichier réel. Les fichiers marqués avec cet indicateur doivent être ouverts pour les E/S non déboguées.

Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Cet indicateur n’est pas pris en charge.

MARK_HANDLE_NOT_REALTIME
0x00000040
Le fichier précédemment marqué pour un comportement de lecture en temps réel à l’aide de l’indicateur MARK_HANDLE_REALTIME peut être supprimé à l’aide de cet indicateur, ce qui supprime le comportement en temps réel. Les fichiers marqués avec cet indicateur doivent être ouverts pour les E/S non déboguées.

Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Cet indicateur n’est pas pris en charge.

MARK_HANDLE_READ_COPY
0x00000080
Indique que le numéro de copie spécifié dans le membre CopyNumber doit être utilisé pour les lectures. Les fichiers marqués avec cet indicateur doivent être ouverts pour les E/S non déboguées.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Cet indicateur n’est pas pris en charge tant qu’Windows 8 et Windows Server 2012.

MARK_HANDLE_NOT_READ_COPY
0x00000100
Le fichier précédemment marqué pour le comportement de lecture-copie à l’aide de l’indicateur MARK_HANDLE_READ_COPY peut être supprimé à l’aide de cet indicateur, ce qui supprime le comportement de lecture-copie. Les fichiers marqués avec cet indicateur doivent être ouverts pour les E/S non déboguées.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Cet indicateur n’est pas pris en charge tant qu’Windows 8 et Windows Server 2012.

MARK_HANDLE_RETURN_PURGE_FAILURE
0x00000400
Lorsque vous mélangez des E/S mappées/mises en cache avec des E/S non mises en cache, le système tente, lorsqu’une E/S non mise en cache est émise, de vider les mappages de mémoire pour la plage d’E/S non mises en cache. Si ces vidages échouent, le système ne retourne normalement pas l’échec à l’appelant, ce qui peut entraîner un état endommagé (c’est pourquoi la documentation indique de ne pas le faire). Cet indicateur indique au système de retourner les échecs de vidage pour le handle donné afin que l’application puisse mieux gérer cette situation

Cet indicateur n’est pas pris en charge tant qu’Windows 8 et Windows Server 2012.

MARK_HANDLE_DISABLE_FILE_METADATA_OPTIMIZATION
0x00001000
Un fichier hautement fragmenté dans NTFS utilise plusieurs enregistrements MFT pour décrire toutes les extensions d’un fichier. Cette liste d’enregistrements MFT enfants (également appelés enregistrements FRS) est contrôlée par une structure appelée liste d’attributs. Une liste d’attributs est limitée à 128 Ko. Lorsque la taille d’une liste d’attributs atteint un certain seuil, NTFS déclenche un compactage en arrière-plan sur les étendues afin d’utiliser le nombre minimal d’enregistrements FRS enfants. Cet indicateur désactive cette fonctionnalité de compactage FRS pour le fichier donné.

Cet indicateur n’est pas pris en charge tant que Windows 10.

MARK_HANDLE_ENABLE_USN_SOURCE_ON_PAGING_IO
0x00002000
Indique à NTFS de définir la valeur UsnSourceInfo donnée sur les écritures de pagination dans le Journal USN. Traditionnellement, cela ne se faisait pas sur les écritures de pagination, car le système ne savait pas quel thread a apporté les modifications données. Il s’agit d’un remplacement. Cela ne fonctionne que si l’objet FileObject que le gestionnaire de mémoire utilise a cet état associé.

Cet indicateur n’est pas pris en charge tant que Windows 10.

MARK_HANDLE_SKIP_COHERENCY_SYNC_DISALLOW_WRITES
0x00004000
La définition de cet indicateur indique au système que les écritures ne sont pas autorisées sur ce fichier. Si une application tente d’ouvrir le fichier pour un accès en écriture, l’opération échoue avec STATUS_ACCESS_DENIED. Si une écriture est visible, l’opération a échoué avec STATUS_MARKED_TO_DISALLOW_WRITES

Cet indicateur n’est pas pris en charge tant que Windows 10.

Remarques

Pour récupérer un handle dans un volume, appelez CreateFile avec le paramètre lpFileName défini sur une chaîne sous la forme suivante :

« \.\X : »

Dans la chaîne précédente, X est la lettre identifiant le lecteur sur lequel le volume apparaît.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
En-tête winioctl.h (inclure Windows.h)

Voir aussi

FSCTL_MARK_HANDLE

USN_RECORD