FSCTL_SET_OBJECT_ID_EXTENDED IOCTL (winioctl.h)
Modifie les données utilisateur associées à l’identificateur d’objet pour le fichier ou le répertoire spécifié.
Pour effectuer cette opération, appelez la fonction DeviceIoControl avec les paramètres suivants.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to device
FSCTL_SET_OBJECT_ID_EXTENDED, // dwIoControlCode
(LPVOID) lpInBuffer, // input buffer
(DWORD) nInBufferSize, // size of input buffer
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
Remarques
Les identificateurs d’objet sont utilisés pour effectuer le suivi des fichiers et des répertoires. Elles sont invisibles pour la plupart des applications et ne doivent jamais être modifiées par les applications. La modification d’un identificateur d’objet peut entraîner la perte de données à partir de parties d’un fichier, jusqu’à des volumes de données entiers inclus.
Cette opération définit les données utilisateur uniquement dans l’identificateur d’objet. Les utilisations possibles sont de stocker un horodatage pour la création de l’identificateur d’objet ou d’un numéro de version qui augmente de façon monotone. Le membre ObjectId de la structure FILE_OBJECTID_BUFFER est ignoré. Il n’existe aucun mécanisme pour modifier le membre ObjectId . Le code de contrôle FSCTL_SET_OBJECT_ID_EXTENDED est généralement utilisé lorsque l’application n’utilise pas les données utilisateur générées par le système de fichiers NTFS lorsque le système crée l’identificateur d’objet.
Pour définir l’identificateur d’objet sur un objet qui n’en a pas encore, utilisez le code de contrôle FSCTL_SET_OBJECT_ID . Pour que le système de fichiers NTFS génère un identificateur d’objet s’il n’en existe pas, utilisez le code de contrôle FSCTL_CREATE_OR_GET_OBJECT_ID .
Notez que les horodatages peuvent ne pas être mis à jour correctement pour un fichier distant. Pour garantir des résultats cohérents, utilisez des E/S non déboguées.
Dans Windows 8 et Windows Server 2012, ce code est pris en charge par les technologies suivantes.
Technologie | Prise en charge |
---|---|
Protocole Server Message Block (SMB) 3.0 | Oui |
Basculement transparent SMB 3.0 (TFO) | Oui |
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) | Oui |
Système de fichiers du volume partagé de cluster (CsvFS) | Oui |
Système de fichiers résilient (ReFS) | No |
Configuration requise
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
En-tête | winioctl.h (inclure Windows.h) |