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]))); } } } }
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]))); } } } }