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

保留供作業系統使用。 當 IStreamAsync::OverlappedResult 函式傳回時,這個成員會指定系統相依狀態,而不會將擴充錯誤資訊設定為 ERROR_IO_PENDING時有效。

InternalHigh

類型: ULONG_PTR

保留供作業系統使用。 當 IStreamAsync::OverlappedResult 函式傳回 TRUE 時,這個成員會指定所傳輸數據的長度有效。

Offset

類型: DWORD

要啟動傳輸的檔案位置。 檔案位置在離檔案開頭一個位元組位移的地方。 呼叫進程必須先設定此成員,才能呼叫 IStreamAsync::ReadAsyncIStreamAsync::WriteAsync 函式。

OffsetHigh

類型: DWORD

要開始傳輸之檔案位置的高序單字。

Pointer

類型: PVOID

保留的。

hEvent

類型: 句柄

處理作業完成時設定為訊號狀態的事件。 呼叫進程必須在呼叫任何重疊函式之前,將此成員設定為零或有效的事件句柄。 若要建立事件物件,請使用 CreateEvent 函式。 此函式會傳回句柄,可用來同步處理裝置的同時 I/O 要求。

IStreamAsync::ReadAsyncIStreamAsync::WriteAsync 等函式會在開始 I/O 作業之前,將此句柄設定為非簽署狀態。 當作業完成時,句柄會設定為已發出訊號的狀態。

IStreamAsync::OverlappedResult 等函式和等候函式會將自動重設事件重設為非簽署狀態。 因此,如果使用自動重設事件,如果應用程式等候作業完成,然後呼叫 IStreamAsync::OverlappedResult,應用程式就可以停止回應。

備註

在函數調用中使用這個結構之前,應該一律初始化為零。 如果不是,函式可能會失敗並傳回 ERROR_INVALID_PARAMETER

使用 IStreamAsync::CancelIo 函式來取消異步 I/O 作業。

常見的錯誤是先重複使用 重疊 結構,再完成先前的異步操作。 針對每個要求使用不同的結構。 針對處理數據的每個線程建立事件物件。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
標頭 shobjidl.h