é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 |