This section lists the "upcalls" that service providers may make into the Windows Sockets client. Service providers receive an upcall dispatch table as a parameter to WSPStartup(), and use entries in this table to make the upcalls. Therefore, a client does not need to export its "WPU" functions.
It is not mandatory that providers utilize all of these upcalls. The following table indicates which upcalls must be used and which are optional.
This section describes the "upcalls" that service providers may make into the Windows Sockets client. Service providers receive an upcall dispatch table as a parameter to WSPStartup(), and use entries in this table to make the upcalls. Therefore, a client does not need to export its "WPU" functions.
It is not mandatory that providers utilize all of these upcalls. The following table indicates which upcalls must be used and which are optional.
WPUCloseEvent | Close an open event object handle | Optional. | The provider may use an appropriate OS call instead. |
WPUCloseSocketHandle | Close a socket handle allocated by the Windows Sockets DLL | Required. | The WS2_32.DLLneeds to query and/or modify internal state information associated with the socket handle. |
WPUCloseThread | Close a thread Id for an internal service thread | ||
WPUCompleteOverlappedRequest | Deliver overlapped I/O completion notification where the completion mechanism is something other than user mode APC | ||
WPUCreateEvent | Create a new event object | Optional | The provider may use an appropriate OS call instead. |
WPUCreateSocketHandle | Create a new socket handle for non-IFS providers | Required for non-IFS providers. | The WS2_32.DLLneeds to query and/or modify internal state information associated with the socket handle. |
WPUFDIsSet | Check the membership of the specified socket handle | Optional. | This is just a convenience function that knows how to dig through fd set structures. A provider may need to dig through these structures explicitly anyway. |
WPUGetProviderPath | Retrieve the DLL path for the specified provider | Required. | Only the WS2_32.DLLwould know where an adjacent protocol layer (potentially from another vendor) has been installed. |
WPUModifyIFSHandle | Receive a (possibly) modified IFS handle from the Windows Sockets DLL | Required for IFS providers. | The WS2_32.DLLneeds to query and/or modify internal state information associated with the socket handle. |
WPUPostMessage | Performs the standard PostMessage function in a way that maintains backward compatibility | Required | NT only. Win95 allows post message from kernel mode. |
WPUQueryBlockingCallback | Return a pointer to a thread's blocking hook function | Required | There is no corresponding OS functionality. Only the WS2_32.DLLhas the information to accomplish this. |
WPUQuerySocketHandleContext | Get a socket's context value (non-IFS providers only) | Required for non-IFS providers. | The WS2_32.DLLneeds to query and/or modify internal state information associated with the socket handle. |
WPUQueueApc | Queue a user-mode APC to the specified thread | Optional. | Win 32's QueueUserApc() may also be used. |
WPUResetEvent | Reset an event object | Optional. | The provider may use an appropriate OS call instead. |
WPUSetEvent | Set an event object | Optional. | The provider may use an appropriate OS call instead. |