다음을 통해 공유


OVERLAPPED 구조체(shobjidl.h)

비동기(겹치는) 입력/출력(I/O)에 사용되는 정보를 포함합니다.

구문

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

멤버

Internal

형식: ULONG_PTR

운영 체제용으로 예약되어 있습니다. 시스템 종속 상태 지정하는 이 멤버는 확장 오류 정보를 ERROR_IO_PENDING 설정하지 않고 IStreamAsync::OverlappedResult 함수가 반환될 때 유효합니다.

InternalHigh

형식: ULONG_PTR

운영 체제용으로 예약되어 있습니다. 전송된 데이터의 길이를 지정하는 이 멤버는 IStreamAsync::OverlappedResult 함수가 TRUE를 반환할 때 유효합니다.

Offset

형식:DWORD

전송을 시작할 파일 위치입니다. 파일 위치는 파일의 시작 부분에서 바이트 오프셋만큼 떨어져 있습니다. 호출 프로세스는 IStreamAsync::ReadAsync 또는 IStreamAsync::WriteAsync 함수를 호출하기 전에 이 멤버를 설정해야 합니다.

OffsetHigh

형식:DWORD

전송을 시작할 파일 위치의 상위 단어입니다.

Pointer

형식: PVOID

예약되어 있습니다.

hEvent

형식: 핸들

작업이 완료될 때 신호를 받은 상태로 설정된 이벤트에 대한 핸들입니다. 호출 프로세스는 겹치는 함수를 호출하기 전에 이 멤버를 0 또는 유효한 이벤트 핸들로 설정해야 합니다. 이벤트 개체를 만들려면 CreateEvent 함수를 사용합니다. 이 함수는 디바이스에 대한 동시 I/O 요청을 동기화하는 데 사용할 수 있는 핸들을 반환합니다.

IStreamAsync::ReadAsyncIStreamAsync::WriteAsync와 같은 함수는 I/O 작업을 시작하기 전에 이 핸들을 서명되지 않은 상태로 설정합니다. 작업이 완료되면 핸들이 신호됨 상태로 설정됩니다.

IStreamAsync::OverlappedResult 및 wait 함수와 같은 함수는 자동 재설정 이벤트를 서명되지 않은 상태로 다시 설정합니다. 따라서 자동 재설정 이벤트를 사용하는 경우 작업이 완료될 때까지 기다렸다가 IStreamAsync::OverlappedResult를 호출하면 애플리케이션이 응답을 중지할 수 있습니다.

설명

이 구조체는 함수 호출에서 사용되기 전에 항상 0으로 초기화해야 합니다. 그렇지 않으면 함수가 실패하고 ERROR_INVALID_PARAMETER 반환할 수 있습니다.

IStreamAsync::CancelIo 함수를 사용하여 비동기 I/O 작업을 취소합니다.

일반적인 실수는 이전 비동기 작업이 완료되기 전에 OVERLAPPED 구조를 다시 사용하는 것입니다. 각 요청에 대해 별도의 구조를 사용합니다. 데이터를 처리하는 각 스레드에 대한 이벤트 개체를 만듭니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
머리글 shobjidl.h