enumerazione CSV_CONTROL_OP (ntifs.h)
Specifica il tipo di operazione di controllo del volume condiviso del cluster da usare con il codice di controllo FSCTL_CSV_CONTROL .
Sintassi
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;
Costanti
CsvControlStartRedirectFile Valore: 0x02 Avvia il reindirizzamento di file CSV. |
CsvControlStopRedirectFile Valore: 0x03 Arresta il reindirizzamento di file CSV. |
CsvControlQueryRedirectState Valore: 0x04 Cercare il reindirizzamento dello stato. Quando viene specificato questo valore, è necessario usare anche la struttura CSV_QUERY_REDIRECT_STATE . |
CsvControlQueryFileRevision Valore: 0x06 Cercare la revisione del file. Quando questo valore viene specificato, è necessario usare anche la struttura CSV_QUERY_FILE_REVISION . |
CsvControlQueryMdsPath Valore: 0x08 Cercare il percorso MDS. Quando viene specificato questo valore, è necessario usare anche la struttura CSV_QUERY_MDS_PATH . |
CsvControlQueryFileRevisionFileId128 Valore: 0x09 Cercare la revisione del file a 128 bit. Quando viene specificato questo valore, è necessario usare anche la struttura CSV_QUERY_FILE_REVISION_FILE_ID_128. |
CsvControlQueryVolumeRedirectState Valore: 0x0a Cercare il reindirizzamento dello stato del volume. Quando viene specificato questo valore, è necessario usare anche la struttura CSV_QUERY_VOLUME_REDIRECT_STATE. |
CsvControlEnableUSNRangeModificationTracking Valore: 0x0d Abilitare il rilevamento dell'intervallo USN. |
CsvControlMarkHandleLocalVolumeMount Valore: 0x0e Quando un file VHD sta per essere montato in loopback, contrassegna un handle e richiede che CVSFS non riesca i/O e invalidi i handle dopo un breve timeout (attualmente 20 secondi) se non viene eseguito alcun avanzamento di I/Os. |
CsvControlUnmarkHandleLocalVolumeMount Valore: 0x0f Quando un file VHD sta per essere smontato, deselezionare un handle contrassegnato in precedenza da CsvControlMarkHandleLocalVolumeMount. |
CsvControlGetCsvFsMdsPathV2 Valore: 0x12 Cercare la versione 2 del percorso MDS. Quando viene specificato questo valore, è necessario usare anche la struttura CSV_QUERY_MDS_PATH_V2. |
CsvControlDisableCaching Valore: 0x13 Disabilita la memorizzazione nella cache del file CSV. |
CsvControlEnableCaching Valore: 0x14 Abilita la memorizzazione nella cache del file CSV. |
CsvControlStartForceDFO Valore: 0x15 Forza CSVFS ad avviare l'inoltro a livello inferiore di I/O su un oggetto file a livello inferiore (DFO). Per ulteriori informazioni, vedere Note. |
CsvControlStopForceDFO Valore: 0x16 Arrestare l'inoltro di CSVFS in un DFO. Per ulteriori informazioni, vedere Note. |
CsvControlQueryMdsPathNoPause Valore: 0x17 Simile a CsvControlQueryMdsPath. Cercare il percorso MDS, ma se il volume CSV viene sospeso al momento della richiesta, impostare MdsNodeId su 0xFFFFFFFF anziché restituire l'ultimo nodo di coordinamento. Ciò consente al client di rilevare che il nodo di coordinamento potrebbe cambiare. Quando viene specificato CsvControlQueryMdsPathNoPause, è necessario usare anche la struttura CSV_QUERY_MDS_PATH . |
CsvControlSetVolumeId Valore: 0x18 Impostare il GUID del volume CSV. Per ulteriori informazioni, vedere Note. |
CsvControlQueryVolumeId Valore: 0x19 Verificare se il GUID del volume CSV è disponibile. Per ulteriori informazioni, vedere Note. |
Commenti
Un'alternativa alla chiamata al codice di controllo FSCTL_CSV_CONTROL con questa enumerazione consiste nell'usare la struttura CSV_CONTROL_PARAM , che incapsula un membro di questo tipo di enumerazione.
CsvControlStartForceDFO e CsvControlStopForceDFO
Quando un oggetto file viene aperto in CSVFS, CSVFS viene aperto nel file system a livello inferiore (NTFS o REFS) che corrisponde a ogni utente aperto. Tale oggetto file viene aperto come parte di un'applicazione che apre un file in CSVFS e viene chiuso quando l'applicazione chiude l'handle per l'oggetto file in CSVFS. Internamente CSVFS apre un oggetto file aggiuntivo denominato oggetto file di paging (PFO) condiviso tra tutti gli elementi aperti dello stesso file in CSVFS. Per impostazione predefinita, CSVFS lo usa per molte operazioni, ad esempio quanto segue:
- Negoziazione di oplock
- Blocchi dell'intervallo di byte
- Inoltro dell'I/O di paging
Alcune soluzioni di filtro possono contrassegnare l'handle in modo speciale e quindi aspettarsi che tutte le letture e le scritture vengano inoltrate a livello inferiore da CSVFS nella DFO corrispondente. Un'applicazione può forzare CSVFS ad avviare l'inoltro di I/O a livello inferiore in DFO inviando CsvControlStartForceDFO. Più avanti, l'applicazione può usare CsvControlStopForceDFO per ripristinare il comportamento predefinito. Chiudere l'handle usato per inviare CsvControlStartForceDFO restituirà in modo implicito come se l'applicazione ha inviato CsvControlStopForceDFO.
CsvControlSetVolumeId e CsvControlQueryVolumeId
Questi controlli consentono minifiltri del file system collegati al file system a livello inferiore sotto CSVFS per apprendere il GUID del volume CSV. La risorsa disco fisico cluster imposta questo GUID dopo che il file system a livello inferiore viene montato in modo che non sia disponibile se il filtro si collega durante il montaggio. Durante il collegamento del filtro, il minifiltro del file system può inviare csvControlQueryVolumeId per eseguire query se il GUID è già disponibile. Il controllo deve essere inviato all'inizio dello stack per assicurarsi che csvflt lo riceva. Se il GUID del volume non è ancora disponibile, csvflt restituirà STATUS_UNSUCCESSFUL. Il filtro non deve essere collegato se il GUID del volume non è ancora disponibile.
In un secondo momento, la risorsa disco fisico invierà CsvControlSetVolumeId con il GUID del volume. Ogni filtro nello stack può usare il controllo CsvControlSetVolumeId per archiviare il GUID del volume. I filtri non devono completare questo controllo. Invece, dovrebbero consentire il passaggio dello stack, consentendo ad altri filtri l'opportunità di archiviare il GUID.
Requisiti
Requisito | Valore |
---|---|
Intestazione | ntifs.h |