Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
A version of this page is also available for
4/8/2010

Ws2.dll manages the registration and demand loading of individual namespace provider DLLs. It also is responsible for routing namespace operations from a Winsock application to the appropriate set of namespace providers. This mapping is governed by the value of namespace and service provider identifier parameters that are found in individual functions. As a general rule, when a specific namespace provider is referenced, the operation is only routed to an identified provider. If the namespace provider identifier is NULL but a particular namespace is referenced, the operation is routed to all namespace providers that support the identified namespace. If the namespace provider identifier is NULL and the namespace identifier is given as NS_ALL, then the operation is routed to all active namespace providers.

As part of starting a query to one or more service providers, Ws2.dll allocates an object to keep track of the ongoing state of the query. An opaque handle representing this object is returned to the application that started the query. The application supplies this handle as a parameter each time it repetitively calls an application interface function to retrieve the next unit of data resulting from the query.

In response to these application interface procedure calls, Ws2.dll uses the information it stores in the object to make corresponding calls to the namespace providers involved in the query. Ws2.dll updates the information in its object as each successive application interface call occurs so that the corresponding calls to namespace providers progress appropriately through all of the namespace providers involved in the query.

Each namespace provider is responsible for mapping the set of functions appearing in the Winsock name resolution SPI to the appropriate transactions with the supported namespace. In some cases, this is primarily a matter of mapping the SPI to whatever native interface exists for the namespace. In others, the namespace provider must conduct transactions with the namespace provider over the network. Some namespace providers will do this by making calls to the Winsock API, others will use private interfaces to associated transport stacks.

See Also