Usando transportes TDI

O subsistema WSK (Winsock Kernel) dá suporte ao uso de transportes TDI . Para usar transportes TDI por meio da NPI (Interface de Programação de Rede) do WSK, um aplicativo WSK deve mapear a combinação de família de endereços, tipo de soquete e protocolo para cada um dos transportes TDI usados para o nome do dispositivo associado de cada um desses transportes TDI. Um aplicativo WSK mapeia combinações de família de endereços, tipo de soquete e protocolo para nomes de dispositivo de transportes TDI usando o WSK_TDI_DEVICENAME_MAPPING operação de controle do cliente.

O exemplo de código a seguir mostra como um aplicativo WSK pode mapear combinações de família de endereços, tipo de soquete e protocolo para nomes de dispositivos de transportes 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;
}

Um aplicativo WSK deve mapear combinações de família de endereços, tipo de soquete e protocolo para nomes de dispositivo de transportes TDI antes de criar qualquer soquete. Depois que o aplicativo WSK tiver mapeado com êxito as combinações de família de endereços, tipo de soquete e protocolo para nomes de dispositivo de transportes TDI, o aplicativo poderá criar novos soquetes que usam os transportes TDI mapeados.

Nota A TDI não terá suporte nas versões do Microsoft Windows após o Windows Vista. Em vez disso, use a Plataforma de Filtragem do Windows ou o Kernel winsock .