Compartilhar via


Estrutura OVERLAPPED (shobjidl.h)

Contém informações usadas na entrada/saída assíncrona (sobreposta) (E/S).

Sintaxe

typedef struct _OVERLAPPED {
  ULONG_PTR Internal;
  ULONG_PTR InternalHigh;
  union {
    struct {
      DWORD Offset;
      DWORD OffsetHigh;
    };
    PVOID Pointer;
  };
  HANDLE    hEvent;
} OVERLAPPED, *LPOVERLAPPED;

Membros

Internal

Tipo: ULONG_PTR

Reservado para uso do sistema operacional. Esse membro, que especifica um status dependente do sistema, é válido quando a função IStreamAsync::OverlappedResult retorna sem definir as informações de erro estendidas como ERROR_IO_PENDING.

InternalHigh

Tipo: ULONG_PTR

Reservado para uso do sistema operacional. Esse membro, que especifica o comprimento dos dados transferidos, é válido quando a função IStreamAsync::OverlappedResult retorna TRUE.

Offset

Tipo: DWORD

Posição do arquivo na qual iniciar a transferência. A posição do arquivo é um deslocamento de bytes do início do arquivo. O processo de chamada deve definir esse membro antes de chamar a função IStreamAsync::ReadAsync ou IStreamAsync::WriteAsync .

OffsetHigh

Tipo: DWORD

Palavra de alta ordem da posição do arquivo na qual iniciar a transferência.

Pointer

Tipo: PVOID

Reservado.

hEvent

Tipo: identificador

Manipule para um evento definido como o estado sinalizado quando a operação tiver sido concluída. O processo de chamada deve definir esse membro como zero ou um identificador de evento válido antes de chamar quaisquer funções sobrepostas. Para criar um objeto de evento, use a função CreateEvent . Essa função retorna um identificador que pode ser usado para sincronizar solicitações simultâneas de E/S para um dispositivo.

Funções como IStreamAsync::ReadAsync e IStreamAsync::WriteAsync definem esse identificador como o estado não atribuído antes de iniciar uma operação de E/S. Quando a operação for concluída, o identificador será definido como o estado sinalizado.

Funções como IStreamAsync::OverlappedResult e as funções de espera redefinem eventos de redefinição automática para o estado não atribuído. Portanto, se um evento de redefinição automática for usado, o aplicativo poderá parar de responder se aguardar a conclusão da operação e chamar IStreamAsync::OverlappedResult.

Comentários

Essa estrutura sempre deve ser inicializada como zero antes de ser usada em uma chamada de função. Se não estiver, a função poderá falhar e retornar ERROR_INVALID_PARAMETER.

Use a função IStreamAsync::CancelIo para cancelar uma operação de E/S assíncrona.

Um erro comum é reutilizar uma estrutura OVERLAPPED antes que a operação assíncrona anterior tenha sido concluída. Use uma estrutura separada para cada solicitação. Crie um objeto de evento para cada thread que processa dados.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Cabeçalho shobjidl.h