TDI トランスポートの使用
Winsock カーネル (WSK) サブシステムは、TDI トランスポートの使用をサポートします。 WSK アプリケーションで WSK ネットワーク プログラミング インターフェイス (NPI) を介して TDI トランスポートを使用するには、使用する各 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 カーネルを使用してください。