Função FsRtlKernelFsControlFile (ntifs.h)

A função FsRtlKernelFsControlFile cria um IRP FSCTL_XXX explícito, envia-o para baixo na pilha, espera síncronamente para que ele seja concluído e retorna o resultado. Essa função permite que o chamador conclua essa ação por FileObject em vez de manipular.

Sintaxe

NTSTATUS FsRtlKernelFsControlFile(
  [in]  PFILE_OBJECT FileObject,
  [in]  ULONG        FsControlCode,
  [in]  PVOID        InputBuffer,
  [in]  ULONG        InputBufferLength,
  [out] PVOID        OutputBuffer,
  [out] ULONG        OutputBufferLength,
  [out] PULONG       RetOutputBufferSize
);

Parâmetros

[in] FileObject

Ponteiro para o FILE_OBJECT para enviar a operação.

[in] FsControlCode

FSCTL_XXX código que indica qual operação de controle do sistema de arquivos deve ser executada. O valor desse parâmetro determina os formatos e os comprimentos necessários de InputBuffer e OutputBuffer, bem como quais dos pares de parâmetros a seguir são necessários. Para obter informações detalhadas sobre os códigos de FSCTL_XXX definidos pelo sistema, consulte a seção "Comentários" da entrada de referência para DeviceIoControl na documentação do SDK do Microsoft Windows.

[in] InputBuffer

Ponteiro para um buffer de entrada alocado pelo chamador que contém informações específicas do dispositivo a serem fornecidas ao driver de destino. Se FsControlCode especificar uma operação que não exige dados de entrada, esse ponteiro será opcional e poderá ser NULL. Observe que esse buffer pode ser modificado após o retorno e o chamador deve se adaptar a isso. Isso ocorre porque esse buffer pode ser usado para armazenar os dados de saída.

[in] InputBufferLength

Comprimento do InputBuffer em bytes.

[out] OutputBuffer

Ponteiro para um buffer de saída alocado pelo chamador no qual as informações são retornadas do driver de destino. Se FsControlCode especificar uma operação que não produz dados de saída, esse ponteiro será opcional e poderá ser NULL.

[out] OutputBufferLength

Comprimento do OutputBuffer em bytes.

[out] RetOutputBufferSize

Recebe o número de bytes realmente gravados (retornados) no buffer de saída.

Retornar valor

FsRtlKernelFsControlFile retorna STATUS_SUCCESS ou um valor NTSTATUS apropriado, como um dos seguintes.

Valor Significado
STATUS_INSUFFICIENT_RESOURCES Ocorreu uma falha de alocação de pool.
STATUS_INVALID_PARAMETER Um parâmetro inválido foi fornecido (por exemplo, um FileObject inválido).

Comentários

FsRtlKernelFsControlFile define o IRP_MN_KERNEL_CALL código secundário que permite executar operações sem a necessidade de gerenciar privilégios de volume para determinadas operações.

Essa função pressupõe que todos os buffers passados para ele sejam buffers no modo kernel.

Requisitos

Requisito Valor
Cabeçalho ntifs.h

Confira também

ZwFsControlFile