Condividi tramite


struttura MARK_HANDLE_INFO (winioctl.h)

Contiene informazioni utilizzate per contrassegnare un file o una directory specificata e il relativo record del journal di modifica del numero di sequenza di aggiornamento (USN) con i dati sulle modifiche. Viene usato dal codice di controllo FSCTL_MARK_HANDLE.

Sintassi

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

Membri

DUMMYUNIONNAME

DUMMYUNIONNAME.UsnSourceInfo

DUMMYUNIONNAME.CopyNumber

UsnSourceInfo

Tipo di modifiche da apportare.

L'operazione non modifica il file o la directory esternamente dal punto di vista dell'applicazione che l'ha creata.

Quando un thread scrive un nuovo record USN, i flag di informazioni di origine nel record precedente continuano a essere presenti solo se il thread imposta anche tali flag. Pertanto, la struttura delle informazioni di origine consente alle applicazioni di filtrare i record USN impostati solo da un'origine nota, ad esempio un filtro antivirus.

Vengono definiti i valori seguenti.

Valore Significato
USN_SOURCE_DATA_MANAGEMENT
0x00000001
L'operazione fornisce informazioni su una modifica al file o alla directory apportata dal sistema operativo.

Un uso tipico è quando Archiviazione remota sposta i dati da una risorsa di archiviazione esterna a quella locale. Archiviazione remota è il software di gestione gerarchica delle risorse di archiviazione. Tale spostamento in genere aggiunge almeno il flag USN_REASON_DATA_OVERWRITE a un record USN. Tuttavia, i dati non sono stati modificati dal punto di vista dell'utente. Notando USN_SOURCE_DATA_MANAGEMENT nel SourceInfo membro della struttura USN_RECORD che contiene il record, è possibile determinare che, anche se viene eseguita un'operazione di scrittura sull'elemento, i dati non sono stati modificati.

USN_SOURCE_AUXILIARY_DATA
0x00000002
L'operazione aggiunge un flusso di dati privato a un file o a una directory.

Un esempio potrebbe essere un rilevatore di virus che aggiunge informazioni di checksum. Quando il rilevatore di virus modifica l'elemento, il sistema genera record USN. USN_SOURCE_AUXILIARY_DATA indica che le modifiche non hanno modificato i dati dell'applicazione.

USN_SOURCE_REPLICATION_MANAGEMENT
0x00000004
L'operazione crea o aggiorna il contenuto di un file replicato.

Ad esempio, il servizio di replica file imposta questo flag quando crea o aggiorna un file in una directory replicata.

USN_SOURCE_CLIENT_REPLICATION_MANAGEMENT
0x00000008
La replica viene eseguita nei sistemi client dal cloud o dai server.

VolumeHandle

Handle di volume per il volume in cui risiede il file o la directory. Per altre informazioni su come ottenere un handle di volume, vedere la sezione Osservazioni.

Questo handle è necessario per controllare i privilegi per questa operazione.

Il chiamante deve avere il privilegio SE_MANAGE_VOLUME_NAME. Per altre informazioni, vedere Privilegi.

HandleInfo

Flag che specifica informazioni aggiuntive sul file o sulla directory identificate dal valore dell'handle nel membro VolumeHandle.

Valore Significato
MARK_HANDLE_PROTECT_CLUSTERS
0x00000001
Il file viene contrassegnato come non è possibile deframmentare fino alla chiusura dell'handle.

Una volta chiuso un handle contrassegnato MARK_HANDLE_PROTECT_CLUSTERS, non c'è alcuna garanzia che i cluster del file non vengano spostati.

MARK_HANDLE_TXF_SYSTEM_LOG
0x00000004
Il file viene contrassegnato come non è possibile deframmentare fino alla chiusura dell'handle.

Windows Server 2003: Questo flag non è supportato fino a Windows Server 2003 con SP1.

Windows XP: Questo flag non è supportato.

MARK_HANDLE_NOT_TXF_SYSTEM_LOG
0x00000008
Il file viene contrassegnato come non è possibile deframmentare fino alla chiusura dell'handle.

Windows Server 2003: Questo flag non è supportato fino a Windows Server 2003 con SP1.

Windows XP: Questo flag non è supportato.

MARK_HANDLE_REALTIME
0x00000020
Il file è contrassegnato per il comportamento di lettura in tempo reale indipendentemente dal tipo di file effettivo. I file contrassegnati con questo flag devono essere aperti per i/O non memorizzati nel buffer.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo flag non è supportato.

MARK_HANDLE_NOT_REALTIME
0x00000040
Il file contrassegnato in precedenza per il comportamento di lettura in tempo reale usando il flag MARK_HANDLE_REALTIME può essere deselezionato usando questo flag, rimuovendo il comportamento in tempo reale. I file contrassegnati con questo flag devono essere aperti per i/O non memorizzati nel buffer.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo flag non è supportato.

MARK_HANDLE_READ_COPY
0x00000080
Indica il numero di copia specificato nel membro CopyNumber deve essere utilizzato per le letture. I file contrassegnati con questo flag devono essere aperti per i/O non memorizzati nel buffer.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo flag non è supportato fino a Windows 8 e Windows Server 2012.

MARK_HANDLE_NOT_READ_COPY
0x00000100
Il file contrassegnato in precedenza per il comportamento di lettura-copia usando il flag MARK_HANDLE_READ_COPY può essere deselezionato usando questo flag, rimuovendo il comportamento di lettura-copia. I file contrassegnati con questo flag devono essere aperti per i/O non memorizzati nel buffer.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo flag non è supportato fino a Windows 8 e Windows Server 2012.

MARK_HANDLE_RETURN_PURGE_FAILURE
0x00000400
Quando si mescola la memoria mappata/memorizzata nella cache di I/O con operazioni di I/O non memorizzate nella cache, il sistema tenta di eliminare i mapping di memoria per l'intervallo di I/O non memorizzato nella cache. Se queste ripuliture hanno esito negativo, il sistema normalmente non restituisce l'errore al chiamante che può causare uno stato danneggiato (motivo per cui la documentazione indica di non eseguire questa operazione). Questo flag indica al sistema di restituire errori di eliminazione per l'handle specificato in modo che l'applicazione possa gestire meglio questa situazione

Questo flag non è supportato fino a Windows 8 e Windows Server 2012.

MARK_HANDLE_DISABLE_FILE_METADATA_OPTIMIZATION
0x00001000
Un file estremamente frammentato in NTFS usa più record MFT per descrivere tutti gli extent per un file. Questo elenco di record MFT figlio (noti anche come record FRS) è controllato da una struttura nota come elenco di attributi. Un elenco di attributi è limitato a 128.000 dimensioni. Quando la dimensione di un elenco di attributi raggiunge una determinata soglia NTFS attiverà una compattazione in background negli extent, in modo che venga usato il numero minimo di record FRS figlio. Questo flag disabilita questa funzionalità di compattazione FRS per il file specificato.

Questo flag non è supportato fino a Windows 10.

MARK_HANDLE_ENABLE_USN_SOURCE_ON_PAGING_IO
0x00002000
Indica a NTFS di impostare il valore UsnSourceInfo specificato nelle scritture di paging nel journal USN. Tradizionalmente questa operazione non è stata eseguita sulle scritture di paging poiché il sistema non sapeva quale thread ha apportato le modifiche date. Si tratta di un override. Questa operazione funziona solo se Il fileObject utilizzato da Gestione memoria ha questo stato associato.

Questo flag non è supportato fino a Windows 10.

MARK_HANDLE_SKIP_COHERENCY_SYNC_DISALLOW_WRITES
0x00004000
L'impostazione di questo flag indica al sistema che le scritture non sono consentite in questo file. Se un'applicazione tenta di aprire il file per l'accesso in scrittura, l'operazione non riesce con STATUS_ACCESS_DENIED. Se viene visualizzato un errore di scrittura, l'operazione non è riuscita con STATUS_MARKED_TO_DISALLOW_WRITES

Questo flag non è supportato fino a Windows 10.

Osservazioni

Per recuperare un handle in un volume, chiamare CreateFile con il parametro lpFileName impostato su una stringa nel formato seguente:

"\.\X:"

Nella stringa precedente X è la lettera che identifica l'unità in cui viene visualizzato il volume.

Fabbisogno

Requisito Valore
client minimo supportato Windows XP [solo app desktop]
server minimo supportato Windows Server 2003 [solo app desktop]
intestazione winioctl.h (include Windows.h)

Vedere anche

FSCTL_MARK_HANDLE

USN_RECORD