使用 TDI 傳輸
Winsock 核心 (WSK) 子系統提供使用 TDI 傳輸的支援。 為了透過 WSK 網路程式設計介面 (NPI) 使用 TDI 傳輸,WSK 應用程式必須對應每個 TDI 傳輸的位址系列、通訊端類型和通訊協定的組合,其會用於每個 TDI 傳輸的相關聯裝置名稱。 WSK 應用程式會使用 WSK_TDI_DEVICENAME_MAPPING 用戶端控制作業,將位址系列、通訊端類型和通訊協定的組合對應至 TDI 傳輸的裝置名稱。
下列程式碼範例示範 WSK 應用程式如何將位址系列、通訊端類型和通訊協定的組合對應至 TDI 傳輸的裝置名稱。
// Number of TDI mappings
#define MAPCOUNT 2
// Array of TDI mappings
const WSK_TDI_MAP TdiMap[MAPCOUNT] =
{
{SOCK_STREAM, ..., ..., ...},
{SOCK_DGRAM, ..., ..., ...}
};
// TDI map info structure
const WSK_TDI_MAP_INFO TdiMapInfo =
{
MAPCOUNT,
TdiMap
}
// Function to set the TDI map
NTSTATUS
SetTdiMap(
PWSK_APP_BINDING_CONTEXT BindingContext
)
{
NTSTATUS Status;
// Perform client control operation
Status =
BindingContext->
WskProviderDispatch->
WskControlClient(
BindingContext->WskClient,
WSK_TDI_DEVICENAME_MAPPING,
sizeof(WSK_TDI_MAP_INFO),
&TdiMapInfo,
0,
NULL,
NULL,
NULL // No IRP for this control operation
);
// Return status of client control operation
return Status;
}
WSK 應用程式必須先將位址系列、通訊端類型和通訊協定的組合對應至 TDI 傳輸的裝置名稱,才能建立任何通訊端。 在 WSK 應用程式成功將位址系列、通訊端類型和通訊協定的組合對應至 TDI 傳輸的裝置名稱之後,應用程式就可以建立使用對應 TDI 傳輸的新通訊端。
注意 在 Windows Vista 之後,Microsoft Windows 版本不支援 TDI。 請改用 Windows 篩選平台 或 Winsock 核心 。