WebhostRegisterProtocol Function


Declares the protocol that the listener adapter supports.


HRESULT WebhostRegisterProtocol(  
   IN LPCWSTR ProtocolId,  
   IN VOID* pListenerCallbacks,  
   IN VOID* pContext,  
   OUT DWORD* pProtocolHandle  


[IN] A string that contains the protocol that this listener adapter supports.

[IN] A VOID pointer to the WEBHOST_LISTENER_CALLBACKS structure.

[IN] An arbitrary VOID pointer that the listener adapter will pass.

[OUT] A pointer to a DWORD that contains the process-unique key that represents this protocol.

Return Value

An HRESULT. Possible values include, but are not limited to, those in the following table.

Value Definition
S_OK Indicates that the operation was successful.
HRESULT_FROM_WIN32( ERROR_ALREADY_EXISTS ) Indicates there is already a listener adapter registered in this process for this protocol.
E_INVALIDARG Indicates that one of the parameters is not valid.
E_OUTOFMEMORY Indicates that heap memory is exhausted.


You must call the WebhostRegisterProtocol function first when you start a listener adapter. WebhostRegisterProtocol is asynchronous, so a successful return does not guarantee that the call was successful. The Windows Process Activation Service (WAS) notifies the listener of successful registration by using the PFN_WEBHOST_LISTENER_CONFIG_MANAGER_CONNECTED function. PFN_WEBHOST_LISTENER_CONFIG_MANAGER_CONNECTED is passed in the pListenerCallbacks parameter to this call.

You should set a time-out for the listener adapter to wait for the PFN_WEBHOST_LISTENER_CONFIG_MANAGER_CONNECTED callback function. If the time-out expires, you should stop the listener adapter service and mark it as failed. A successful return from this call indicates that the client library is waiting for the Windows Process Activation Service and will connect when possible.

You should not set the listener service status to SERVICE_RUNNING from this callback function. You should set the service status to SERVICE_RUNNING only when initialization is complete and the protocol listener is listening (typically after the PFN_WEBHOST_LISTENER_CONFIG_MANAGER_INITIALIZATION_COMPLETED notification).

The pContext parameter is passed to the listener adapter whenever a callback function is invoked. It can be used when multiple protocols that use the same callback structure are implemented.

For the client library to connect to the Windows Process Activation Service, the following conditions must be met:

  • The <listenerAdapters> configuration section in the Was.config file must declare the protocol and the identity under which the listener adapters will be running.

  • The Windows Process Activation Service must be running.

  • Listener adapter services should register as dependent on the Windows Process Activation Service.


Type Description
Client - IIS 7.0 on Windows Vista
- IIS 7.5 on Windows 7
- IIS 8.0 on Windows 8
- IIS 10.0 on Windows 10
Server - IIS 7.0 on Windows Server 2008
- IIS 7.5 on Windows Server 2008 R2
- IIS 8.0 on Windows Server 2012
- IIS 8.5 on Windows Server 2012 R2
- IIS 10.0 on Windows Server 2016 Technical Preview
Product - IIS 7.0, IIS 7.5, IIS 8.0, IIS 8.5, IIS 10.0
- IIS Express 7.5, IIS Express 8.0, IIS Express 10.0
Header Listeneradapter.h

See Also

Listener Adapter Exported Functions