FSCTL_SET_OBJECT_ID_EXTENDED IOCTL (winioctl.h)

Modifica os dados do usuário associados ao identificador de objeto para o arquivo ou diretório especificado.

Para executar essa operação, chame a função DeviceIoControl com os parâmetros a seguir.

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

Comentários

Os identificadores de objeto são usados para rastrear arquivos e diretórios. Eles são invisíveis para a maioria dos aplicativos e nunca devem ser modificados por aplicativos. Modificar um identificador de objeto pode resultar na perda de dados de partes de um arquivo, até e incluindo volumes inteiros de dados.

Essa operação define os dados do usuário somente no identificador de objeto. Os possíveis usos são armazenar um carimbo de data/hora para a criação do identificador de objeto ou um número de versão de aumento monotonicamente. O membro ObjectId da estrutura FILE_OBJECTID_BUFFER é ignorado. Não há mecanismo para modificar o membro ObjectId . O uso típico do código de controle FSCTL_SET_OBJECT_ID_EXTENDED é onde o aplicativo não usa os dados do usuário gerados pelo sistema de arquivos NTFS quando o sistema cria o identificador de objeto.

Para definir o identificador de objeto em um objeto que ainda não tem um, use o código de controle FSCTL_SET_OBJECT_ID . Para que o sistema de arquivos NTFS gere um identificador de objeto se não existir, use o código de controle FSCTL_CREATE_OR_GET_OBJECT_ID .

Observe que os carimbos de data/hora podem não ser atualizados corretamente para um arquivo remoto. Para garantir resultados consistentes, use E/S sem cofres.

No Windows 8 e no Windows Server 2012, esse código é compatível com as tecnologias a seguir.

Tecnologia Com suporte
Protocolo SMB (SMB) 3.0 Sim
TFO (Failover transparente) do SMB 3.0 Sim
SMB 3.0 com compartilhamentos de arquivos de expansão (SO) Sim
Sistema de arquivos de Volume Compartilhado Clusterizado (CsvFS) Sim
ReFS (Sistema de Arquivos Resiliente) Não

Requisitos

   
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Cabeçalho winioctl.h (inclua Windows.h)

Confira também