c95824a65d
Full read-only SDK (src/AVEVA.Historian.Client) implementing the CLAUDE.md required
surface against AVEVA Historian's binary WCF protocol — no native AVEVA runtime
dependency. All operations live-verified against a local Historian:
- ProbeAsync, ReadRawAsync, ReadAggregateAsync, ReadAtTimeAsync, ReadEventsAsync
- BrowseTagNamesAsync, GetTagMetadataAsync (17 native data-type codes mapped)
- GetConnectionStatusAsync, GetStoreForwardStatusAsync, GetSystemParameterAsync
- 108/108 unit + integration tests pass
Includes the reverse-engineering toolkit (tools/AVEVA.Historian.ReverseEngineering)
used to decode the protocol: WCF probes, IL inspection via dnlib, and IL-rewrite
instrumentation (instrument-wcf-{write,read}message etc.) plus the .NET Framework
trace harness (tools/AVEVA.Historian.NativeTraceHarness) for parity testing.
Sanitized handoff evidence under docs/reverse-engineering/. Native AVEVA binaries
(current/, aveva-install-x64/, aveva-install-x86/) are gitignored — fetch separately
from the AVEVA installer.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
363 lines
17 KiB
Plaintext
363 lines
17 KiB
Plaintext
{
|
|
"Path": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientManaged.dll",
|
|
"Filter": "ArchestrA.HistoryQuery.StartQuery",
|
|
"IsILOnly": false,
|
|
"IsMixedMode": true,
|
|
"Methods": [
|
|
{
|
|
"DeclaringType": "ArchestrA.HistoryQuery",
|
|
"Name": {
|
|
"String": "StartQuery",
|
|
"Data": "U3RhcnRRdWVyeQ==",
|
|
"Length": 10,
|
|
"DataLength": 10
|
|
},
|
|
"Token": "0x060062A1",
|
|
"Rva": "0x0044012C",
|
|
"IsStatic": false,
|
|
"IsPublic": true,
|
|
"HasBody": true,
|
|
"InstructionCount": 426,
|
|
"Calls": [
|
|
{
|
|
"Offset": "0x0002",
|
|
"OpCode": "call",
|
|
"Operand": "HistorianClient* ArchestrA.BaseQuery::GetClient(ArchestrA.HistorianAccessError\u0026)",
|
|
"Token": "0x060061B5"
|
|
},
|
|
{
|
|
"Offset": "0x000F",
|
|
"OpCode": "call",
|
|
"Operand": "System.Boolean ArchestrA.HistoryQuery::EndQuery(ArchestrA.HistorianAccessError\u0026)",
|
|
"Token": "0x060062A3"
|
|
},
|
|
{
|
|
"Offset": "0x0054",
|
|
"OpCode": "calli",
|
|
"Operand": "System.Byte modopt(System.Runtime.CompilerServices.CompilerMarshalOverride) modopt(System.Runtime.CompilerServices.CallConvCdecl) (System.IntPtr,System.UInt32 modopt(System.Runtime.CompilerServices.IsLong),System.Boolean* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),SError* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
|
"Token": null
|
|
},
|
|
{
|
|
"Offset": "0x00B1",
|
|
"OpCode": "callvirt",
|
|
"Operand": "System.Boolean ArchestrA.HistoryQueryArgs::ProcessQueryArgs(ArchestrA.HistorianAccessError\u0026)",
|
|
"Token": "0x06006246"
|
|
},
|
|
{
|
|
"Offset": "0x00C7",
|
|
"OpCode": "call",
|
|
"Operand": "System.String ArchestrA.HistoryQueryArgs::get_Option()",
|
|
"Token": "0x06006251"
|
|
},
|
|
{
|
|
"Offset": "0x00D1",
|
|
"OpCode": "call",
|
|
"Operand": "System.Int32 \u003CModule\u003E::ArchestrA.ConvertHelper.ManagedToUnmanagedString(System.String,System.UInt64,System.Char*)",
|
|
"Token": "0x06005823"
|
|
},
|
|
{
|
|
"Offset": "0x00F3",
|
|
"OpCode": "call",
|
|
"Operand": "System.String ArchestrA.HistoryQueryArgs::get_Filter()",
|
|
"Token": "0x06006257"
|
|
},
|
|
{
|
|
"Offset": "0x00FD",
|
|
"OpCode": "call",
|
|
"Operand": "System.Int32 \u003CModule\u003E::ArchestrA.ConvertHelper.ManagedToUnmanagedString(System.String,System.UInt64,System.Char*)",
|
|
"Token": "0x06005823"
|
|
},
|
|
{
|
|
"Offset": "0x0116",
|
|
"OpCode": "call",
|
|
"Operand": "System.Collections.Specialized.StringCollection ArchestrA.BaseQueryArgs::get_TagNames()",
|
|
"Token": "0x060061B7"
|
|
},
|
|
{
|
|
"Offset": "0x011B",
|
|
"OpCode": "callvirt",
|
|
"Operand": "System.Int32 System.Collections.Specialized.StringCollection::get_Count()",
|
|
"Token": "0x0A00041C"
|
|
},
|
|
{
|
|
"Offset": "0x013B",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std.vector\u003Cwchar_t *,std::allocator\u003Cwchar_t *\u003E \u003E.reserve(std.vector\u003Cwchar_t *,std::allocator\u003Cwchar_t *\u003E \u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),System.UInt64 modopt(System.Runtime.CompilerServices.IsConst))",
|
|
"Token": "0x06005856"
|
|
},
|
|
{
|
|
"Offset": "0x014A",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
|
"Token": "0x06005C0F"
|
|
},
|
|
{
|
|
"Offset": "0x0152",
|
|
"OpCode": "call",
|
|
"Operand": "System.Collections.Specialized.StringCollection ArchestrA.BaseQueryArgs::get_TagNames()",
|
|
"Token": "0x060061B7"
|
|
},
|
|
{
|
|
"Offset": "0x015A",
|
|
"OpCode": "call",
|
|
"Operand": "System.Boolean \u003CModule\u003E::ArchestrA.ConvertHelper.ManagedToUnmanagedStrings(System.Collections.Specialized.StringCollection,stx.tsarray* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),ArchestrA.HistorianAccessError\u0026)",
|
|
"Token": "0x06005825"
|
|
},
|
|
{
|
|
"Offset": "0x016A",
|
|
"OpCode": "call",
|
|
"Operand": "QueryColumnSelector* modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::QueryColumnSelector.{ctor}(QueryColumnSelector* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
|
"Token": "0x06000041"
|
|
},
|
|
{
|
|
"Offset": "0x0174",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void ArchestrA.HistoryQuery::SelectQueryColumns(ArchestrA.HistoryQueryArgs,QueryColumnSelector* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
|
"Token": "0x0600629C"
|
|
},
|
|
{
|
|
"Offset": "0x017B",
|
|
"OpCode": "call",
|
|
"Operand": "SMemFile\u003CSCrtAllocator\u003E* modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::SMemFile\u003CSCrtAllocator\u003E.{ctor}(SMemFile\u003CSCrtAllocator\u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
|
"Token": "0x060011DE"
|
|
},
|
|
{
|
|
"Offset": "0x0193",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
|
"Token": "0x06005C0F"
|
|
},
|
|
{
|
|
"Offset": "0x01A8",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::SMemFile\u003CSCrtAllocator\u003E.SaveEx(SMemFile\u003CSCrtAllocator\u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),System.Void modopt(System.Runtime.CompilerServices.IsConst)*,System.UInt64)",
|
|
"Token": "0x06000801"
|
|
},
|
|
{
|
|
"Offset": "0x01B4",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::SMemFile\u003CSCrtAllocator\u003E.SaveEx(SMemFile\u003CSCrtAllocator\u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),System.Void modopt(System.Runtime.CompilerServices.IsConst)*,System.UInt64)",
|
|
"Token": "0x06000801"
|
|
},
|
|
{
|
|
"Offset": "0x01C4",
|
|
"OpCode": "calli",
|
|
"Operand": "SByteStream\u003CSCrtMemFile\u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced) modopt(System.Runtime.CompilerServices.CallConvCdecl) (SByteStream\u003CSCrtMemFile\u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
|
"Token": null
|
|
},
|
|
{
|
|
"Offset": "0x0210",
|
|
"OpCode": "call",
|
|
"Operand": "System.DateTime ArchestrA.BaseQueryArgs::get_EndDateTime()",
|
|
"Token": "0x060061BB"
|
|
},
|
|
{
|
|
"Offset": "0x0219",
|
|
"OpCode": "call",
|
|
"Operand": "System.DateTime System.DateTime::ToUniversalTime()",
|
|
"Token": "0x0A00040D"
|
|
},
|
|
{
|
|
"Offset": "0x0221",
|
|
"OpCode": "call",
|
|
"Operand": "System.DateTime ArchestrA.BaseQueryArgs::get_StartDateTime()",
|
|
"Token": "0x060061B9"
|
|
},
|
|
{
|
|
"Offset": "0x022A",
|
|
"OpCode": "call",
|
|
"Operand": "System.DateTime System.DateTime::ToUniversalTime()",
|
|
"Token": "0x0A00040D"
|
|
},
|
|
{
|
|
"Offset": "0x023D",
|
|
"OpCode": "calli",
|
|
"Operand": "System.Byte modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.CallConvCdecl) (System.IntPtr)",
|
|
"Token": null
|
|
},
|
|
{
|
|
"Offset": "0x0250",
|
|
"OpCode": "call",
|
|
"Operand": "ArchestrA.HistorianRetrievalMode ArchestrA.BaseQueryArgs::get_RetrievalMode()",
|
|
"Token": "0x060061BD"
|
|
},
|
|
{
|
|
"Offset": "0x0258",
|
|
"OpCode": "call",
|
|
"Operand": "System.Collections.Specialized.StringCollection ArchestrA.BaseQueryArgs::get_TagNames()",
|
|
"Token": "0x060061B7"
|
|
},
|
|
{
|
|
"Offset": "0x025D",
|
|
"OpCode": "callvirt",
|
|
"Operand": "System.Int32 System.Collections.Specialized.StringCollection::get_Count()",
|
|
"Token": "0x0A00041C"
|
|
},
|
|
{
|
|
"Offset": "0x0264",
|
|
"OpCode": "call",
|
|
"Operand": "System.Char modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::stx.tsarray.get(stx.tsarray modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
|
"Token": "0x060057EA"
|
|
},
|
|
{
|
|
"Offset": "0x026E",
|
|
"OpCode": "call",
|
|
"Operand": "System.Int64 System.DateTime::ToFileTime()",
|
|
"Token": "0x0A00040C"
|
|
},
|
|
{
|
|
"Offset": "0x0275",
|
|
"OpCode": "call",
|
|
"Operand": "System.Int64 System.DateTime::ToFileTime()",
|
|
"Token": "0x0A00040C"
|
|
},
|
|
{
|
|
"Offset": "0x027B",
|
|
"OpCode": "call",
|
|
"Operand": "System.UInt64 ArchestrA.BaseQueryArgs::get_Resolution()",
|
|
"Token": "0x060061BF"
|
|
},
|
|
{
|
|
"Offset": "0x0283",
|
|
"OpCode": "call",
|
|
"Operand": "System.Single ArchestrA.HistoryQueryArgs::get_ValueDeadband()",
|
|
"Token": "0x06006247"
|
|
},
|
|
{
|
|
"Offset": "0x0289",
|
|
"OpCode": "call",
|
|
"Operand": "System.UInt32 ArchestrA.HistoryQueryArgs::get_TimeDeadband()",
|
|
"Token": "0x06006249"
|
|
},
|
|
{
|
|
"Offset": "0x0294",
|
|
"OpCode": "call",
|
|
"Operand": "ArchestrA.HistorianVersionType ArchestrA.BaseQueryArgs::get_DataVersion()",
|
|
"Token": "0x060061C1"
|
|
},
|
|
{
|
|
"Offset": "0x029A",
|
|
"OpCode": "call",
|
|
"Operand": "ArchestrA.HistorianInterpolationType ArchestrA.HistoryQueryArgs::get_InterpolationType()",
|
|
"Token": "0x0600624B"
|
|
},
|
|
{
|
|
"Offset": "0x02A0",
|
|
"OpCode": "call",
|
|
"Operand": "ArchestrA.HistorianTimestampRule ArchestrA.HistoryQueryArgs::get_TimeStampRule()",
|
|
"Token": "0x0600624D"
|
|
},
|
|
{
|
|
"Offset": "0x02A6",
|
|
"OpCode": "call",
|
|
"Operand": "ArchestrA.HistorianQualityRule ArchestrA.HistoryQueryArgs::get_QualityRule()",
|
|
"Token": "0x0600624F"
|
|
},
|
|
{
|
|
"Offset": "0x02B6",
|
|
"OpCode": "call",
|
|
"Operand": "ArchestrA.HistorianValueSelector ArchestrA.HistoryQueryArgs::get_ValueSelector()",
|
|
"Token": "0x06006253"
|
|
},
|
|
{
|
|
"Offset": "0x02BC",
|
|
"OpCode": "call",
|
|
"Operand": "ArchestrA.HistorianAggregationType ArchestrA.HistoryQueryArgs::get_AggregationType()",
|
|
"Token": "0x06006255"
|
|
},
|
|
{
|
|
"Offset": "0x02C9",
|
|
"OpCode": "call",
|
|
"Operand": "System.UInt16 ArchestrA.HistoryQueryArgs::get_MaxStates()",
|
|
"Token": "0x06006259"
|
|
},
|
|
{
|
|
"Offset": "0x02D2",
|
|
"OpCode": "call",
|
|
"Operand": "System.Boolean modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::HistorianClient.StartDataQuery(HistorianClient* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),INSQL_QUERYTYPE,INSQL_QUERYFORMAT,HISTORIAN_SUMMARYTYPE,System.UInt32 modopt(System.Runtime.CompilerServices.IsLong),System.Char modopt(System.Runtime.CompilerServices.IsConst)**,System.UInt32 modopt(System.Runtime.CompilerServices.IsLong),System.Char modopt(System.Runtime.CompilerServices.IsConst)**,System.UInt64,System.UInt64,System.Double,System.Single,System.UInt32,System.Char modopt(System.Runtime.CompilerServices.IsConst)*,E_VERSIONTYPE,E_INTERPOLATIONTYPE,E_TIMESTAMPRULE,E_QUALITYRULE,System.Char modopt(System.Runtime.CompilerServices.IsConst)*,System.Char*,System.UInt16,System.Char*,System.UInt16,EValueSelector,E_AGGREGATIONTYPE,System.UInt32,System.Byte modopt(System.Runtime.CompilerServices.IsConst)*,System.Char modopt(System.Runtime.CompilerServices.IsConst)*,System.UInt16,System.UInt32 modopt(System.Runtime.CompilerServices.IsLong)*,SError* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
|
"Token": "0x060055E4"
|
|
},
|
|
{
|
|
"Offset": "0x031A",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
|
"Token": "0x06005C0F"
|
|
},
|
|
{
|
|
"Offset": "0x0322",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::SError.ClearErrorDetail(SError* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
|
"Token": "0x06000165"
|
|
},
|
|
{
|
|
"Offset": "0x0331",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
|
"Token": "0x06005C0F"
|
|
},
|
|
{
|
|
"Offset": "0x0341",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::SMemFile\u003CSCrtAllocator\u003E.Free(SMemFile\u003CSCrtAllocator\u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
|
"Token": "0x060011E7"
|
|
},
|
|
{
|
|
"Offset": "0x0350",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
|
"Token": "0x06005C0F"
|
|
},
|
|
{
|
|
"Offset": "0x0368",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
|
"Token": "0x06005C0F"
|
|
},
|
|
{
|
|
"Offset": "0x0370",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::QueryColumnSelector.{dtor}(QueryColumnSelector* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
|
"Token": "0x06000044"
|
|
},
|
|
{
|
|
"Offset": "0x037F",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
|
"Token": "0x06005C0F"
|
|
},
|
|
{
|
|
"Offset": "0x0388",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::stx.clear_array_ptr_vector\u003Cwchar_t\u003E(std.vector\u003Cwchar_t *,std::allocator\u003Cwchar_t *\u003E \u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
|
"Token": "0x06005886"
|
|
},
|
|
{
|
|
"Offset": "0x0397",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
|
"Token": "0x06005C0F"
|
|
},
|
|
{
|
|
"Offset": "0x039F",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std.vector\u003Cwchar_t *,std::allocator\u003Cwchar_t *\u003E \u003E._Tidy(std.vector\u003Cwchar_t *,std::allocator\u003Cwchar_t *\u003E \u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
|
"Token": "0x06005872"
|
|
},
|
|
{
|
|
"Offset": "0x03AE",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
|
"Token": "0x06005C0F"
|
|
},
|
|
{
|
|
"Offset": "0x03B6",
|
|
"OpCode": "call",
|
|
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::SError.ClearErrorDetail(SError* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
|
"Token": "0x06000165"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
Wrote copy: docs\reverse-engineering\dnlib-write-copy\aahClientManaged.dll
|