TDI Transport Driver Routines
Every TDI-compliant transport driver is a standard intermediate driver that must export a number of entry points called by the I/O manager.
Some of a TDI transport's standard driver routines initialize and unload the driver itself. Others are standard Dispatch routines that the I/O manager calls when TDI clients make calls to system support routines, such as ZwCreateFile and IoCallDriver.
Like other kernel-mode drivers, a TDI transport's DriverEntryroutine sets up one or more driver-supplied Dispatch routines to handle various types of I/O requests passed in as IRPs. A TDI driver can export a single Dispatch routine to handle all incoming IRPs or a separate DispatchXxx routine to handle each IRP_MJ_XXX the driver must support. General requirements for Dispatch routines are discussed in detail in the Kernel-mode Driver Design Guide. For more information about TDI-specific requirements for dispatch routines, see TDI Routines, Macros, and Callbacksand the Network Driver Reference.
As a TDI transport completes an operation requested by its client, the I/O manager calls any client-supplied IoCompletion routine that the client set in the IRP before that client submitted it to the underlying transport.
In addition, such a transport driver must call the TDI client at preregistered entry points within the TDI client's code when specific network events occur. These client-supplied event handlers also summarized in TDI Routines, Macros, and Callbacksand are described in the Network Driver Reference.
At its lower edge, a TDI driver that is monolithic must export a set of ProtocolXxx functions to be called by the NDIS library on behalf of underlying NDIS intermediate or NIC drivers. These NDIS driver lower-edge functions are described earlier in this guide and in a function-specific manner in the Network Driver Reference.
Note The TDI feature is deprecated and will be removed in future versions of Microsoft Windows. Depending on how you use TDI, use either the Winsock Kernel (WSK) or Windows Filtering Platform (WFP). For more information about WFP and WSK, see Windows Filtering Platform and Winsock Kernel. For a Windows Core Networking blog entry about WSK and TDI, see Introduction to Winsock Kernel (WSK).