Exemple #1
0
 private string GetUnicodeServerVariable(string name)
 {
     using (ServerVarCharBuffer buffer = new ServerVarCharBuffer())
     {
         return(this.GetUnicodeServerVariable(name, buffer));
     }
 }
Exemple #2
0
 private void GetBasicServerVariables()
 {
     if ((base._ecb != IntPtr.Zero) && (base._basicServerVars == null))
     {
         base._basicServerVars = new string[12];
         using (ServerVarCharBuffer buffer = new ServerVarCharBuffer())
         {
             int[] serverVarLengths = new int[12];
             int   requiredSize     = 0;
             int   hresult          = UnsafeNativeMethods.EcbGetUnicodeServerVariables(base._ecb, buffer.PinnedAddress, buffer.Length, serverVarLengths, serverVarLengths.Length, 0, ref requiredSize);
             if (requiredSize > buffer.Length)
             {
                 buffer.Resize(requiredSize);
                 hresult = UnsafeNativeMethods.EcbGetUnicodeServerVariables(base._ecb, buffer.PinnedAddress, buffer.Length, serverVarLengths, serverVarLengths.Length, 0, ref requiredSize);
             }
             Misc.ThrowIfFailedHr(hresult);
             IntPtr pinnedAddress = buffer.PinnedAddress;
             for (int i = 0; i < base._basicServerVars.Length; i++)
             {
                 base._basicServerVars[i] = Marshal.PtrToStringUni(pinnedAddress, serverVarLengths[i]);
                 pinnedAddress            = new IntPtr(((long)pinnedAddress) + (2L * (1L + serverVarLengths[i])));
             }
             base._appPathTranslated = base._basicServerVars[2];
             base._method            = base._basicServerVars[3];
             base._path           = base._basicServerVars[4];
             base._pathTranslated = base._basicServerVars[5];
             base._filePath       = base._basicServerVars[6];
         }
     }
 }
Exemple #3
0
 protected override void GetAdditionalServerVariables()
 {
     if ((base._ecb != IntPtr.Zero) && (base._additionalServerVars == null))
     {
         base._additionalServerVars = new string[0x17];
         using (ServerVarCharBuffer buffer = new ServerVarCharBuffer())
         {
             int[] serverVarLengths = new int[0x17];
             int   requiredSize     = 0;
             int   errorCode        = UnsafeNativeMethods.EcbGetUnicodeServerVariables(base._ecb, buffer.PinnedAddress, buffer.Length, serverVarLengths, serverVarLengths.Length, 12, ref requiredSize);
             if (requiredSize > buffer.Length)
             {
                 buffer.Resize(requiredSize);
                 errorCode = UnsafeNativeMethods.EcbGetUnicodeServerVariables(base._ecb, buffer.PinnedAddress, buffer.Length, serverVarLengths, serverVarLengths.Length, 12, ref requiredSize);
             }
             if (errorCode != 0)
             {
                 Marshal.ThrowExceptionForHR(errorCode);
             }
             IntPtr pinnedAddress = buffer.PinnedAddress;
             for (int i = 0; i < base._additionalServerVars.Length; i++)
             {
                 base._additionalServerVars[i] = Marshal.PtrToStringUni(pinnedAddress, serverVarLengths[i]);
                 pinnedAddress = new IntPtr(((long)pinnedAddress) + (2L * (1L + serverVarLengths[i])));
             }
         }
     }
 }
Exemple #4
0
 private string GetUnicodeServerVariable(string name, ServerVarCharBuffer buffer)
 {
     if (base._ecb != IntPtr.Zero)
     {
         int len = UnsafeNativeMethods.EcbGetUnicodeServerVariable(base._ecb, name, buffer.PinnedAddress, buffer.Length);
         if (len < 0)
         {
             buffer.Resize(-len);
             len = UnsafeNativeMethods.EcbGetUnicodeServerVariable(base._ecb, name, buffer.PinnedAddress, buffer.Length);
         }
         if (len > 0)
         {
             return(Marshal.PtrToStringUni(buffer.PinnedAddress, len));
         }
     }
     return(null);
 }
    private String GetUnicodeServerVariable(int nameIndex, ServerVarCharBuffer buffer) {
        if (_ecb == IntPtr.Zero)
            return null;
        int r = UnsafeNativeMethods.EcbGetUnicodeServerVariableByIndex(_ecb, nameIndex, buffer.PinnedAddress, buffer.Length);

        if (r < 0) {
            buffer.Resize(-r);
            r = UnsafeNativeMethods.EcbGetUnicodeServerVariableByIndex(_ecb, nameIndex, buffer.PinnedAddress, buffer.Length);
        }

        if (r > 0)
            return Marshal.PtrToStringUni(buffer.PinnedAddress, r);
        else
            return null;
    }
    private String GetUnicodeServerVariable(int nameIndex) {
        String value = null;
        ServerVarCharBuffer buf = new ServerVarCharBuffer();

        try {
            value = GetUnicodeServerVariable(nameIndex, buf);
        }
        finally {
            buf.Dispose();
        }

        return value;
    }
    // ISAPIWorkerRequestInProcForIIS6
    protected override void GetAdditionalServerVariables() {
        if (_ecb == IntPtr.Zero)
            return;

        // _additionalServerVars should only be initialized once
        Debug.Assert(_additionalServerVars == null);
        if (_additionalServerVars != null)
            return;

        _additionalServerVars = new string[NUM_ADDITIONAL_SERVER_VARIABLES];

        ServerVarCharBuffer buffer = new ServerVarCharBuffer();

        try {
            int[] serverVarLengths = new int[NUM_ADDITIONAL_SERVER_VARIABLES];
            int r = 0;
            int hresult = UnsafeNativeMethods.EcbGetUnicodeServerVariables(_ecb, buffer.PinnedAddress, buffer.Length,
                                                                      serverVarLengths, serverVarLengths.Length, NUM_BASIC_SERVER_VARIABLES, ref r);
            if (r > buffer.Length) {
                buffer.Resize(r);
                hresult = UnsafeNativeMethods.EcbGetUnicodeServerVariables(_ecb, buffer.PinnedAddress, buffer.Length,
                                                                     serverVarLengths, serverVarLengths.Length, NUM_BASIC_SERVER_VARIABLES, ref r);
            }
            if (hresult != 0)
                Marshal.ThrowExceptionForHR(hresult);
            IntPtr current = buffer.PinnedAddress;

            for(int i = 0; i < _additionalServerVars.Length; i++) {
                _additionalServerVars[i] = Marshal.PtrToStringUni(current, serverVarLengths[i]);
                current = new IntPtr((long)current + 2L * (1L + serverVarLengths[i]));
            }
        }
        finally {
            buffer.Dispose();
        }
    }
    private void GetBasicServerVariables() {

        if (_ecb == IntPtr.Zero)
            return;
        // _basicServerVars should only be initialized once
        Debug.Assert(_basicServerVars == null);
        if (_basicServerVars != null)
            return;

        _basicServerVars = new string[NUM_BASIC_SERVER_VARIABLES];

        ServerVarCharBuffer buffer = new ServerVarCharBuffer();

        try {
            int[] serverVarLengths = new int[NUM_BASIC_SERVER_VARIABLES];
            int r = 0;
            int hresult = UnsafeNativeMethods.EcbGetUnicodeServerVariables(_ecb, buffer.PinnedAddress, buffer.Length,
                                                                     serverVarLengths, serverVarLengths.Length, 0, ref r);
            if (r > buffer.Length)
            {
                buffer.Resize(r);
                hresult = UnsafeNativeMethods.EcbGetUnicodeServerVariables(_ecb, buffer.PinnedAddress, buffer.Length,
                                                                     serverVarLengths, serverVarLengths.Length, 0, ref r);
            }

            Misc.ThrowIfFailedHr(hresult);

            IntPtr current = buffer.PinnedAddress;

            for(int i = 0; i < _basicServerVars.Length; i++) {
                _basicServerVars[i] = Marshal.PtrToStringUni(current, serverVarLengths[i]);
                current = new IntPtr((long)current + 2L * (1L + serverVarLengths[i]));
            }
            // special case variables
            _appPathTranslated = _basicServerVars[APPL_PHYSICAL_PATH];
            _method = _basicServerVars[REQUEST_METHOD];
            _path = _basicServerVars[PATH_INFO];
            _pathTranslated = _basicServerVars[PATH_TRANSLATED];
            _filePath = _basicServerVars[URL];
        }
        finally {
            buffer.Dispose();
        }
    }
 private string GetUnicodeServerVariable(string name, ServerVarCharBuffer buffer)
 {
     if (base._ecb != IntPtr.Zero)
     {
         int len = UnsafeNativeMethods.EcbGetUnicodeServerVariable(base._ecb, name, buffer.PinnedAddress, buffer.Length);
         if (len < 0)
         {
             buffer.Resize(-len);
             len = UnsafeNativeMethods.EcbGetUnicodeServerVariable(base._ecb, name, buffer.PinnedAddress, buffer.Length);
         }
         if (len > 0)
         {
             return Marshal.PtrToStringUni(buffer.PinnedAddress, len);
         }
     }
     return null;
 }
 private string GetUnicodeServerVariable(string name)
 {
     using (ServerVarCharBuffer buffer = new ServerVarCharBuffer())
     {
         return this.GetUnicodeServerVariable(name, buffer);
     }
 }
 private void GetBasicServerVariables()
 {
     if ((base._ecb != IntPtr.Zero) && (base._basicServerVars == null))
     {
         base._basicServerVars = new string[12];
         using (ServerVarCharBuffer buffer = new ServerVarCharBuffer())
         {
             int[] serverVarLengths = new int[12];
             int requiredSize = 0;
             int hresult = UnsafeNativeMethods.EcbGetUnicodeServerVariables(base._ecb, buffer.PinnedAddress, buffer.Length, serverVarLengths, serverVarLengths.Length, 0, ref requiredSize);
             if (requiredSize > buffer.Length)
             {
                 buffer.Resize(requiredSize);
                 hresult = UnsafeNativeMethods.EcbGetUnicodeServerVariables(base._ecb, buffer.PinnedAddress, buffer.Length, serverVarLengths, serverVarLengths.Length, 0, ref requiredSize);
             }
             Misc.ThrowIfFailedHr(hresult);
             IntPtr pinnedAddress = buffer.PinnedAddress;
             for (int i = 0; i < base._basicServerVars.Length; i++)
             {
                 base._basicServerVars[i] = Marshal.PtrToStringUni(pinnedAddress, serverVarLengths[i]);
                 pinnedAddress = new IntPtr(((long) pinnedAddress) + (2L * (1L + serverVarLengths[i])));
             }
             base._appPathTranslated = base._basicServerVars[2];
             base._method = base._basicServerVars[3];
             base._path = base._basicServerVars[4];
             base._pathTranslated = base._basicServerVars[5];
             base._filePath = base._basicServerVars[6];
         }
     }
 }
 protected override void GetAdditionalServerVariables()
 {
     if ((base._ecb != IntPtr.Zero) && (base._additionalServerVars == null))
     {
         base._additionalServerVars = new string[0x17];
         using (ServerVarCharBuffer buffer = new ServerVarCharBuffer())
         {
             int[] serverVarLengths = new int[0x17];
             int requiredSize = 0;
             int errorCode = UnsafeNativeMethods.EcbGetUnicodeServerVariables(base._ecb, buffer.PinnedAddress, buffer.Length, serverVarLengths, serverVarLengths.Length, 12, ref requiredSize);
             if (requiredSize > buffer.Length)
             {
                 buffer.Resize(requiredSize);
                 errorCode = UnsafeNativeMethods.EcbGetUnicodeServerVariables(base._ecb, buffer.PinnedAddress, buffer.Length, serverVarLengths, serverVarLengths.Length, 12, ref requiredSize);
             }
             if (errorCode != 0)
             {
                 Marshal.ThrowExceptionForHR(errorCode);
             }
             IntPtr pinnedAddress = buffer.PinnedAddress;
             for (int i = 0; i < base._additionalServerVars.Length; i++)
             {
                 base._additionalServerVars[i] = Marshal.PtrToStringUni(pinnedAddress, serverVarLengths[i]);
                 pinnedAddress = new IntPtr(((long) pinnedAddress) + (2L * (1L + serverVarLengths[i])));
             }
         }
     }
 }