使用 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 内核 。