WskSocketConnect 函式會建立新的連線導向套接字、將它系結至本機傳輸位址、將它連接到指定的遠端傳輸位址,以及傳回相關聯套接字物件的指標。
語法
PFN_WSK_SOCKET_CONNECT PfnWskSocketConnect;
NTSTATUS PfnWskSocketConnect(
[in] PWSK_CLIENT Client,
[in] USHORT SocketType,
[in] ULONG Protocol,
[in] PSOCKADDR LocalAddress,
[in] PSOCKADDR RemoteAddress,
ULONG Flags,
[in, optional] PVOID SocketContext,
[in, optional] const WSK_CLIENT_CONNECTION_DISPATCH *Dispatch,
[in, optional] PEPROCESS OwningProcess,
[in, optional] PETHREAD OwningThread,
[in, optional] PSECURITY_DESCRIPTOR SecurityDescriptor,
[in, out] PIRP Irp
)
{...}
參數
[in] Client
透過 WskProviderN pi 參數傳回之 WSK_CLIENT 結構的指標 WskCaptureProviderNPI 函式。
[in] SocketType
正在建立的套接字類型。 支援下列套接字型態:
SOCK_STREAM
支援可靠的連線導向位元組數據流通訊。
SOCK_DGRAM
支援不可靠的無連線數據報通訊。
SOCK_RAW
支援對傳輸通訊協定的原始存取。
如需每個支援位址系列支援的套接字類型詳細資訊,請參閱
WSK 位址系列。
[in] Protocol
要建立之套接字的傳輸通訊協定。 如需每個支援位址系列支援的通訊協定詳細資訊,請參閱 WSK 位址系列。
[in] LocalAddress
結構的指標,指定要系結套接字的本機傳輸位址。 WSK 應用程式必須指定對應至所建立套接字之位址系列之特定 SOCKADDR 結構類型的指標。
[in] RemoteAddress
結構的指標,指定要連接套接字的遠端傳輸位址。 WSK 應用程式必須指定對應至所建立套接字之位址系列之特定 SOCKADDR 結構類型的指標。
Flags
此參數保留供系統使用。 WSK 應用程式必須將此參數設定為零。
[in, optional] SocketContext
所建立套接字之呼叫端所提供內容的指標。 WSK 子系統會將這個指標傳遞至套接字的事件回呼函式。 內容資訊對 WSK 子系統不透明,而且必須儲存在非分頁記憶體中。 如果 WSK 應用程式不會在新套接字上啟用任何事件回呼函式,它應該將此指標設定為 NULL。
[in, optional] Dispatch
常數的指標 WSK_CLIENT_CONNECTION_DISPATCH 結構。 這個結構是一個分派數據表,其中包含新套接字之事件回呼函式的指標。 如果 WSK 應用程式不會啟用新套接字的所有事件回呼函式,它應該會將分派數據表中的指標設定為 NULL 未啟用的事件回呼函式。 如果 WSK 應用程式不會在新套接字上啟用任何事件回呼函式,它應該將此指標設定為 NULL。
[in, optional] OwningProcess
WSK 子系統從中擷取系結套接字時要使用的安全性內容之進程的指標。 WSK 子系統會使用安全性內容來判斷如果該位址已在使用中,是否可以共用本機傳輸位址。 若要指定目前的行程,WSK 應用程式會將此指標設定為 NULL。
[in, optional] OwningThread
特定線程的指標,WSK 子系統會從中擷取系結套接字時要使用的安全性內容。 WSK 子系統會使用安全性內容來判斷如果該位址已在使用中,是否可以共用本機傳輸位址。 如果 WSK 應用程式不需要指定特定線程,它會將此指標設定為 NULL。
[in, optional] SecurityDescriptor
SECURITY_DESCRIPTOR 結構的指標,指定要套用至所建立之套接字的安全性描述項。 安全性描述元會控制套接字所系結之本機傳輸地址的共用。 如果 WSK 應用程式指定非NULL 指標,它就必須使用 WSK_CACHE_SD 控件程式代碼呼叫 WskControlClient 函式來指定安全性描述元的快取複本指標。 若要指定不允許共享本機傳輸位址的預設安全性描述元,WSK 應用程式會將 SecurityDescriptor 設定為 NULL。
如需SECURITY_DESCRIPTOR結構的詳細資訊,請參閱 Microsoft Windows SDK 檔中SECURITY_DESCRIPTOR的參考頁面。
[in, out] Irp
WSK 子系統用來以異步方式建立新套接字的呼叫端配置 IRP 指標。 如需搭配 WSK 函式使用 IRP 的詳細資訊,請參閱 搭配 Winsock 核心函式使用 IRP。
傳回值
WskSocketConnect 會傳回下列其中一個 NTSTATUS 程式代碼:
傳回碼 | 描述 |
---|---|
|
已成功建立新的套接字。 IRP 將會以成功狀態完成。 |
|
WSK 子系統無法立即建立套接字。 WSK 子系統會在建立新的套接字之後完成 IRP。 套接字建立的狀態將會在 IRP 的 [IoStatus.Status] 字段中傳回。 |
|
發生錯誤。 IRP 將會以失敗狀態完成。 |
言論
如果 IRP 以成功狀態完成,IRP 的 [IoStatus.Information] 字段會包含新套接字的套接字物件結構指標(WSK_SOCKET)。
WSK 應用程式可以使用 WSK_TRANSPORT_LIST_QUERY 控件程式代碼呼叫 WskControlClient 函式,以取得可用的傳輸通訊協定清單。 WskControlClient 會傳回 WSK_TRANSPORT 結構清單,其中包含 SocketType 和 通訊協定 參數的所有有效組合。
WSK 子系統會從 SOCKADDR 結構中指定的位址系列,從 LocalAddress 參數所指向的位址系列,決定新套接字的位址系列。
如果 WSK 應用程式需要在系結或連接套接字之前設定套接字選項或發出套接字上的 I/O 控制作業,WSK 應用程式必須呼叫 WskSocket、WskBind和 WskConnect 函式,而不是呼叫 WskSocketConnect 函式。
當 WSK 應用程式成功建立新的套接字時,預設會停用新套接字上的所有事件回呼函式。 如需開啟任何新套接字事件回呼函式的詳細資訊,請參閱 啟用和停用事件回呼函式。
如果 WSK 應用程式為 SecurityDescriptor 參數指定非NULL 指標,則在 IRP 完成之後,它不得釋放快取的安全性描述元。
WSK 子系統會代表 WSK 應用程式,為新的套接字配置套接字對象結構的記憶體(WSK_SOCKET)。 WSK 子系統會在套接字關閉時解除分配此記憶體。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 可在 Windows Vista 和更新版本的 Windows作系統中使用。 |
目標平臺 | 普遍 |
標頭 | wsk.h (包括 Wsk.h) |
IRQL | <= DISPATCH_LEVEL |