다음을 통해 공유


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 커널 을 사용합니다.