Winsock Sections in a Network INF File
An INF file for a NetTrans component that provides a Winsock interface must specify this Winsock dependency. Such an INF file must contain a Winsock-install section. To create a Winsockinstall section, add the .Winsock extension to the DDInstall section name for the protocol. For example, if the DDInstall section for a protocol is named Ipx, the Winsock-install section for that protocol must be named Ipx.Winsock.
Note
Winsock dependency has been deprecated in Windows 8 and later.
A Winsock-install section must contain an AddSock directive. The AddSock directive specifies a vendor-named section that contains values to be added to the component's HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TransportDriverName\Params\Winsock key.
The vendor-named section referenced by the AddSock directive must contain the following required values:
Value Name | Description |
---|---|
TransportService |
A REG_SZ value that specifies the service name of the protocol. This must be the same as the Ndi\Service value for the protocol. For more information, see Adding Service-Related Values to the Ndi Key. |
HelperDllName |
A REG_EXPAND_SZ value that specifies the path to the Windows Sockets helper (WSH) DLL for the protocol. For more information, see WSH DLL Function Summary. |
MaxSockAddrLength |
A REG_DWORD value that specifies the largest valid SOCKADDR size, in bytes, for the WSH DLL |
MinSockAddrLength |
A REG_DWORD value that specifies the smallest valid SOCKADDR size, in bytes, for the WSH DLL |
If an optional ProviderId for a namespace provider is specified, the following values must also be specified:
Value Name | Description |
---|---|
ProviderId |
A REG_SZ value that specifies the Globally Unique Identifier (GUID) that identifies the namespace provider. The GUID is used as a key to all subsequent references to the namespace provider. Obtain the GUID by running the uuidgen.exe utility. For more information about this utility, see the Microsoft Windows SDK. |
LibraryPath |
A REG_EXPAND_SZ value that specifies the complete path to the namespace provider DLL. |
DisplayString |
A localizable string that specifies the name displayed for the namespace provider in the user interface. |
SupportedNameSpace |
A REG_DWORD value which specifies the namespace that is supported by the namespace provider. |
Version |
An optional REG_DWORD value that specifies the version number of the namespace provider. If this value is not specified, the default value (1) is used for the version number. |
The following namespace values can be assigned to SupportedNameSpace and are defined in Winsock2.h:
Namespace | Value |
---|---|
NS_ALL |
0 |
NS_SAP |
1 |
NS_NDS |
2 |
NS_PEER_BROWSE |
3 |
NS_TCPIP_LOCAL |
10 |
NS_TCPIP_HOSTS |
11 |
NS_DNS |
12 |
NS_NETBT |
13 |
NS_WINS |
14 |
NS_NBP |
20 |
NS_MS |
30 |
NS_STDA |
31 |
NS_CAIRO |
32 |
NS_X500 |
40 |
NS_NIS |
41 |
NS_WRQ |
50 |
For more information about namespace providers, see the Windows SDK documentation.
The following example shows Winsock sections for an IPX protocol:
[Ipx.Winsock]
AddSock = Install.IpxWinsock
[Install.IpxWinsock]
TransportService = nwlinkipx
HelperDllName = "%%SystemRoot%%\System32\wshisn.dll"
MaxSockAddrLength = 0x10
MinSockAddrLength = 0xe
ProviderId = "GUID"
LibraryPath = "%SystemRoot%\\System32\\nwprovau.dll"
DisplayString = %NwlnkIpx_Desc%
SupportedNameSpace = 1
Version = 2
An INF file can remove a Winsock dependency for a protocol by including a Winsock-remove section. To create a Winsock-remove section, add the .Winsock extension to the Remove section name for the protocol. For example, if the Remove section for a protocol is named Ipx.Remove, the Winsock-remove section for the protocol must be named Ipx.Remove.Winsock.
The Winsock-remove section contains a DelSock directive that specifies an INF-writer-named section. The INF-writer-named section must specify the transport service to remove. If a ProviderId was previously registered for the protocol, the vendor-named section must also specify the ProviderId to remove.
The following example shows two sections that remove the Winsock dependency for an IPX protocol:
[Ipx.Remove.Winsock]
DelSock = Remove.IpxWinsock
[Remove.IpxWinsock]
TransportService = nwlinkipx
ProviderId = "GUID"