Função NtFsControlFile (ntifs.h)
A rotina de NtFsControlFile
Sintaxe
__kernel_entry NTSYSCALLAPI NTSTATUS NtFsControlFile(
[in] HANDLE FileHandle,
[in, optional] HANDLE Event,
[in, optional] PIO_APC_ROUTINE ApcRoutine,
[in, optional] PVOID ApcContext,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in] ULONG FsControlCode,
[in, optional] PVOID InputBuffer,
[in] ULONG InputBufferLength,
[out, optional] PVOID OutputBuffer,
[in] ULONG OutputBufferLength
);
Parâmetros
[in] FileHandle
Identificador retornado por NtCreateFile ou NtOpenFile para o objeto de arquivo que representa o arquivo ou diretório no qual a ação especificada deve ser executada. O objeto de arquivo deve ter sido aberto para E/S assíncrona se o chamador especificar um Event, ApcRoutine e um contexto APC (em ApcContext) ou um contexto de conclusão (em ApcContext).
[in, optional] Event
Manipular um evento criado por um chamador. Se esse parâmetro for fornecido, o chamador será colocado em um estado de espera até que a operação solicitada seja concluída e o evento fornecido seja definido como o estado Sinalizado. Esse parâmetro é opcional e pode ser NULL. Ele deverá ser NULL se o chamador aguardar o FileHandle seja definido como o estado Sinalizado.
[in, optional] ApcRoutine
Endereço de uma rotina de APC fornecida pelo chamador a ser chamado quando a operação solicitada for concluída. Esse parâmetro é opcional e pode ser NULL. Ele deverá ser NULL se houver um objeto de conclusão de E/S associado ao objeto de arquivo.
[in, optional] ApcContext
Ponteiro para uma área de contexto determinada pelo chamador. Esse valor de parâmetro será usado como o contexto APC se o chamador fornecer um APC ou for usado como o contexto de conclusão se um objeto de conclusão de E/S tiver sido associado ao objeto de arquivo. Quando a operação for concluída, o contexto do APC será passado para o APC, se um tiver sido especificado, ou o contexto de conclusão será incluído como parte da mensagem de conclusão que o Gerenciador de E/S posta no objeto de conclusão de E/S associado.
Esse parâmetro é opcional e pode ser NULL. Ele deve ser NULL se ApcRoutine for NULL e não houver nenhum objeto de conclusão de E/S associado ao objeto de arquivo.
[out] IoStatusBlock
Ponteiro para uma estrutura de IO_STATUS_BLOCK que recebe o status de conclusão final e informações sobre a operação. Para chamadas bem-sucedidas que retornam dados, o número de bytes gravados no
[in] FsControlCode
FSCTL_código de XXX 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 do 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 XXX FSCTL_
[in, optional] 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 exija dados de entrada, esse ponteiro será opcional e poderá ser NULL.
[in] InputBufferLength
Tamanho, em bytes, do buffer em InputBuffer. Esse valor será ignorado se InputBuffer for NULL.
[out, optional] 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.
[in] OutputBufferLength
Tamanho, em bytes, do buffer em OutputBuffer. Esse valor será ignorado se OutputBuffer for NULL.
Valor de retorno
NtFsControlFile retorna STATUS_SUCCESS ou um valor NTSTATUS apropriado, como um dos seguintes:
Observações
NtFsControlFile fornece uma exibição consistente dos dados de entrada e saída para o sistema e para drivers no modo kernel, ao mesmo tempo em que fornece aplicativos e drivers subjacentes com um método dependente do driver de especificar uma interface de comunicação.
Se o chamador abriu o arquivo para E/S assíncrona (sem FILE_SYNCHRONOUS_XXX conjunto de opções de criação/abertura), o evento especificado, se houver, será definido como o estado sinalizado quando a operação de controle do dispositivo for concluída. Caso contrário, o objeto de arquivo especificado por FileHandle será definido como o estado sinalizado. Se um
Veja a seguir alguns dos códigos FSCTL documentados para drivers no modo kernel:
- FSCTL_DELETE_REPARSE_POINT
- FSCTL_GET_REPARSE_POINT
- FSCTL_OPBATCH_ACK_CLOSE_PENDING
- FSCTL_OPLOCK_BREAK_ACK_NO_2
- FSCTL_OPLOCK_BREAK_ACKNOWLEDGE
- FSCTL_OPLOCK_BREAK_NOTIFY
- FSCTL_REQUEST_BATCH_OPLOCK
- FSCTL_REQUEST_FILTER_OPLOCK
- FSCTL_REQUEST_OPLOCK_LEVEL_1
- FSCTL_REQUEST_OPLOCK_LEVEL_2
- FSCTL_SET_REPARSE_POINT
Para obter mais informações sobre códigos de FSCTL_ XXX definidos pelo sistema, consulte a seção "Comentários" de DeviceIoControl, que normalmente é usada por aplicativos de modo de usuário.
Para obter mais informações sobre IOCTL_
Os minifiltros devem usar FltFsControlFile em vez de NtFsControlFile.
Os chamadores de NtFsControlFile devem estar em execução em IRQL = PASSIVE_LEVEL e com APCs de kernel especiais habilitadas.
Se a chamada para a função NtFsControlFile ocorrer no modo de usuário, você deverá usar o nome "NtFsControlFile" em vez de "ZwFsControlFile".
Para chamadas de drivers no modo kernel, as versões XXX
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 2000 |
da Plataforma de Destino |
Universal |
cabeçalho | ntifs.h (inclua Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL |
NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (consulte a seção Comentários) |
regras de conformidade de DDI | HwStorPortProhibitedDIs, PowerIrpDDis |
Consulte também