Пример #1
0
        private unsafe void SetValue(object managedValue, AdsType adsType)
        {
            adsvalue        = new AdsValue();
            adsvalue.dwType = (int)adsType;
            switch (adsType)
            {
            case AdsType.ADSTYPE_INTEGER:
                adsvalue.generic.a = (int)managedValue;
                adsvalue.generic.b = 0;
                break;

            case AdsType.ADSTYPE_LARGE_INTEGER:
                LowInt64 = (long)managedValue;
                break;

            case AdsType.ADSTYPE_BOOLEAN:
                if ((bool)managedValue)
                {
                    LowInt64 = -1;
                }
                else
                {
                    LowInt64 = 0;
                }
                break;

            case AdsType.ADSTYPE_CASE_IGNORE_STRING:
                _pinnedHandle          = GCHandle.Alloc(managedValue, GCHandleType.Pinned);
                adsvalue.pointer.value = _pinnedHandle.AddrOfPinnedObject();
                break;

            case AdsType.ADSTYPE_PROV_SPECIFIC:
                byte[] bytes = (byte[])managedValue;
                // filling in an ADS_PROV_SPECIFIC struct.
                // 1st dword (our member a) is DWORD dwLength.
                // 2nd dword (our member b) is byte *lpValue.
                adsvalue.octetString.length = bytes.Length;
                _pinnedHandle = GCHandle.Alloc(bytes, GCHandleType.Pinned);
                adsvalue.octetString.value = _pinnedHandle.AddrOfPinnedObject();
                break;

            default:
                throw new NotImplementedException(String.Format(CultureInfo.CurrentCulture, SR.DSAdsvalueTypeNYI, "0x" + Convert.ToString((int)adsType, 16)));
            }
        }
        private void SetValue(object managedValue, AdsType adsType)
        {
            this.adsvalue        = new AdsValue();
            this.adsvalue.dwType = (int)adsType;
            switch (adsType)
            {
            case AdsType.ADSTYPE_CASE_IGNORE_STRING:
                this.pinnedHandle           = GCHandle.Alloc(managedValue, GCHandleType.Pinned);
                this.adsvalue.pointer.value = this.pinnedHandle.AddrOfPinnedObject();
                return;

            case AdsType.ADSTYPE_BOOLEAN:
                if (!((bool)managedValue))
                {
                    this.LowInt64 = 0L;
                    return;
                }
                this.LowInt64 = -1L;
                return;

            case AdsType.ADSTYPE_INTEGER:
                this.adsvalue.generic.a = (int)managedValue;
                this.adsvalue.generic.b = 0;
                return;

            case AdsType.ADSTYPE_LARGE_INTEGER:
                this.LowInt64 = (long)managedValue;
                return;

            case AdsType.ADSTYPE_PROV_SPECIFIC:
            {
                byte[] buffer = (byte[])managedValue;
                this.adsvalue.octetString.length = buffer.Length;
                this.pinnedHandle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
                this.adsvalue.octetString.value = this.pinnedHandle.AddrOfPinnedObject();
                return;
            }
            }
            throw new NotImplementedException(Res.GetString("DSAdsvalueTypeNYI", new object[] { "0x" + Convert.ToString((int)adsType, 0x10) }));
        }
Пример #3
0
 public AdsValueHelper(AdsValue adsvalue)
 {
     this.adsvalue = adsvalue;
 }
Пример #4
0
 public AdsValueHelper(AdsValue adsvalue)
 {
     this.adsvalue = adsvalue;
 }
Пример #5
0
 private unsafe void SetValue(object managedValue, AdsType adsType)
 {
     adsvalue = new AdsValue();
     adsvalue.dwType = (int)adsType;
     switch (adsType)
     {
         case AdsType.ADSTYPE_INTEGER:
             adsvalue.generic.a = (int)managedValue;
             adsvalue.generic.b = 0;
             break;
         case AdsType.ADSTYPE_LARGE_INTEGER:
             LowInt64 = (long)managedValue;
             break;
         case AdsType.ADSTYPE_BOOLEAN:
             if ((bool)managedValue)
                 LowInt64 = -1;
             else
                 LowInt64 = 0;
             break;
         case AdsType.ADSTYPE_CASE_IGNORE_STRING:
             _pinnedHandle = GCHandle.Alloc(managedValue, GCHandleType.Pinned);
             adsvalue.pointer.value = _pinnedHandle.AddrOfPinnedObject();
             break;
         case AdsType.ADSTYPE_PROV_SPECIFIC:
             byte[] bytes = (byte[])managedValue;
             // filling in an ADS_PROV_SPECIFIC struct.
             // 1st dword (our member a) is DWORD dwLength.
             // 2nd dword (our member b) is byte *lpValue.
             adsvalue.octetString.length = bytes.Length;
             _pinnedHandle = GCHandle.Alloc(bytes, GCHandleType.Pinned);
             adsvalue.octetString.value = _pinnedHandle.AddrOfPinnedObject();
             break;
         default:
             throw new NotImplementedException(Res.GetString(Res.DSAdsvalueTypeNYI, "0x" + Convert.ToString((int)adsType, 16)));
     }
 }
        private void SetValue(object managedValue, AdsType adsType)
        {
            this.adsvalue = new AdsValue();
            this.adsvalue.dwType = (int) adsType;
            switch (adsType)
            {
                case AdsType.ADSTYPE_CASE_IGNORE_STRING:
                    this.pinnedHandle = GCHandle.Alloc(managedValue, GCHandleType.Pinned);
                    this.adsvalue.pointer.value = this.pinnedHandle.AddrOfPinnedObject();
                    return;

                case AdsType.ADSTYPE_BOOLEAN:
                    if (!((bool) managedValue))
                    {
                        this.LowInt64 = 0L;
                        return;
                    }
                    this.LowInt64 = -1L;
                    return;

                case AdsType.ADSTYPE_INTEGER:
                    this.adsvalue.generic.a = (int) managedValue;
                    this.adsvalue.generic.b = 0;
                    return;

                case AdsType.ADSTYPE_LARGE_INTEGER:
                    this.LowInt64 = (long) managedValue;
                    return;

                case AdsType.ADSTYPE_PROV_SPECIFIC:
                {
                    byte[] buffer = (byte[]) managedValue;
                    this.adsvalue.octetString.length = buffer.Length;
                    this.pinnedHandle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
                    this.adsvalue.octetString.value = this.pinnedHandle.AddrOfPinnedObject();
                    return;
                }
            }
            throw new NotImplementedException(Res.GetString("DSAdsvalueTypeNYI", new object[] { "0x" + Convert.ToString((int) adsType, 0x10) }));
        }