共用方式為


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

後續提供做為 APC 函式輸入參數的 32 位內容值。

[out] lpErrno

錯誤碼的指標。

傳回值

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

錯誤碼 意義
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。 - 當目標執行緒最終進入可警示的等候狀態時,服務提供者的中繼程式會在適當的執行緒內容中呼叫。 - 中繼程式只會解除封裝參數、解除配置緩衝區,以及呼叫用戶端提供的完成程式。

規格需求

   
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 ws2spi.h

另請參閱

WSATHREADID

LPWSPIoctl

LPWSPRecv

LPWSPRecvFrom

LPWSPSend

LPWSPSendTo