Função BindIoCompletionCallback (winbase.h)

Associa a porta de conclusão de E/S de propriedade do pool de threads ao identificador de arquivo especificado. Após a conclusão de uma solicitação de E/S envolvendo esse arquivo, um thread de trabalho que não seja de E/S executará a função de retorno de chamada especificada.

Sintaxe

BOOL BindIoCompletionCallback(
  [in] HANDLE                          FileHandle,
  [in] LPOVERLAPPED_COMPLETION_ROUTINE Function,
  [in] ULONG                           Flags
);

Parâmetros

[in] FileHandle

Um identificador para o arquivo aberto para conclusão de E/S sobreposta. Esse identificador é retornado pela função CreateFile , com o sinalizador FILE_FLAG_OVERLAPPED .

[in] Function

Um ponteiro para a função de retorno de chamada a ser executada em um thread de trabalho que não seja de E/S quando a operação de E/S for concluída. Essa função de retorno de chamada não deve chamar a função TerminateThread .

Para obter mais informações sobre a rotina de conclusão, consulte FileIOCompletionRoutine.

[in] Flags

Esse parâmetro deve ser zero.

Valor retornado

Se a função for bem-sucedida, o valor retornado será diferente de zero.

Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame a função GetLastError .

Comentários

A função de retorno de chamada poderá não ser executada se o processo emitir uma solicitação assíncrona no arquivo especificado pelo parâmetro FileHandle , mas a solicitação retornará imediatamente com um código de erro diferente de ERROR_IO_PENDING.

Certifique-se de que o thread que inicia a solicitação de E/S assíncrona não seja encerrado antes que a solicitação seja concluída. Além disso, se uma função em uma DLL estiver na fila para um thread de trabalho, verifique se a função na DLL concluiu a execução antes que a DLL seja descarregada.

O pool de threads mantém uma porta de conclusão de E/S. Quando você chama BindIoCompletionCallback, ele associa o arquivo especificado à porta de conclusão de E/S do pool de threads. As solicitações assíncronas nesse objeto de arquivo serão concluídas postando na porta de conclusão, onde serão coletadas por threads de trabalho do pool de threads. Para retornos de chamada que devem emitir uma solicitação de E/S concluída como uma chamada de procedimento assíncrono, o pool de threads fornece um pool de trabalho de E/S. Os threads de trabalho de E/S não esperam na porta de conclusão; eles dormem em um estado de espera alertável para que os pacotes de solicitação de E/S concluídos possam acordá-los. Ambos os tipos de threads de trabalho verificam se há E/S pendente neles e, se houver, eles não saem. Para obter mais informações, consulte Chamadas de procedimento assíncrono.

Para compilar um aplicativo que usa essa função, defina _WIN32_WINNT como 0x0500 ou posterior. Para obter mais informações, consulte Usando os cabeçalhos do Windows.

Requisitos

   
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winbase.h (inclua Windows.h)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

FileIOCompletionRoutine

Funções de thread e processo

Pool de threads