private void ReadValues(NdrBinaryReader Stream) { values = new object[Count]; for (var i = 0; i < Count; i++) { switch (Type) { case ClaimType.CLAIM_TYPE_BOOLEAN: values[i] = Convert.ToBoolean(Stream.ReadLong()); break; case ClaimType.CLAIM_TYPE_INT64: values[i] = Stream.ReadLong(); break; case ClaimType.CLAIM_TYPE_UINT64: values[i] = (ulong)Stream.ReadLong(); break; case ClaimType.CLAIM_TYPE_STRING: values[i] = Stream.ReadString(); break; } } }
internal void ReadValue(NdrBinaryReader stream) { Id = stream.ReadString(); stream.Align(4); var count = stream.ReadInt(); if (count != Count) { throw new InvalidDataException($"ValueCount {Count} doesn't match actual count {count} for claim {Id}."); } if (Type == ClaimType.CLAIM_TYPE_STRING) { var ptr = stream.ReadInt(); if (count > 1 && ptr != 0) { stream.Seek(8); } } ReadValues(stream); }
public string ReadString(NdrBinaryReader reader) { if (pointer == 0) { return(null); } var result = reader.ReadString(maxLength); int expected = Length / 2; if (result.Length != expected) { throw new InvalidDataException($"Read length {result.Length} doesn't match expected length {expected}"); } return(result); }