TDI 전송 사용
WSK(Winsock 커널) 하위 시스템은 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 전송을 사용하는 새 소켓을 만들 수 있습니다.
참고 TDI는 Windows Vista 이후의 Microsoft Windows 버전에서 지원되지 않습니다. 대신 Windows 필터링 플랫폼 또는 Winsock 커널 을 사용합니다.