FSCTL_DELETE_USN_JOURNAL IOCTL (winioctl.h)
Supprime le journal de modification du numéro de séquence de mise à jour (USN) sur un volume ou attend la notification de suppression du journal des modifications.
C++ |
---|
BOOL WINAPI DeviceIoControl( (HANDLE) hDevice, // handle to volume FSCTL_DELETE_USN_JOURNAL, // dwIoControlCode(LPVOID) lpInBuffer, // input buffer (DWORD) nInBufferSize, // size of input buffer NULL, // lpOutBuffer0, // nOutBufferSize(LPDWORD) lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped ); // OVERLAPPED structure |
Remarques
Pour connaître les implications des E/S superposées sur cette opération, consultez la section Remarques de la rubrique DeviceIoControl
Vous pouvez utiliser FSCTL_DELETE_USN_JOURNAL pour supprimer un journal des modifications. Le système de fichiers NTFS démarre une opération de suppression et retourne immédiatement au processus appelant, sauf si l’indicateur de USN_DELETE_FLAG_NOTIFY est défini dans le DeleteFlags membre de DELETE_USN_JOURNAL_DATA.
Si les indicateurs USN_DELETE_FLAG_NOTIFY et USN_DELETE_FLAG_DELETE sont tous les deux définis, un appel à FSCTL_DELETE_USN_JOURNAL commence le processus de suppression. Ensuite, l’appel bloque le thread appelant et attend la suppression (lors d’un appel synchrone ou sans chevauchement), ou configure la notification d’événement à l’aide d’un port d’achèvement d’E/S ou d’un autre mécanisme et retourne (sur un appel asynchrone ou superposé).
Vous pouvez également utiliser FSCTL_DELETE_USN_JOURNAL pour recevoir une notification indiquant qu’une suppression de journal des modifications est terminée, en définissant uniquement USN_DELETE_FLAG_NOTIFY. Si c’est le cas, l’opération de FSCTL_DELETE_USN_JOURNAL attend la fin de la suppression avant de retourner (sur un appel synchrone ou non superposé), ou configure la notification d’événement à l’aide d’un port d’achèvement d’E/S ou d’un autre mécanisme (sur un appel asynchrone ou superposé).
La suppression sur laquelle une application reçoit une notification peut avoir été lancée par le processus actuel ou un autre processus. Par exemple, lorsqu’une application est démarrée, elle peut utiliser FSCTL_DELETE_USN_JOURNAL pour déterminer si une suppression démarrée par un autre processus est en cours et si c’est le cas, quittez.
La suppression complète d’un journal de modification nécessite une analyse du volume où réside le journal des modifications, ce qui peut prendre beaucoup de temps sur un volume avec de nombreux fichiers. L’opération continue d’être terminée même entre les redémarrages du système. Les tentatives de création, de modification, de suppression ou d’interrogation du journal des modifications pendant que la suppression échoue et retournent le code d’erreur ERROR_JOURNAL_DELETE_IN_PROGRESS.
L’opération de FSCTL_DELETE_USN_JOURNAL a un coût de performance significatif. Elle doit donc être utilisée avec parcimonie. Un administrateur doit supprimer un journal lorsque la valeur USN actuelle approche de celle de la valeur USN maximale possible.
Pour plus d’informations, consultez Création, modification et suppression d’un journal de modification.
Pour récupérer un handle vers un volume, appelez CreateFile avec le paramètre lpFileName défini sur une chaîne sous la forme suivante :
\\.\X:
Dans la chaîne précédente, X est la lettre identifiant le lecteur sur lequel le volume apparaît. Le volume doit être NTFS.
Dans Windows 8 et Windows Server 2012, ce code est pris en charge par les technologies suivantes.
Technologie | Supporté |
---|---|
Protocole SMB (Server Message Block) 3.0 | Non |
Basculement transparent SMB 3.0 (TFO) | Non |
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) | Non |
Cluster Shared Volume File System (CsvFS) | Oui |
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows XP [applications de bureau uniquement] |
serveur minimum pris en charge | Windows Server 2003 [applications de bureau uniquement] |
d’en-tête | winioctl.h (include Windows.h) |