共用方式為


使用 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 核心