Share via


FSCTL_SET_OBJECT_ID_EXTENDED IOCTL (winioctl.h)

Modifica i dati utente associati all'identificatore di oggetto per il file o la directory specificati.

Per eseguire questa operazione, chiamare la funzione DeviceIoControl con i parametri seguenti.

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
);

Commenti

Gli identificatori di oggetto vengono usati per tenere traccia dei file e delle directory. Sono invisibili alla maggior parte delle applicazioni e non devono mai essere modificate dalle applicazioni. La modifica di un identificatore di oggetto può causare la perdita di dati da parti di un file, fino a e includere interi volumi di dati.

Questa operazione imposta i dati utente solo nell'identificatore dell'oggetto. Gli usi possibili sono per archiviare un timestamp per la creazione dell'identificatore dell'oggetto o un numero di versione monotonicamente crescente. Il membro ObjectId della struttura FILE_OBJECTID_BUFFER viene ignorato. Non esiste alcun meccanismo per modificare il membro ObjectId . L'uso tipico del codice di controllo FSCTL_SET_OBJECT_ID_EXTENDED è dove l'applicazione non usa i dati utente generati dal file system NTFS quando il sistema crea l'identificatore dell'oggetto.

Per impostare l'identificatore dell'oggetto su un oggetto che non ne ha già uno, usare il codice di controllo FSCTL_SET_OBJECT_ID . Per avere il file system NTFS generare un identificatore di oggetto se non esiste, usare il codice di controllo FSCTL_CREATE_OR_GET_OBJECT_ID .

Si noti che i timestamp potrebbero non essere aggiornati correttamente per un file remoto. Per garantire risultati coerenti, usare I/O non memorizzati.

In Windows 8 e Windows Server 2012 questo codice è supportato dalle tecnologie seguenti.

Tecnologia Supportato
Protocollo SMB (Server Message Block) 3.0
Failover trasparente SMB 3.0 (TFO)
SMB 3.0 con condivisioni file con scalabilità orizzontale (SO)
File system del volume condiviso del cluster (CsvFS)
File system resiliente (ReFS) No

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Intestazione winioctl.h (include Windows.h)

Vedi anche