FSCTL_GET_NTFS_FILE_RECORD IOCTL (winioctl.h)

Recupera o primeiro registro de arquivo que está em uso e tem um valor ordinal menor ou igual ao número de referência de arquivo solicitado.

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

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // handle to device
  FSCTL_GET_NTFS_FILE_RECORD,       // dwIoControlCode
  (LPVOID) lpInBuffer,              // input buffer
  (DWORD) nInBufferSize,            // size of input buffer
  (LPVOID) lpOutBuffer,             // output buffer
  (DWORD) nOutBufferSize,           // size of output buffer
  (LPDWORD) lpBytesReturned,        // number of bytes returned
  (LPOVERLAPPED) lpOverlapped       // OVERLAPPED structure
);

Comentários

Esse código de controle enumera identificadores de arquivo de maneira descendente e sempre retorna um registro de arquivo que está em uso. Isso significa que o identificador de arquivo retornado por esse código de controle pode não ser o mesmo que o identificador de arquivo especificado no buffer de entrada. Por exemplo, se os identificadores de arquivo 1 a 9 e 15 estiverem em uso, os identificadores de arquivo de 10 a 14 não estiverem em uso e o registro de arquivo correspondente ao identificador de arquivo 15 for solicitado, esse registro de arquivo será retornado.

Se os registros de arquivo que correspondem aos identificadores de arquivo de 10 a 14 forem solicitados, o registro de arquivo correspondente ao identificador de arquivo 9 será retornado. Se qualquer um dos registros de arquivo correspondentes aos identificadores de arquivo 1 a 9 for solicitado, esses registros de arquivo serão retornados.

Para determinar o tamanho correto do buffer de saída apontado por lpOutBuffer, primeiro chame o código de controle FSCTL_GET_NTFS_VOLUME_DATA para obter o tamanho de um registro de arquivo. Esse é o valor do membro BytesPerFileRecordSegment da estrutura de NTFS_VOLUME_DATA_BUFFER retornada. Em seguida, defina o tamanho do buffer de saída para a seguinte expressão:

sizeof (NTFS_FILE_RECORD_OUTPUT_BUFFER) + sizeof (one file record) - 1

Se um arquivo consistir em vários registros de arquivo, ele deverá ser recuperado individualmente.

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

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

Requisitos

Requisito Valor
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