Função CancelIoEx
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.
Sintaxe
BOOL WINAPI CancelIoEx(
_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 CancelIo cancela todas as solicitações pendentes em um identificador de arquivo.
Valor retornado
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 ou 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 CancelIoEx permite cancelar solicitações em threads diferentes do thread de chamada. A função CancelIo cancela apenas solicitações no mesmo thread que chamou a função CancelIo . CancelIoEx cancela apenas E/S pendente no identificador, 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 CancelIoEx as marcará como cancelamento. A maioria dos tipos de operações pode ser cancelada imediatamente; outras operações podem continuar até a conclusão antes que elas sejam realmente canceladas e o chamador seja notificado. A função CancelIoEx 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 que a operação tenha 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 3.0 |
Sim |
TFO (Failover Transparente) do SMB 3.0 |
Sim |
SMB 3.0 com compartilhamentos de arquivos de expansão (SO) |
Sim |
CsvFS (Sistema de Arquivos de Volume Compartilhado clusterizado) |
Sim |
ReFS (Sistema de Arquivos Resiliente) |
Sim |
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte |
Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP] |
Cabeçalho |
|
Biblioteca |
|
DLL |
|