共用方式為


WPUQueueApc 函數 (ws2spi.h)

WPUQueueApc 函式會將使用者模式非同步程序呼叫 (APC) 排入指定執行緒的佇列,以協助呼叫重迭的 I/O 完成常式。

語法

int WPUQueueApc(
  [in]  LPWSATHREADID lpThreadId,
  [in]  LPWSAUSERAPC  lpfnUserApc,
  [in]  DWORD_PTR     dwContext,
  [out] LPINT         lpErrno
);

參數

[in] lpThreadId

識別執行緒內容之 WSATHREADID 結構的指標。 此結構的指標是由 Ws2_32.dll 提供給服務提供者,做為重迭作業的輸入參數。 提供者應該在本機儲存 WSATHREADID 結構,並提供此本機存放區的指標。 一旦 WPUQueueApc 傳回,就不再需要 WSATHREADID 的本機複本。

[in] lpfnUserApc

要呼叫的 APC 函式指標。

[in] dwContext

32 位環境定義值,後續會作為輸入參數提供給 APC 函式。

[out] lpErrno

錯誤碼的指標。

返回值

如果未發生錯誤, WPUQueueApc 會傳回零,並將指定執行緒的完成常式排入佇列。 否則,它會傳回SOCKET_ERROR,而且 lpErrno 中會提供特定的錯誤碼。

錯誤碼 Meaning
WSAEFAULT
dwThreadId 參數未指定有效的執行緒。
 
 

備註

此函式會針對指定的執行緒將 APC 函式排入佇列。 在 Windows 下,這將使用使用者模式非同步過程呼叫 (APC) 來完成。 只有在指定的執行程在可警示等候中遭到封鎖時,APC 才會執行,而且會直接進行回呼。 此呼叫可在中斷內容內安全使用。

LPWSAUSERAPC 的定義如下:

typedef void ( CALLBACK FAR * LPWSAUSERAPC )( DWORD dwContext );

因為 APC 機制只支援單一內容值,所以 lpfnUserApc 本身不能是用戶端指定的完成常式,這涉及更多參數。 服務提供者必須改為提供其自己的 APC 函式的指標,該函式會使用提供的 dwContext 值來存取重迭作業所需的結果資訊,然後叫用用戶端指定的完成常式。

對於使用者模式元件實作重疊 I/O 的服務提供者,APC 機制的一般使用方式如下。

    - 當 I/O 作業完成時,提供者會配置小型緩衝區,並使用用戶端所提供完成程式的指標和參數值來封裝它,以傳遞至程式。 - 它會將 APC 排入佇列,將緩衝區的指標指定為 dwContext 值,並將自己的中繼程式指定為目標程式 lpfnUserApc。 - 當目標執行緒最終進入可警示等候狀態時,會在適當的執行緒內容中呼叫服務提供者的中繼程式。 - 中繼程式只會解壓縮參數、解除配置緩衝區,並呼叫用戶端提供的完成程式。

需求

Requirement 價值觀
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 窗戶
Header ws2spi.h

另請參閱

WSATHREADID

LPWSPIoctl

LPWSP視頻

LPWSPRecv從

LPWSPS發送

LPWSPS傳送至