共用方式為


使用 TDI 傳輸

Winsock Kernel (WSK) 子系統提供使用 TDI 傳輸的支援。 為了透過 WSK 網路程式設計介面 (NPI) 使用 TDI 傳輸,WSK 應用程式必須將位址系列、套接字類型和通訊協定的組合對應到每個 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 之後的 Windows 版本中,Microsoft 將不再支援 TDI。 請改用 Windows 篩選平臺Winsock 核心