Partager via


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)

Voir aussi