Winsock 核心事件
Winsock Kernel (WSK) 子系統可以在發生特定通訊端事件時以非同步方式通知 WSK 應用程式,例如當通訊端上收到新資料或通訊端中斷連線時。 為了讓 WSK 應用程式以非同步方式通知通訊端事件,WSK 應用程式必須實作適當的事件回呼函式,並在它建立的通訊端上啟用這些事件回呼函式。
注意 實作或使用事件回呼函式不需要 WSK 應用程式。 WSK 應用程式可以藉由呼叫適當的 WSK 通訊端函式來執行大部分的 WSK 通訊端作業。 唯一需要使用事件回呼函式的 WSK 功能是接聽通訊端的條件式接受模式。 如需使用 WSK 函式與使用事件回呼函式之間優缺點的詳細資訊,請參閱 使用 Winsock 核心函式與事件回呼函式。
每個 WSK 通訊端類別 都支援一組不同的通訊端事件。
基本通訊端
基本通訊端不支援任何通訊端事件。
接聽通訊端
事件 | 事件回呼函式 |
---|---|
已接受連入連線。 |
|
傳入連線要求已抵達。 |
|
已卸載連入連線要求。 |
* 僅適用于已啟用條件式接受模式的接聽通訊端。 如需搭配接聽通訊端使用條件式接受模式的詳細資訊,請參閱 接聽和接受連入連線。
資料包通訊端
事件 | 事件回呼函式 |
---|---|
已收到一或多個新的資料包。 |
連線導向通訊端
事件 | 事件回呼函式 |
---|---|
已收到新資料。 |
|
通訊端已中斷連線。 |
|
理想的傳送待辦專案大小已變更。 |
當 WSK 應用程式建立通訊端時,預設會停用通訊端的事件回呼函式。 WSK 應用程式必須啟用通訊端的事件回呼函式,WSK 子系統才能在通訊端事件發生時呼叫通訊端的事件回呼函式。 如需啟用和停用通訊端事件回呼函式的詳細資訊,請參閱 啟用和停用事件回呼函式。
如果 WSK 應用程式註冊通訊端的 擴充介面 ,擴充功能介面可能會支援其他事件。 如需註冊通訊端擴充介面的詳細資訊,請參閱 註冊擴充功能介面。
WSK 子系統也可以通知 WSK 應用程式事件不是特定通訊端特有的事件。 為了讓 WSK 應用程式收到這些事件的通知,WSK 應用程式必須實作 WskClientEvent 事件回呼函式。 目前未定義特定通訊端的特定事件。 WSK 應用程式的 WskClientEvent 事件回呼函式一律為啟用且無法停用。
WSK 應用程式的事件回呼函式不得等候 WSK 完成或事件回呼函式內容中的其他 WSK 要求完成。 回呼可能會起始其他 WSK 要求,假設它不會花費太多時間在DISPATCH_LEVEL或耗盡核心堆疊,但即使呼叫 IRQL = PASSIVE_LEVEL 的回呼,也不得等候完成。