コード例 #1
0
ファイル: BerConverter.cs プロジェクト: vossjannik/ldap4net
        private static int EncodingMultiByteArrayHelper(BerSafeHandle berElement, byte[][] value, char fmt)
        {
            var stringArray = IntPtr.Zero;
            int rc;

            try
            {
                if (value != null)
                {
                    var intPtrArray = value.Select(_ =>
                    {
                        var byteArray = _ ?? new byte[0];
                        var valPtr    = Marshal.AllocHGlobal(byteArray.Length + 1);
                        Marshal.Copy(byteArray, 0, valPtr, byteArray.Length);
                        Marshal.WriteByte(valPtr, byteArray.Length, 0);
                        return(valPtr);
                    }).Concat(new[] { IntPtr.Zero }).ToArray();

                    stringArray = MarshalUtils.WriteIntPtrArray(intPtrArray);
                }

                rc = LdapNative.Instance.ber_printf_berarray(berElement, new string(fmt, 1), stringArray);
            }
            finally
            {
                MarshalUtils.FreeIntPtrArray(stringArray);
            }

            return(rc);
        }
コード例 #2
0
ファイル: RequestHandler.cs プロジェクト: vossjannik/ldap4net
        private static void FreeControls(IntPtr controlArray)
        {
            foreach (var ptr in MarshalUtils.GetPointerArray(controlArray))
            {
                var ctrl = Marshal.PtrToStructure <Native.Native.LdapControl>(ptr);
                FreeManagedControl(ctrl);
            }

            MarshalUtils.FreeIntPtrArray(controlArray);
        }