private static int EncodingMultiByteArrayHelper(BerSafeHandle berElement, byte[][] tempValue, char fmt) { IntPtr intPtr; IntPtr intPtr1 = (IntPtr)0; SafeBerval[] safeBerval = null; int num = 0; try { if (tempValue != null) { int i = 0; intPtr1 = Utility.AllocHGlobalIntPtrArray((int)tempValue.Length + 1); int num1 = Marshal.SizeOf(typeof(SafeBerval)); safeBerval = new SafeBerval[(int)tempValue.Length]; for (i = 0; i < (int)tempValue.Length; i++) { byte[] numArray = tempValue[i]; safeBerval[i] = new SafeBerval(); if (numArray != null) { safeBerval[i].bv_len = (int)numArray.Length; safeBerval[i].bv_val = Marshal.AllocHGlobal((int)numArray.Length); Marshal.Copy(numArray, 0, safeBerval[i].bv_val, (int)numArray.Length); } else { safeBerval[i].bv_len = 0; safeBerval[i].bv_val = (IntPtr)0; } IntPtr intPtr2 = Marshal.AllocHGlobal(num1); Marshal.StructureToPtr(safeBerval[i], intPtr2, false); intPtr = (IntPtr)((long)intPtr1 + (long)(Marshal.SizeOf(typeof(IntPtr)) * i)); Marshal.WriteIntPtr(intPtr, intPtr2); } intPtr = (IntPtr)((long)intPtr1 + (long)(Marshal.SizeOf(typeof(IntPtr)) * i)); Marshal.WriteIntPtr(intPtr, (IntPtr)0); } num = Wldap32.ber_printf_berarray(berElement, new string(fmt, 1), intPtr1); GC.KeepAlive(safeBerval); } finally { if (intPtr1 != (IntPtr)0) { for (int j = 0; j < (int)tempValue.Length; j++) { IntPtr intPtr3 = Marshal.ReadIntPtr(intPtr1, Marshal.SizeOf(typeof(IntPtr)) * j); if (intPtr3 != (IntPtr)0) { Marshal.FreeHGlobal(intPtr3); } } Marshal.FreeHGlobal(intPtr1); } } return(num); }
private static int EncodingMultiByteArrayHelper(BerSafeHandle berElement, byte[][] tempValue, char fmt) { IntPtr zero = IntPtr.Zero; IntPtr ptr = IntPtr.Zero; SafeBerval[] bervalArray = null; int num = 0; try { if (tempValue != null) { int index = 0; zero = Marshal.AllocHGlobal((int) (Marshal.SizeOf(typeof(IntPtr)) * (tempValue.Length + 1))); int cb = Marshal.SizeOf(typeof(SafeBerval)); bervalArray = new SafeBerval[tempValue.Length]; index = 0; while (index < tempValue.Length) { byte[] source = tempValue[index]; bervalArray[index] = new SafeBerval(); if (source == null) { bervalArray[index].bv_len = 0; bervalArray[index].bv_val = IntPtr.Zero; } else { bervalArray[index].bv_len = source.Length; bervalArray[index].bv_val = Marshal.AllocHGlobal(source.Length); Marshal.Copy(source, 0, bervalArray[index].bv_val, source.Length); } IntPtr ptr3 = Marshal.AllocHGlobal(cb); Marshal.StructureToPtr(bervalArray[index], ptr3, false); ptr = (IntPtr) (((long) zero) + (Marshal.SizeOf(typeof(IntPtr)) * index)); Marshal.WriteIntPtr(ptr, ptr3); index++; } ptr = (IntPtr) (((long) zero) + (Marshal.SizeOf(typeof(IntPtr)) * index)); Marshal.WriteIntPtr(ptr, IntPtr.Zero); } num = Wldap32.ber_printf_berarray(berElement, new string(fmt, 1), zero); GC.KeepAlive(bervalArray); } finally { if (zero != IntPtr.Zero) { for (int i = 0; i < tempValue.Length; i++) { IntPtr hglobal = Marshal.ReadIntPtr(zero, Marshal.SizeOf(typeof(IntPtr)) * i); if (hglobal != IntPtr.Zero) { Marshal.FreeHGlobal(hglobal); } } Marshal.FreeHGlobal(zero); } } return num; }
private static int EncodingMultiByteArrayHelper(BerSafeHandle berElement, byte[][] tempValue, char fmt) { IntPtr berValArray = IntPtr.Zero; IntPtr tempPtr = IntPtr.Zero; SafeBerval[] managedBerVal = null; int error = 0; try { if (tempValue != null) { int i = 0; berValArray = Utility.AllocHGlobalIntPtrArray(tempValue.Length + 1); int structSize = Marshal.SizeOf(typeof(SafeBerval)); managedBerVal = new SafeBerval[tempValue.Length]; for (i = 0; i < tempValue.Length; i++) { byte[] byteArray = tempValue[i]; // construct the managed berval managedBerVal[i] = new SafeBerval(); if (byteArray == null) { managedBerVal[i].bv_len = 0; managedBerVal[i].bv_val = IntPtr.Zero; } else { managedBerVal[i].bv_len = byteArray.Length; managedBerVal[i].bv_val = Marshal.AllocHGlobal(byteArray.Length); Marshal.Copy(byteArray, 0, managedBerVal[i].bv_val, byteArray.Length); } // allocate memory for the unmanaged structure IntPtr valPtr = Marshal.AllocHGlobal(structSize); Marshal.StructureToPtr(managedBerVal[i], valPtr, false); tempPtr = (IntPtr)((long)berValArray + IntPtr.Size * i); Marshal.WriteIntPtr(tempPtr, valPtr); } tempPtr = (IntPtr)((long)berValArray + IntPtr.Size * i); Marshal.WriteIntPtr(tempPtr, IntPtr.Zero); } error = Wldap32.ber_printf_berarray(berElement, new string(fmt, 1), berValArray); GC.KeepAlive(managedBerVal); } finally { if (berValArray != IntPtr.Zero) { for (int i = 0; i < tempValue.Length; i++) { IntPtr ptr = Marshal.ReadIntPtr(berValArray, IntPtr.Size * i); if (ptr != IntPtr.Zero) { Marshal.FreeHGlobal(ptr); } } Marshal.FreeHGlobal(berValArray); } } return(error); }
private static int EncodingMultiByteArrayHelper(BerSafeHandle berElement, byte[][] tempValue, char fmt) { IntPtr intPtr; IntPtr intPtr1 = (IntPtr)0; SafeBerval[] safeBerval = null; int num = 0; try { if (tempValue != null) { int i = 0; intPtr1 = Utility.AllocHGlobalIntPtrArray((int)tempValue.Length + 1); int num1 = Marshal.SizeOf(typeof(SafeBerval)); safeBerval = new SafeBerval[(int)tempValue.Length]; for (i = 0; i < (int)tempValue.Length; i++) { byte[] numArray = tempValue[i]; safeBerval[i] = new SafeBerval(); if (numArray != null) { safeBerval[i].bv_len = (int)numArray.Length; safeBerval[i].bv_val = Marshal.AllocHGlobal((int)numArray.Length); Marshal.Copy(numArray, 0, safeBerval[i].bv_val, (int)numArray.Length); } else { safeBerval[i].bv_len = 0; safeBerval[i].bv_val = (IntPtr)0; } IntPtr intPtr2 = Marshal.AllocHGlobal(num1); Marshal.StructureToPtr(safeBerval[i], intPtr2, false); intPtr = (IntPtr)((long)intPtr1 + (long)(Marshal.SizeOf(typeof(IntPtr)) * i)); Marshal.WriteIntPtr(intPtr, intPtr2); } intPtr = (IntPtr)((long)intPtr1 + (long)(Marshal.SizeOf(typeof(IntPtr)) * i)); Marshal.WriteIntPtr(intPtr, (IntPtr)0); } num = Wldap32.ber_printf_berarray(berElement, new string(fmt, 1), intPtr1); GC.KeepAlive(safeBerval); } finally { if (intPtr1 != (IntPtr)0) { for (int j = 0; j < (int)tempValue.Length; j++) { IntPtr intPtr3 = Marshal.ReadIntPtr(intPtr1, Marshal.SizeOf(typeof(IntPtr)) * j); if (intPtr3 != (IntPtr)0) { Marshal.FreeHGlobal(intPtr3); } } Marshal.FreeHGlobal(intPtr1); } } return num; }
private static int EncodingMultiByteArrayHelper(BerSafeHandle berElement, byte[][] tempValue, char fmt) { IntPtr berValArray = (IntPtr)0; IntPtr tempPtr = (IntPtr)0; SafeBerval[] managedBerVal = null; int error = 0; try { if (tempValue != null) { int i = 0; berValArray = Utility.AllocHGlobalIntPtrArray(tempValue.Length + 1); int structSize = Marshal.SizeOf(typeof(SafeBerval)); managedBerVal = new SafeBerval[tempValue.Length]; for (i = 0; i < tempValue.Length; i++) { byte[] byteArray = tempValue[i]; // construct the managed berval managedBerVal[i] = new SafeBerval(); if (byteArray == null) { managedBerVal[i].bv_len = 0; managedBerVal[i].bv_val = (IntPtr)0; } else { managedBerVal[i].bv_len = byteArray.Length; managedBerVal[i].bv_val = Marshal.AllocHGlobal(byteArray.Length); Marshal.Copy(byteArray, 0, managedBerVal[i].bv_val, byteArray.Length); } // allocate memory for the unmanaged structure IntPtr valPtr = Marshal.AllocHGlobal(structSize); Marshal.StructureToPtr(managedBerVal[i], valPtr, false); tempPtr = (IntPtr)((long)berValArray + Marshal.SizeOf(typeof(IntPtr)) * i); Marshal.WriteIntPtr(tempPtr, valPtr); } tempPtr = (IntPtr)((long)berValArray + Marshal.SizeOf(typeof(IntPtr)) * i); Marshal.WriteIntPtr(tempPtr, (IntPtr)0); } error = Wldap32.ber_printf_berarray(berElement, new string(fmt, 1), berValArray); GC.KeepAlive(managedBerVal); } finally { if (berValArray != (IntPtr)0) { for (int i = 0; i < tempValue.Length; i++) { IntPtr ptr = Marshal.ReadIntPtr(berValArray, Marshal.SizeOf(typeof(IntPtr)) * i); if (ptr != (IntPtr)0) Marshal.FreeHGlobal(ptr); } Marshal.FreeHGlobal(berValArray); } } return error; }
private static int EncodingMultiByteArrayHelper(BerSafeHandle berElement, byte[][] tempValue, char fmt) { IntPtr zero = IntPtr.Zero; IntPtr ptr = IntPtr.Zero; SafeBerval[] bervalArray = null; int num = 0; try { if (tempValue != null) { int index = 0; zero = Marshal.AllocHGlobal((int)(Marshal.SizeOf(typeof(IntPtr)) * (tempValue.Length + 1))); int cb = Marshal.SizeOf(typeof(SafeBerval)); bervalArray = new SafeBerval[tempValue.Length]; index = 0; while (index < tempValue.Length) { byte[] source = tempValue[index]; bervalArray[index] = new SafeBerval(); if (source == null) { bervalArray[index].bv_len = 0; bervalArray[index].bv_val = IntPtr.Zero; } else { bervalArray[index].bv_len = source.Length; bervalArray[index].bv_val = Marshal.AllocHGlobal(source.Length); Marshal.Copy(source, 0, bervalArray[index].bv_val, source.Length); } IntPtr ptr3 = Marshal.AllocHGlobal(cb); Marshal.StructureToPtr(bervalArray[index], ptr3, false); ptr = (IntPtr)(((long)zero) + (Marshal.SizeOf(typeof(IntPtr)) * index)); Marshal.WriteIntPtr(ptr, ptr3); index++; } ptr = (IntPtr)(((long)zero) + (Marshal.SizeOf(typeof(IntPtr)) * index)); Marshal.WriteIntPtr(ptr, IntPtr.Zero); } num = Wldap32.ber_printf_berarray(berElement, new string(fmt, 1), zero); GC.KeepAlive(bervalArray); } finally { if (zero != IntPtr.Zero) { for (int i = 0; i < tempValue.Length; i++) { IntPtr hglobal = Marshal.ReadIntPtr(zero, Marshal.SizeOf(typeof(IntPtr)) * i); if (hglobal != IntPtr.Zero) { Marshal.FreeHGlobal(hglobal); } } Marshal.FreeHGlobal(zero); } } return(num); }