Função NtCancelIoFileEx
Marca todas as operações de E/S pendentes para o identificador de arquivo especificado. A função cancela apenas as operações de E/S no processo atual, independentemente de qual thread criou a operação de E/S.
Observação
Essa função é o modo de usuário equivalente à função CancelIoEX Win32.
Sintaxe
BOOL WINAPI NtCancelIoFileEx(
_In_ HANDLE hFile,
_In_opt_ LPOVERLAPPED lpOverlapped
);
Parâmetros
hFile [in]
Um identificador para o arquivo.
lpOverlapped [in, opcional]
Um ponteiro para uma estrutura de dados OVERLAPPED que contém os dados usados para E/S assíncrona.
Se esse parâmetro for NULL, todas as solicitações de E/S para o parâmetro hFile serão canceladas.
Se esse parâmetro não for NULL, somente as solicitações de E/S específicas que foram emitidas para o arquivo com a estrutura sobreposta lpOverlapped especificada serão marcadas como canceladas, o que significa que você pode cancelar uma ou mais solicitações, enquanto a função NtCancelIoFile cancela todas as solicitações pendentes em um identificador de arquivo.
Retornos
Se a função for bem-sucedida, o valor retornado será diferente de zero. A operação de cancelamento de todas as operações de E/S pendentes emitidas pelo processo de chamada para o identificador de arquivo especificado foi solicitada com êxito. O aplicativo não deve liberar nem reutilizar a estrutura OVERLAPPED associada às operações de E/S canceladas até que elas tenham sido concluídas. O thread pode usar a função GetOverlappedResult para determinar quando as próprias operações de E/S foram concluídas.
Se a função falhar, o valor retornado será 0 (zero). Para obter informações de erro estendidas, chame a função GetLastError .
Se essa função não conseguir encontrar uma solicitação para cancelar, o valor retornado será 0 (zero) e GetLastError retornará ERROR_NOT_FOUND.
Comentários
A função NTCancelIoFileEx permite cancelar solicitações em threads diferentes do thread de chamada. A função NtCancelIoFile cancela apenas solicitações no mesmo thread que chamou a função NtCancelIoFile . NtCancelIoFileEx cancela apenas E/S pendente no identificador, ele não altera o estado do identificador; isso significa que você não pode confiar no estado do identificador porque não pode saber se a operação foi concluída com êxito ou cancelada.
Se houver operações de E/S pendentes em andamento para o identificador de arquivo especificado, a função NtCancelIoFileEx as marcará para cancelamento. A maioria dos tipos de operações pode ser cancelada imediatamente; outras operações podem continuar até a conclusão antes de serem realmente canceladas e o chamador for notificado. A função NtCancelIoFileEx não aguarda a conclusão de todas as operações canceladas.
Se o identificador de arquivo estiver associado a uma porta de conclusão, um pacote de conclusão de E/S não será enfileirado na porta se uma operação síncrona for cancelada com êxito. Para operações assíncronas ainda pendentes, a operação de cancelamento enfileirará um pacote de conclusão de E/S.
A operação que está sendo cancelada é concluída com um dos três status; você deve marcar a status de conclusão para determinar o estado de conclusão. Os três status são:
- A operação foi concluída normalmente. Isso pode ocorrer mesmo se a operação tiver sido cancelada, pois a solicitação de cancelamento pode não ter sido enviada a tempo de cancelar a operação.
- A operação foi cancelada. A função GetLastError retorna ERROR_OPERATION_ABORTED.
- A operação falhou com outro erro. A função GetLastError retorna o código de erro relevante.
Em Windows 8 e Windows Server 2012, essa função é compatível com as tecnologias a seguir.
Tecnologia | Com suporte |
---|---|
Protocolo SMB (Bloco de Mensagens do Servidor) 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 de cluster (CsvFS) |
Sim |
ReFS (Sistema de Arquivos Resiliente) |
Sim |
Requisitos
Requisito | Valor |
---|---|
parâmetro |
|
Biblioteca |
|