Compartilhar via


FSCTL_GET_NTFS_FILE_RECORD IOCTL (winioctl.h)

Recupera o primeiro registro de arquivo que está em uso e é de 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
);

Observações

Esse código de controle enumera identificadores de arquivo de forma 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 algum 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 pelo 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.

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

Tecnologia Suportado
Protocolo SMB (Bloco de Mensagens do Servidor) 3.0 Não
TFO (Failover Transparente) do SMB 3.0 Não
SMB 3.0 com Compartilhamentos de Arquivos de Expansão (SO) Não
Sistema de Arquivos de Volume Compartilhado de Cluster (CsvFS) Yes
ReFS (Sistema de Arquivos Resiliente) Não

Requirements

Requirement Value
Cliente mínimo suportado Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo compatível Windows Server 2003 [somente aplicativos da área de trabalho]
Header winioctl.h (inclua Windows.h)

Consulte também