énumération CSV_CONTROL_OP (ntifs.h)

Spécifie le type d’opération de contrôle de volume partagé de cluster (CSV) à utiliser avec le code de contrôle FSCTL_CSV_CONTROL .

Syntax

typedef enum _CSV_CONTROL_OP {
  CsvControlStartRedirectFile = 0x02,
  CsvControlStopRedirectFile = 0x03,
  CsvControlQueryRedirectState = 0x04,
  CsvControlQueryFileRevision = 0x06,
  CsvControlQueryMdsPath = 0x08,
  CsvControlQueryFileRevisionFileId128 = 0x09,
  CsvControlQueryVolumeRedirectState = 0x0a,
  CsvControlEnableUSNRangeModificationTracking = 0x0d,
  CsvControlMarkHandleLocalVolumeMount = 0x0e,
  CsvControlUnmarkHandleLocalVolumeMount = 0x0f,
  CsvControlGetCsvFsMdsPathV2 = 0x12,
  CsvControlDisableCaching = 0x13,
  CsvControlEnableCaching = 0x14,
  CsvControlStartForceDFO = 0x15,
  CsvControlStopForceDFO = 0x16,
  CsvControlQueryMdsPathNoPause = 0x17,
  CsvControlSetVolumeId = 0x18,
  CsvControlQueryVolumeId = 0x19
} CSV_CONTROL_OP, *PCSV_CONTROL_OP;

Constantes

 
CsvControlStartRedirectFile
Valeur : 0x02
Démarre la redirection de fichiers CSV.
CsvControlStopRedirectFile
Valeur : 0x03
Arrête la redirection de fichiers CSV.
CsvControlQueryRedirectState
Valeur : 0x04
Recherchez la redirection d’état. Lorsque cette valeur est spécifiée, la structure CSV_QUERY_REDIRECT_STATE doit également être utilisée.
CsvControlQueryFileRevision
Valeur : 0x06
Recherchez la révision de fichier. Lorsque cette valeur est spécifiée, la structure CSV_QUERY_FILE_REVISION doit également être utilisée.
CsvControlQueryMdsPath
Valeur : 0x08
Recherchez le chemin MDS. Lorsque cette valeur est spécifiée, la structure CSV_QUERY_MDS_PATH doit également être utilisée.
CsvControlQueryFileRevisionFileId128
Valeur : 0x09
Recherchez la révision de fichier 128 bits. Lorsque cette valeur est spécifiée, la structure CSV_QUERY_FILE_REVISION_FILE_ID_128 doit également être utilisée.
CsvControlQueryVolumeRedirectState
Valeur : 0x0a
Recherchez la redirection de l’état du volume. Lorsque cette valeur est spécifiée, la structure CSV_QUERY_VOLUME_REDIRECT_STATE doit également être utilisée.
CsvControlEnableUSNRangeModificationTracking
Valeur : 0x0d
Activez le suivi de la plage USN.
CsvControlMarkHandleLocalVolumeMount
Valeur : 0x0e
Lorsqu’un fichier VHD est sur le point d’être monté en boucle, marque un handle et demande à CVSFS d’échouer les E/S et d’invalider les handles après un court délai d’attente (actuellement 20 secondes) si aucune E/S ne progresse.
CsvControlUnmarkHandleLocalVolumeMount
Valeur : 0x0f
Lorsqu’un fichier VHD est sur le point d’être monté en bouclage, supprime les marques d’un handle qui avait été précédemment marqué par CsvControlMarkHandleLocalVolumeMount.
CsvControlGetCsvFsMdsPathV2
Valeur : 0x12
Recherchez la version 2 du chemin MDS. Lorsque cette valeur est spécifiée, la structure CSV_QUERY_MDS_PATH_V2 doit également être utilisée.
CsvControlDisableCaching
Valeur : 0x13
Désactive la mise en cache du fichier CSV.
CsvControlEnableCaching
Valeur : 0x14
Active la mise en cache du fichier CSV.
CsvControlStartForceDFO
Valeur : 0x15
Force CSVFS à commencer à transférer des E/S de niveau inférieur sur un objet de fichier de niveau inférieur (MPO). Pour plus de détails, consultez la section Notes.
CsvControlStopForceDFO
Valeur : 0x16
Arrêtez de forcer le transfert d’E/S de CSVFS sur un MPO. Pour plus de détails, consultez la section Notes.
CsvControlQueryMdsPathNoPause
Valeur : 0x17
Semblable à CsvControlQueryMdsPath. Recherchez le chemin MDS, mais si le volume CSV est suspendu au moment de la demande, définissez MdsNodeId sur 0xFFFFFFFF au lieu de retourner le dernier nœud de coordination. Cela permet au client de détecter que le nœud de coordination peut changer. Lorsque CsvControlQueryMdsPathNoPause est spécifié, la structure CSV_QUERY_MDS_PATH doit également être utilisée.
CsvControlSetVolumeId
Valeur : 0x18
Définissez le GUID de volume CSV. Pour plus de détails, consultez la section Notes.
CsvControlQueryVolumeId
Valeur : 0x19
Vérifiez si le GUID de volume CSV est disponible. Pour plus de détails, consultez la section Notes.

Remarques

Une alternative à l’appel du code de contrôle FSCTL_CSV_CONTROL avec cette énumération consiste à utiliser la structure CSV_CONTROL_PARAM , qui encapsule un membre de ce type d’énumération.

CsvControlStartForceDFO et CsvControlStopForceDFO

Lorsqu’un objet fichier est ouvert sur CSVFS, CSVFS ouvre sur le système de fichiers de niveau inférieur (NTFS ou REFS) un objet de fichier de niveau inférieur (DFO) correspondant à chaque utilisateur ouvert. Cet objet de fichier est ouvert dans le cadre d’une application ouvrant un fichier sur CSVFS et est fermé lorsque l’application ferme le handle de l’objet de fichier sur CSVFS. En interne, CSVFS ouvre un objet de fichier supplémentaire appelé objet de fichier de pagination (PFO) qui est partagé entre toutes les ouvertures du même fichier sur CSVFS. Par défaut, CSVFS l’utilise pour de nombreuses opérations, telles que les suivantes :

  • Négociation Oplock
  • Verrous de plage d’octets
  • Transfert d’E/S de pagination

Certaines solutions de filtrage peuvent marquer le handle d’une manière spéciale, puis s’attendre à ce que toutes les lectures et écritures soient transférées de niveau inférieur par CSVFS sur le MPO correspondant. Une application peut forcer CSVFS à commencer à transférer des E/S de niveau inférieur sur le MPO en envoyant CsvControlStartForceDFO. Plus tard, l’application peut utiliser CsvControlStopForceDFO pour revenir au comportement par défaut. La fermeture du handle utilisé pour envoyer CsvControlStartForceDFO est implicitement rétablie comme si l’application envoyait CsvControlStopForceDFO.

CsvControlSetVolumeId et CsvControlQueryVolumeId

Ces contrôles permettent aux minifiltres du système de fichiers attachés au système de fichiers de niveau inférieur situé sous CSVFS d’apprendre le GUID de volume CSV. La ressource de disque physique de cluster définit ce GUID après le montage du système de fichiers de niveau inférieur afin qu’il ne soit pas disponible si le filtre est attaché pendant le montage. Pendant l’attachement au filtre, le minifiltre du système de fichiers peut émettre CsvControlQueryVolumeId pour demander si le GUID est déjà disponible. Le contrôle doit être envoyé en haut de la pile pour s’assurer que csvflt le reçoit. Si le GUID de volume n’est pas encore disponible, csvflt retourne STATUS_UNSUCCESSFUL. L’attachement du filtre ne doit pas échouer si le GUID de volume n’est pas encore disponible.

À un moment ultérieur, la ressource de disque physique envoie CsvControlSetVolumeId avec le GUID de volume. Chaque filtre de la pile peut utiliser le contrôle CsvControlSetVolumeId pour stocker le GUID de volume. Les filtres ne doivent pas terminer ce contrôle. Au lieu de cela, ils doivent lui permettre de descendre dans la pile, ce qui permet à d’autres filtres de stocker le GUID.

Configuration requise

Condition requise Valeur
En-tête ntifs.h

Voir aussi

Énumérations de gestion de fichiers

CSV_CONTROL_PARAM

CSV_QUERY_FILE_REVISION

CSV_QUERY_MDS_PATH

CSV_QUERY_REDIRECT_STATE

FSCTL_CSV_CONTROL