Partager via


FSCTL_MARK_HANDLE IOCTL (winioctl.h)

Marque un fichier ou un répertoire spécifié et son enregistrement de journal des modifications avec des informations sur les modifications apportées à ce fichier ou répertoire.

Pour effectuer cette opération, appelez la fonction DeviceIoControl à l’aide des paramètres suivants.

BOOL DeviceIoControl(
  (HANDLE) hDevice,             // handle to file or directory
  FSCTL_MARK_HANDLE,            // dwIoControlCode
  (LPVOID)lpInBuffer,           // input buffer
  (DWORD)nInBufferSize,         // size of input buffer
  NULL,                         // lpOutBuffer
  0,                            // nOutBufferSize
  (LPDWORD) lpBytesReturned,    // number of bytes returned
  (LPOVERLAPPED) lpOverlapped   // OVERLAPPED structure
);

Remarques

Pour connaître les implications des E/S qui se chevauchent sur cette opération, consultez la section Remarques de la rubrique DeviceIoControl .

FSCTL_MARK_HANDLE est la seule opération de journal des modifications qui fonctionne sur un fichier ou un répertoire individuel. Cela n’affecte pas tout ce que l’utilisateur peut faire avec l’élément. Au lieu de cela, il ajoute des informations au fichier ou au répertoire, en fournissant des informations sur la façon dont le système d’exploitation a modifié l’élément ou en ajoutant un flux de données privé à l’élément.

S’il y a des modifications apportées au fichier ou au répertoire, les informations ajoutées avec FSCTL_MARK_HANDLE sont également copiées dans l’enregistrement USN créé pour le fichier ou le répertoire. Notez que ces deux opérations peuvent se produire indépendamment l’une de l’autre. Par exemple, il n’est pas nécessaire qu’un enregistrement USN existe pour pouvoir marquer un fichier comme étant incapable d’être défragmenté et qu’il n’est pas nécessaire de marquer un fichier ou un répertoire pour mettre à jour le contenu de l’enregistrement USN correspondant. Pour plus d’informations sur les informations avec lesquelles FSCTL_MARK_HANDLE pouvez marquer un élément (voir MARK_HANDLE_INFO pour plus d’informations).

Ce n’est pas une erreur d’utiliser FSCTL_MARK_HANDLE lorsque le journal des modifications du volume est supprimé ou inactif. Les informations appropriées sont appliquées au fichier ou au répertoire, quel que soit l’état du journal des modifications, tant que le journal des modifications existe.

Notez que les horodatages peuvent ne pas être mis à jour correctement pour un fichier distant. Pour garantir des résultats cohérents, utilisez les E/S sans débogage.

Le volume doit être NTFS.

Dans Windows 8 et Windows Server 2012, ce code est pris en charge par les technologies suivantes.

Technologie Prise en charge
Protocole Server Message Block (SMB) 3.0 No
Basculement transparent SMB 3.0 (TFO) No
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) No
Système de fichiers du volume partagé de cluster (CsvFS) Oui

CsvFs émet toujours des USN_SOURCE_REPLICATION_MANAGEMENT et des MARK_HANDLE_PROTECT_CLUSTERS pour les fichiers éligibles pour les E/S directes.

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