How to install LSPs on Windows CE 4.2 and PPC 2003 (Part 1)

The Problems:

    P1) There is no way to determine the order in which LSPs will be installed in CE 4.2
    P2) The SSLLSP always installs itself over the base provider, and will ignore chains placed by other LSPs.

 A work around requires the following two attributes:

    W1)  Allows 3rd party LSPs to install in arbitrary order.
    W2)  Allows SSLLSP to be the first LSP to install.

 To solve I suggest the following solution:

    Create an application called lsp_install.dll. This application will install
    LSPs from  HKLM\COMM\WS2\LSP\LSP_INSTALL, using the same rules Windows CE 5.0 uses
    to install LSPs from  HKLM\COMM\WS2\LSP.

    Remove all  entries from HKLM\COMM\WS2\LSP.
    Add lsp_install.dll to  HKLM\COMM\WS2\LSP.
    Add the LSPs you need installed into HKLM\COMM\WS2\LSP_INSTALL

Why you should follow this solution exactly:

If you follow this solution exactly, you'll be able to interoperate with other
LSPs. If each LSP vendor creates their own solution to this problem, LSPs
from different vendors will have issues running on the same device.

Final registry layout:

     ; Only the LSP installer will be installed by the system.

    [HKEY_LOCAL_MACHINE\Comm\WS2\LSP\LSP_INSTALL]
"Dll"="lsp_install.dll"

     ; All other LSPs are installed by the LSP_INSTALL.DLL
; Which enumerates the Comm\WS2\LSP\LSP_INSTALL key.

    [HKEY_LOCAL_MACHINE\Comm\WS2\LSP\LSP_INSTALL\SSL]
"Dll"="ssllsp.dll"
"Order"=dword:1

     [HKEY_LOCAL_MACHINE\Comm\WS2\LSP\LSP_INSTALL\Your_LSP]
"Dll"="your_lsp.dll"
; Order defaults to 0xFFFFFFFF if not specified.

 Code/Binaries for LSP_INSTALLER:
  We're working on the best way to distribute this. If someone creates such a dll, fire me a mail and we'll see about putting a link up to yours.

[Author: Igor Dvorkin]