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) })); }
public AdsValueHelper(AdsValue adsvalue) { this.adsvalue = adsvalue; }
public AdsValueHelper(AdsValue adsvalue) { this.adsvalue = adsvalue; }
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) })); }