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::ReadAsync 或 IStreamAsync::WriteAsync 函式。
OffsetHigh
類型: DWORD
要開始傳輸之檔案位置的高序單字。
Pointer
類型: PVOID
保留的。
hEvent
類型: 句柄
處理作業完成時設定為訊號狀態的事件。 呼叫進程必須在呼叫任何重疊函式之前,將此成員設定為零或有效的事件句柄。 若要建立事件物件,請使用 CreateEvent 函式。 此函式會傳回句柄,可用來同步處理裝置的同時 I/O 要求。
IStreamAsync::ReadAsync 和 IStreamAsync::WriteAsync 等函式會在開始 I/O 作業之前,將此句柄設定為非簽署狀態。 當作業完成時,句柄會設定為已發出訊號的狀態。
IStreamAsync::OverlappedResult 等函式和等候函式會將自動重設事件重設為非簽署狀態。 因此,如果使用自動重設事件,如果應用程式等候作業完成,然後呼叫 IStreamAsync::OverlappedResult,應用程式就可以停止回應。
備註
在函數調用中使用這個結構之前,應該一律初始化為零。 如果不是,函式可能會失敗並傳回 ERROR_INVALID_PARAMETER。
使用 IStreamAsync::CancelIo 函式來取消異步 I/O 作業。
常見的錯誤是先重複使用 重疊 結構,再完成先前的異步操作。 針對每個要求使用不同的結構。 針對處理數據的每個線程建立事件物件。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
標頭 | shobjidl.h |