static WebSocketProtocolComponent()
        {
            s_DllFileName        = Path.Combine(Environment.SystemDirectory, WEBSOCKET);
            s_WebSocketDllHandle = SafeLoadLibrary.LoadLibraryEx(s_DllFileName);

            if (!s_WebSocketDllHandle.IsInvalid)
            {
                s_SupportedVersion = GetSupportedVersion();

                s_ServerFakeRequestHeaders = new HttpHeader[]
                {
                    new HttpHeader()
                    {
                        Name        = HttpKnownHeaderNames.Connection,
                        NameLength  = (uint)HttpKnownHeaderNames.Connection.Length,
                        Value       = HttpKnownHeaderNames.Upgrade,
                        ValueLength = (uint)HttpKnownHeaderNames.Upgrade.Length
                    },
                    new HttpHeader()
                    {
                        Name        = HttpKnownHeaderNames.Upgrade,
                        NameLength  = (uint)HttpKnownHeaderNames.Upgrade.Length,
                        Value       = WebSocketHelpers.WebSocketUpgradeToken,
                        ValueLength = (uint)WebSocketHelpers.WebSocketUpgradeToken.Length
                    },
                    new HttpHeader()
                    {
                        Name        = HttpKnownHeaderNames.Host,
                        NameLength  = (uint)HttpKnownHeaderNames.Host.Length,
                        Value       = string.Empty,
                        ValueLength = 0
                    },
                    new HttpHeader()
                    {
                        Name        = HttpKnownHeaderNames.SecWebSocketVersion,
                        NameLength  = (uint)HttpKnownHeaderNames.SecWebSocketVersion.Length,
                        Value       = s_SupportedVersion,
                        ValueLength = (uint)s_SupportedVersion.Length
                    },
                    new HttpHeader()
                    {
                        Name        = HttpKnownHeaderNames.SecWebSocketKey,
                        NameLength  = (uint)HttpKnownHeaderNames.SecWebSocketKey.Length,
                        Value       = s_DummyWebsocketKeyBase64,
                        ValueLength = (uint)s_DummyWebsocketKeyBase64.Length
                    }
                };
            }
        }
 static PeerToPeerOSHelper()
 {
     if (IsSupportedOS())
     {
         // if OS is supported, but p2p.dll is not available, P2P is not supported (original behavior)
         string dllFileName = Path.Combine(Environment.SystemDirectory, UnsafeP2PNativeMethods.P2P);
         s_P2PLibrary = SafeLoadLibrary.LoadLibraryEx(dllFileName);
         if (!s_P2PLibrary.IsInvalid)
         {
             IntPtr Address = UnsafeSystemNativeMethods.GetProcAddress(s_P2PLibrary, "PeerCreatePeerName");
             if (Address != IntPtr.Zero)
             {
                 s_supportsP2P = true;
             }
         }
     }
     //else --> the SafeLoadLibrary would have already been marked
     //          closed by the LoadLibraryEx call above.
 }