Exemple #1
0
        static string[] GetBindStringList(NativeMethods.IInternetBindInfo bind, NativeMethods.BINDSTRING kind, int count)
        {
            IntPtr pArray = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(IntPtr)) * count);

            try
            {
                int resultCount = count;

                bind.GetBindString(
                    NativeMethods.BINDSTRING.BINDSTRING_USERAGENT,
                    pArray,
                    count,
                    ref resultCount);

                string[] result = new string[resultCount];
                for (int i = 0; i < resultCount; i++)
                {
                    result[i] = Marshal.PtrToStringUni(
                        Marshal.ReadIntPtr(new IntPtr(pArray.ToInt64() + i)));
                }

                return(result);
            }
            finally
            {
                Marshal.FreeCoTaskMem(pArray);
            }
        }
Exemple #2
0
        internal PluggableProtocolRequest(
            PluggableProtocolHandler handler,
            string url,
            NativeMethods.IInternetBindInfo bind,
            NativeMethods.PI_FLAGS startFlags)
        {
            m_Url = new Uri(url);

            int bindf;

            NativeMethods.BINDINFO bindinfo = new NativeMethods.BINDINFO();

            bindinfo.cbSize = Marshal.SizeOf(typeof(NativeMethods.STGMEDIUM));
            bindinfo.cbSize = Marshal.SizeOf(typeof(NativeMethods.BINDINFO));

//            string userAgent=GetBindString(
//                bind,
//                NativeMethods.BINDSTRING.BINDSTRING_USERAGENT );
//
//            System.Diagnostics.Trace.WriteLine(
//                "useragent: "+GetBindString(bind,NativeMethods.BINDSTRING.BINDSTRING_USERAGENT)+"\r\n"+
//                "url: "+GetBindString(bind,NativeMethods.BINDSTRING.BINDSTRING_URL)+"\r\n"+
//                "post cookie: "+GetBindString(bind,NativeMethods.BINDSTRING.BINDSTRING_POST_COOKIE)+"\r\n"+
//                "post MIME: "+GetBindString(bind,NativeMethods.BINDSTRING.BINDSTRING_POST_DATA_MIME) );



            bind.GetBindInfo(out bindf, ref bindinfo);

            switch (bindinfo.dwBindVerb)
            {
            case NativeMethods.BINDVERB.BINDVERB_GET:     // GET

                m_Verb     = "GET";
                m_VerbData = null;
                break;

            case NativeMethods.BINDVERB.BINDVERB_POST:

                m_Verb     = "POST";
                m_VerbData = ExtractVerbData(bindinfo);

                break;

            case NativeMethods.BINDVERB.BINDVERB_PUT:

                m_Verb     = "PUT";
                m_VerbData = ExtractVerbData(bindinfo);

                break;

            case NativeMethods.BINDVERB.BINDVERB_CUSTOM:

                m_Verb     = Marshal.PtrToStringUni(bindinfo.szCustomVerb);
                m_VerbData = ExtractVerbData(bindinfo);

                break;
            }
        }
Exemple #3
0
 static string GetBindString(NativeMethods.IInternetBindInfo bind, NativeMethods.BINDSTRING kind)
 {
     string[] result = GetBindStringList(bind, kind, 1);
     if (result.Length == 0)
     {
         return(null);
     }
     else
     {
         return(result[0]);
     }
 }
        void Start(
            string szUrl,
            NativeMethods.IInternetProtocolSink pOIProtSink,
            NativeMethods.IInternetBindInfo pOIBindInfo,
            NativeMethods.PI_FLAGS grfPI,
            int dwReserved)
        {
            lock ( sync )
            {
                m_Request = new PluggableProtocolRequest(this, szUrl, pOIBindInfo, grfPI);

                m_Response = new PluggableProtocolResponse(this, pOIProtSink);

                m_Started = true;
            }
            ErrorHandledOnStart(EventArgs.Empty);
        }
        void NativeMethods.IInternetProtocol.Start(
            string szUrl,
            NativeMethods.IInternetProtocolSink pOIProtSink,
            NativeMethods.IInternetBindInfo pOIBindInfo,
            NativeMethods.PI_FLAGS grfPI,
            int dwReserved)
        {
#if TRACE_INTERFACE_CALLS
            try
            {
#endif
            Start(szUrl, pOIProtSink, pOIBindInfo, grfPI, dwReserved);
#if TRACE_INTERFACE_CALLS
        }
        catch (Exception err)
        {
            throw err;
        }
#endif
        }
        void NativeMethods.IInternetProtocolRoot.Start(
            string szUrl,
            NativeMethods.IInternetProtocolSink pOIProtSink,
            NativeMethods.IInternetBindInfo pOIBindInfo,
            NativeMethods.PI_FLAGS grfPI,
            int dwReserved)
        {
#if TRACE_INTERFACE_CALLS
            TraceHelper.TraceMethod(this, szUrl, pOIProtSink, pOIBindInfo, grfPI, dwReserved);
            try
            {
#endif
            Start(szUrl, pOIProtSink, pOIBindInfo, grfPI, dwReserved);
#if TRACE_INTERFACE_CALLS
        }

        catch (Exception err)
        {
            TraceHelper.TraceException(this, err);
            throw err;
        }
#endif
        }
Exemple #7
0
 static string[] GetBindStringList(NativeMethods.IInternetBindInfo bind, NativeMethods.BINDSTRING kind)
 {
     return(GetBindStringList(bind, kind, 500));
 }