Share via


TdiProviderReady function

The TdiProviderReady function notifies TDI clients that a particular transport has established bindings to one or more underlying NICs and is now available to send and receive data over the network.

Syntax

NTSTATUS TdiProviderReady(
  _In_ HANDLE ProviderHandle
);

Parameters

  • ProviderHandle [in]
    Specifies the handle that the transport obtained from TdiRegisterProvider.

Return value

TdiProviderReady returns STATUS_SUCCESS when it has notified all currently bound clients of the transport's readiness to transfer data over the network. Otherwise, it can return STATUS_INSUFFICIENT_RESOURCES. (Because the availability of system resources is dynamic, a subsequent call from the same transport can succeed.)

Remarks

A TDI transport calls TdiProviderReady after all of the following operations are complete:

  • The ProtocolBindAdapter function of the lowest driver in the transport stack (or of the monolithic transport) has successfully established a binding to one or more underlying NDIS miniport drivers, so these miniport drivers' NICs are initialized and capable of transferring data over the network.

  • NDIS has called the ProtocolPnPEvent function at the bottom of the transport stack with an input NET_PNP_EVENT of type NetEventBindsComplete.

  • Any intermediate drivers in the transport stack have allocated and initialized whatever state they need to track network transfers on these newly established transport-to-NIC bindings.

  • The TDI transport driver also has allocated and initialized whatever state it needs to track its clients' network transfers on these newly established transport-to-NIC bindings. For example, the transport has called TdiRegisterDeviceObject one or more times with the name of the device object that it created to represent the target of its clients' network I/O operations on each such binding. The transport also might have called TdiRegisterNetAddress one or more times on its just established bindings.

The transport's call to TdiProviderReady accomplishes one or both of the following:

  • TDI calls the registered ClientPnPBindingChange routines of this transport's clients with the input PnPOpcode value TDI_PNP_OP_PROVIDERREADY, thereby notifying its clients that the underlying transport stack is ready to send and/or receive data over the network through this newly established transport-to-NIC binding.

  • TDI calls the registered ClientPnPBindingChange routines of every transports' clients if this is the last possible transport-to-NIC binding to be established and the last possible transport-ready indication given to TDI, according to the network configuration information stored in the registry on this machine. In effect, TDI notifies all registered clients when system initialization-time binding operations are done by calling each registered ClientPnPBindingChange routine with a NULLDeviceName pointer and the PnPOpcode value TDI_PNP_OP_NETREADY.

For more information about how to create device objects with IoCreateDevice.

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).

 

Requirements

Target platform

Universal

Header

Tdikrnl.h (include TdiKrnl.h)

Library

Tdi.lib

IRQL

< DISPATCH_LEVEL

See also

ClientPnPBindingChange

ProtocolBindAdapter

TdiRegisterDeviceObject

TdiRegisterNetAddress

TdiRegisterProvider

 

 

Send comments about this topic to Microsoft