Initial commit: managed .NET 10 AVEVA Historian SDK + reverse-engineering toolkit
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>
This commit is contained in:
+31
@@ -0,0 +1,31 @@
|
||||
bin/
|
||||
obj/
|
||||
.vs/
|
||||
.vscode/
|
||||
TestResults/
|
||||
artifacts/
|
||||
*.user
|
||||
*.suo
|
||||
|
||||
# AVEVA native binaries — referenced by reverse-engineering harnesses for analysis only.
|
||||
# Per CLAUDE.md: "Never modify, delete, or redistribute". Each developer fetches their own
|
||||
# copy from the AVEVA installer; do not commit the binaries themselves.
|
||||
current/
|
||||
aveva-install-x64/
|
||||
aveva-install-x86/
|
||||
|
||||
# Editor / runtime droppings
|
||||
.claude/
|
||||
*.svclog
|
||||
.idea/
|
||||
*.swp
|
||||
Thumbs.db
|
||||
|
||||
# Capture droppings outside artifacts/ (safety net)
|
||||
*.ndjson
|
||||
*.pcap
|
||||
*.pcapng
|
||||
|
||||
# Test droppings
|
||||
*.coverage
|
||||
coverage.cobertura.xml
|
||||
@@ -0,0 +1,214 @@
|
||||
# AGENTS.md
|
||||
|
||||
## Mission
|
||||
|
||||
Build a fully managed .NET 10 replacement for AVEVA Historian's
|
||||
`aahClientManaged` / `aahClient.dll` stack by reverse-engineering the native
|
||||
binary Historian protocol.
|
||||
|
||||
The target is an in-process managed SDK that can replace the current .NET
|
||||
Framework/native sidecar used by `OtOpcUa.Driver.Historian.Wonderware`.
|
||||
|
||||
## Chosen Approach
|
||||
|
||||
Use the reverse-engineering path from `instructions.md`:
|
||||
|
||||
1. Decompile `current\aahClientManaged.dll` to understand the managed wrapper
|
||||
surface, connection flow, query types, data models, error handling, and
|
||||
native calls.
|
||||
2. Inspect `current\aahClient.dll` and the matching AVEVA install DLLs to map
|
||||
the native ABI and identify transport/framing responsibilities.
|
||||
3. Capture traffic from real Historian sessions and derive the on-the-wire
|
||||
protocol for the required read-only operations.
|
||||
4. Implement the protocol in a pure managed .NET 10 client.
|
||||
|
||||
Do not pursue the REST API implementation unless explicitly asked. Do not build
|
||||
a P/Invoke shim as the primary solution; it is useful only as an analysis aid.
|
||||
|
||||
## Repository Layout
|
||||
|
||||
This workspace is an SDK investigation folder, not a full application repo.
|
||||
|
||||
- `instructions.md` - source planning document and decision record.
|
||||
- `current\` - the seven DLLs the existing sidecar links against today.
|
||||
- `aveva-install-x64\` - full 64-bit AVEVA Historian client-side DLL set.
|
||||
- `aveva-install-x86\` - full 32-bit AVEVA Historian client-side DLL set.
|
||||
|
||||
Use `current\` first because it represents the deployed sidecar dependency set.
|
||||
Use `aveva-install-*` to compare architecture-specific behavior and locate
|
||||
adjacent client APIs.
|
||||
|
||||
## Required SDK Surface
|
||||
|
||||
Keep the managed SDK narrowly scoped to the operations used in production:
|
||||
|
||||
- `ReadRawAsync(tag, startUtc, endUtc, maxValues)`
|
||||
- `ReadAggregateAsync(tag, startUtc, endUtc, mode, interval)`
|
||||
- `ReadAtTimeAsync(tag, timestampsUtc)`
|
||||
- `ReadEventsAsync(startUtc, endUtc)`
|
||||
- `ProbeAsync()`
|
||||
|
||||
The existing alarm-event write path is dormant. Do not implement write-back
|
||||
unless a new requirement is supplied.
|
||||
|
||||
## Reverse-Engineering Workflow
|
||||
|
||||
### 1. Managed Wrapper Analysis
|
||||
|
||||
Use dnSpy or ILSpy on `current\aahClientManaged.dll`.
|
||||
|
||||
Document:
|
||||
|
||||
- Public types and methods used for connections and queries.
|
||||
- P/Invoke or native interop entry points.
|
||||
- Constructor arguments, enum values, flags, and default values.
|
||||
- Query argument structures for raw, aggregate, at-time, and event reads.
|
||||
- Returned sample/event models, quality fields, timestamp handling, and error
|
||||
propagation.
|
||||
|
||||
Prefer producing small Markdown notes under a future `docs\reverse-engineering\`
|
||||
folder rather than relying on memory.
|
||||
|
||||
### 2. Native ABI Mapping
|
||||
|
||||
Inspect `current\aahClient.dll` and compare with:
|
||||
|
||||
- `aveva-install-x64\aahClient.dll`
|
||||
- `aveva-install-x86\aahClient.dll`
|
||||
- `aahClientCommon.dll`
|
||||
- `aahDataSetClient.dll`
|
||||
- `aahClientConfig.dll`
|
||||
|
||||
Useful tools:
|
||||
|
||||
- `dumpbin /exports`
|
||||
- Dependencies or Process Monitor
|
||||
- API Monitor
|
||||
- Detours or equivalent call hooks
|
||||
|
||||
Document function names, calling conventions, pointer ownership, HRESULT/error
|
||||
patterns, string encodings, and architecture differences.
|
||||
|
||||
### 3. Wire Capture
|
||||
|
||||
Capture real Historian sessions with Wireshark while running the existing
|
||||
Wonderware sidecar/client against a development Historian.
|
||||
|
||||
Capture each scenario independently:
|
||||
|
||||
- Connection open/close and health probe.
|
||||
- Raw history query.
|
||||
- Aggregate query for each required retrieval mode.
|
||||
- At-time/interpolated query.
|
||||
- Event query.
|
||||
- Error cases: bad tag, empty range, invalid credentials, server offline.
|
||||
|
||||
For every capture, record:
|
||||
|
||||
- Historian version and architecture.
|
||||
- Client DLL version and file hash.
|
||||
- Server host/port.
|
||||
- Query parameters.
|
||||
- Expected logical result set.
|
||||
- Packet capture filename.
|
||||
|
||||
Do not commit sensitive packet captures, credentials, server names, or customer
|
||||
tag names. Sanitize before adding any fixtures or notes.
|
||||
|
||||
### 4. Protocol Model
|
||||
|
||||
Derive and document:
|
||||
|
||||
- Session handshake.
|
||||
- Authentication exchange, if present.
|
||||
- Message framing and length prefixes.
|
||||
- Message type identifiers.
|
||||
- Request/response correlation.
|
||||
- Endianness.
|
||||
- Timestamp encoding.
|
||||
- String encoding.
|
||||
- Numeric value encoding.
|
||||
- Quality/status encoding.
|
||||
- Error frame format.
|
||||
- Event payload format.
|
||||
|
||||
Add version notes whenever behavior differs between the installed 2020 DLLs and
|
||||
newer Historian versions.
|
||||
|
||||
### 5. Managed Implementation Shape
|
||||
|
||||
When implementation starts, use this project shape unless the real repo dictates
|
||||
otherwise:
|
||||
|
||||
```text
|
||||
src/AVEVA.Historian.Client/
|
||||
AVEVA.Historian.Client.csproj
|
||||
HistorianClient.cs
|
||||
HistorianClientOptions.cs
|
||||
Models/
|
||||
HistorianSample.cs
|
||||
HistorianAggregateSample.cs
|
||||
HistorianEvent.cs
|
||||
RetrievalMode.cs
|
||||
Protocol/
|
||||
HistorianConnection.cs
|
||||
HistorianFrame.cs
|
||||
HistorianMessageType.cs
|
||||
HistorianProtocolReader.cs
|
||||
HistorianProtocolWriter.cs
|
||||
Transport/
|
||||
TcpHistorianTransport.cs
|
||||
ClusterEndpointPicker.cs
|
||||
Internal/
|
||||
BackoffPolicy.cs
|
||||
```
|
||||
|
||||
Keep protocol parsing isolated from transport I/O so captured frames can be
|
||||
tested without a live Historian.
|
||||
|
||||
## Testing Expectations
|
||||
|
||||
Start with deterministic tests around protocol encoding/decoding:
|
||||
|
||||
- Golden byte fixtures for each message kind.
|
||||
- Round-trip tests for request builders.
|
||||
- Parser tests for captured and sanitized response frames.
|
||||
- Timestamp, quality, and string encoding edge cases.
|
||||
- Error frame parsing.
|
||||
|
||||
Add live integration tests only behind explicit configuration, such as:
|
||||
|
||||
- `HISTORIAN_HOST`
|
||||
- `HISTORIAN_PORT`
|
||||
- `HISTORIAN_USER`
|
||||
- `HISTORIAN_PASSWORD`
|
||||
- `HISTORIAN_TEST_TAG`
|
||||
|
||||
Integration tests must skip cleanly when these values are not configured.
|
||||
|
||||
## Constraints
|
||||
|
||||
- Keep the final SDK pure managed .NET 10.
|
||||
- Avoid adding native runtime dependencies to the production SDK.
|
||||
- Avoid broad API design. Implement only the operations listed above.
|
||||
- Treat AVEVA protocol details as version-sensitive; document assumptions.
|
||||
- Do not redistribute AVEVA binaries.
|
||||
- Do not commit credentials, proprietary captures, or customer data.
|
||||
- Do not delete or overwrite DLLs in `current\` or `aveva-install-*`.
|
||||
|
||||
## Definition of Done
|
||||
|
||||
For the reverse-engineering phase:
|
||||
|
||||
- Managed wrapper public surface and native entry points are documented.
|
||||
- Required query flows have sanitized captures or byte-level notes.
|
||||
- Message framing, request fields, response fields, and error frames are
|
||||
described well enough to implement parser tests.
|
||||
|
||||
For the SDK phase:
|
||||
|
||||
- The managed client implements the required read-only surface.
|
||||
- Unit tests cover protocol parse/build behavior.
|
||||
- Integration tests can validate against a configured live Historian.
|
||||
- The SDK can replace the existing sidecar call sites without requiring
|
||||
`aahClientManaged.dll` or `aahClient.dll` at runtime.
|
||||
@@ -0,0 +1,101 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Mission
|
||||
|
||||
Build a fully managed .NET 10 replacement for AVEVA Historian's `aahClientManaged` / `aahClient.dll` stack by reverse-engineering the proprietary binary protocol. The production SDK under `src/AVEVA.Historian.Client/` must remain pure managed .NET 10 — no P/Invoke, no native AVEVA runtime dependency, no REST. Tools under `tools/` and scripts under `scripts/` are reverse-engineering aids only.
|
||||
|
||||
Read `AGENTS.md` (standing constraints), `instructions.md` (decision record), and `docs/reverse-engineering/handoff.md` (current evidence + active blocker) before starting non-trivial work. The handoff doc is the entry point — it tracks the live blocker, next pickup steps, and the canonical list of primary reference docs.
|
||||
|
||||
## Required SDK Surface
|
||||
|
||||
Read-only operations only. Do not implement write-back unless explicitly requested:
|
||||
|
||||
- `ProbeAsync`, `ReadRawAsync`, `ReadAggregateAsync`, `ReadAtTimeAsync`, `ReadEventsAsync`
|
||||
- `BrowseTagNamesAsync`, `GetTagMetadataAsync`
|
||||
- Status helpers: `GetConnectionStatusAsync`, `GetStoreForwardStatusAsync`, `GetSystemParameterAsync`
|
||||
|
||||
Methods without protocol evidence currently throw `ProtocolEvidenceMissingException` from `Historian2020ProtocolDialect`. Do not stub fake behavior — leave them throwing until evidence supports an implementation.
|
||||
|
||||
## Build & Test
|
||||
|
||||
```powershell
|
||||
dotnet build .\Histsdk.slnx --no-restore
|
||||
dotnet test .\Histsdk.slnx --no-build --logger "console;verbosity=minimal"
|
||||
```
|
||||
|
||||
Run a single test:
|
||||
|
||||
```powershell
|
||||
dotnet test .\Histsdk.slnx --no-build --filter "FullyQualifiedName~WcfDataQueryProtocolTests"
|
||||
```
|
||||
|
||||
Live integration tests in `tests/AVEVA.Historian.Client.Tests/HistorianClientIntegrationTests.cs` are gated and skip cleanly without these env vars:
|
||||
|
||||
```powershell
|
||||
$env:HISTORIAN_HOST, $env:HISTORIAN_PORT (32568), $env:HISTORIAN_USER, $env:HISTORIAN_PASSWORD,
|
||||
$env:HISTORIAN_TEST_TAG, $env:HISTORIAN_TAG_FILTER
|
||||
```
|
||||
|
||||
Never write real credentials, hostnames, user names, or customer tag names into docs, scripts, captures, or commit messages.
|
||||
|
||||
## Reverse-Engineering CLI
|
||||
|
||||
`tools/AVEVA.Historian.ReverseEngineering` is the .NET 10 CLI for static inspection, WCF probes, and IL-rewrite instrumentation. Common entry points:
|
||||
|
||||
```powershell
|
||||
dotnet run --no-build --project tools\AVEVA.Historian.ReverseEngineering -- wcf-probe $env:HISTORIAN_HOST 32568
|
||||
dotnet run --no-build --project tools\AVEVA.Historian.ReverseEngineering -- wcf-cert-probe $env:HISTORIAN_HOST 32568 localhost
|
||||
dotnet run --no-build --project tools\AVEVA.Historian.ReverseEngineering -- wcf-like-tag-browse $env:HISTORIAN_HOST 32568 $env:HISTORIAN_TAG_FILTER
|
||||
dotnet run --no-build --project tools\AVEVA.Historian.ReverseEngineering -- wcf-start-query $env:HISTORIAN_HOST 32568 $env:HISTORIAN_TEST_TAG --max-attempts 1 --timeout-seconds 3
|
||||
dotnet run --project tools\AVEVA.Historian.NativeTraceHarness -- --scenario history --tag $env:HISTORIAN_TEST_TAG --lookback-minutes 1440
|
||||
```
|
||||
|
||||
The `wcf-start-query` matrix is expensive — always pass `--max-attempts` / `--timeout-seconds` for negative probes. See `docs/reverse-engineering/capture-workflow.md` for the full repeatable capture sequence (manifest, mark, exports, Frida winsock attach, etc.).
|
||||
|
||||
## Code Architecture
|
||||
|
||||
### Production SDK (`src/AVEVA.Historian.Client/`)
|
||||
|
||||
Three layered subsystems, intentionally decoupled so protocol parsing can be unit-tested without a live server:
|
||||
|
||||
- **`HistorianClient` + `HistorianClientOptions`** — public façade. Validates inputs, delegates reads to `Historian2020ProtocolDialect`, delegates probe/tag-metadata/browse to the WCF layer.
|
||||
- **`Wcf/`** — managed WCF/MDAS layer. The Historian uses Net.TCP on port `32568` with a custom `application/x-mdas` content type wrapping a binary SOAP 1.2 / WS-Addressing 1.0 envelope. `MdasMessageEncoder` + `MdasMessageEncodingBindingElement` implement that wrapper. `HistorianWcfBindingFactory` produces three flavors: plain MDAS, MDAS+Windows transport (used for `/Hist-Integrated`), and MDAS+certificate (used for `/HistCert`). Service paths live in `HistorianWcfServiceNames`. WCF data contracts (`Wcf/Contracts/`) are reproduced from server-side static analysis and are versioned per native interface (e.g., `IRetrievalServiceContract2..4`).
|
||||
- **`Protocol/`** — binary frame layer (`HistorianFrameReader`/`Writer`, `HistorianBinaryPrimitives`, `HistorianMessageType`). `Historian2020ProtocolDialect` is the version-anchored bridge between `HistorianClient` and the frame layer; methods without sufficient evidence throw `ProtocolEvidenceMissingException` rather than guessing wire bytes.
|
||||
- **`Transport/`** — pluggable `IHistorianTransport` (default: TCP). Tests inject a fake transport.
|
||||
- **`Models/`** — public DTOs and enums (`HistorianSample`, `RetrievalMode`, etc.). `HistorianDataValue` represents the discriminated value type.
|
||||
|
||||
`InternalsVisibleTo` exposes internals to the test assembly and the reverse-engineering tool.
|
||||
|
||||
### The Active Protocol Blocker
|
||||
|
||||
The native wrapper does **not** use the simple `Open2` session handle for query reads. The successful native flow is `CClientContext.AuthenticateClient` → two `ValidateClientCredential` SSPI rounds → `CHistoryConnectionWCF.OpenConnection3` → `CClientCommon.StartQuery` → `/Retr.StartQuery2`. `OpenConnection3` mints the transient `/Retr` client handle the server accepts. Managed `Open2` alone reaches server logic but `Retr.StartQuery2` returns false with empty buffers.
|
||||
|
||||
`DataQueryRequest` and `EventQueryRequest` byte serialization is already byte-matched against native captures. The remaining gap is reproducing the auth/session state that lets the server accept a client-generated context GUID before `OpenConnection3`. See handoff.md "Active Blocker" and `docs/reverse-engineering/openconnection3-correlation-latest.json`.
|
||||
|
||||
### Tools Layer
|
||||
|
||||
- `tools/AVEVA.Historian.NativeTraceHarness/` — **.NET Framework** (not .NET 10) harness that loads `current/aahClientManaged.dll` and records sanitized reflection snapshots around `OpenConnection`, `StartQuery`, `MoveNext`. Exists specifically to parity-test against the native wrapper.
|
||||
- `tools/AVEVA.Historian.NetFxWcfProbe/` — .NET Framework WCF probe to rule out .NET 10-only WCF behavior differences.
|
||||
- `tools/AVEVA.Historian.ReverseInstrumentation/` — assembly injected into IL-rewritten copies of `aahClientManaged.dll` for sanitized logging. Rewrites land in `docs/reverse-engineering/dnlib-write-copy/`, never in `current/`.
|
||||
- `tools/AVEVA.Historian.WcfCaptureServer/` — fake server for endpoint experiments.
|
||||
- `scripts/` — PowerShell + Frida runners for native attach captures (winsock, system boundary, runtime pointers, ValCl SSPI context).
|
||||
|
||||
### Evidence & Artifacts
|
||||
|
||||
- `docs/reverse-engineering/` — sanitized Markdown summaries + small JSON evidence. Always commit-safe.
|
||||
- `artifacts/reverse-engineering/` — raw / identity-bearing runtime output. Never committed; never copy contents into `docs/` without sanitizing.
|
||||
- `fixtures/protocol/` — sanitized golden byte fixtures, named to match `manifest` scenarios.
|
||||
- `current/` and `aveva-install-{x64,x86}/` — AVEVA binaries. **Never modify, delete, or redistribute.** Use `current/` first because it matches the deployed sidecar.
|
||||
|
||||
## Testing Conventions
|
||||
|
||||
Unit tests are golden-byte and round-trip oriented — `WcfDataQueryProtocolTests`, `WcfEventQueryProtocolTests`, `WcfTagQueryProtocolTests`, `WcfOpen2ProtocolTests`, `FrameTests`, `BinaryPrimitiveTests`. `ProtocolGuardrailTests` enforces that unimplemented methods throw `ProtocolEvidenceMissingException` rather than returning empty results. When adding a new protocol code path, add a golden-byte fixture before/alongside the implementation.
|
||||
|
||||
## Safety
|
||||
|
||||
- Never commit credentials, hostnames, user names, customer tag names, or raw packet captures. Use placeholders in docs.
|
||||
- Run a sanitization scan after touching auth/capture docs (the rg pattern is in handoff.md "Next Pickup Steps").
|
||||
- Production code under `src/` must remain pure managed .NET 10 with no native AVEVA reference. Reverse-engineering harnesses under `tools/` may reference native binaries.
|
||||
- This workspace is not a Git working tree in the current checkout — track changes via file timestamps or external backup.
|
||||
@@ -0,0 +1,15 @@
|
||||
<Solution>
|
||||
<Folder Name="/src/">
|
||||
<Project Path="src/AVEVA.Historian.Client/AVEVA.Historian.Client.csproj" />
|
||||
</Folder>
|
||||
<Folder Name="/tests/">
|
||||
<Project Path="tests/AVEVA.Historian.Client.Tests/AVEVA.Historian.Client.Tests.csproj" />
|
||||
</Folder>
|
||||
<Folder Name="/tools/">
|
||||
<Project Path="tools/AVEVA.Historian.ReverseEngineering/AVEVA.Historian.ReverseEngineering.csproj" />
|
||||
<Project Path="tools/AVEVA.Historian.ReverseInstrumentation/AVEVA.Historian.ReverseInstrumentation.csproj" />
|
||||
<Project Path="tools/AVEVA.Historian.WcfCaptureServer/AVEVA.Historian.WcfCaptureServer.csproj" />
|
||||
<Project Path="tools/AVEVA.Historian.NativeTraceHarness/AVEVA.Historian.NativeTraceHarness.csproj" />
|
||||
<Project Path="tools/AVEVA.Historian.NetFxWcfProbe/AVEVA.Historian.NetFxWcfProbe.csproj" />
|
||||
</Folder>
|
||||
</Solution>
|
||||
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"Path": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClient.dll",
|
||||
"Sha256": "77a778988e2d8f2d0e88113f8c8b0788a0ef34fa5134938a353976778144dc83",
|
||||
"Exports": [
|
||||
"?mdas_AddHistorianValue2@@YAHKPEAUHISTORIAN_VALUE2@@PEAUHISTORIAN_ERROR@@@Z",
|
||||
"?mdas_AddNonStreamedValue2@@YAHKKPEAUHISTORIAN_VALUE2@@PEAUHISTORIAN_ERROR@@@Z",
|
||||
"?mdas_GetNextEventDataQueryResult@@YAHKKPEAVEventQueryResultRow@@PEAUHISTORIAN_ERROR@@@Z",
|
||||
"?mdas_GetRuntimeParameter@@YAHKAEBV?$vector@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@V?$allocator@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@@std@@AEAV?$vector@VCRetVariant@@V?$allocator@VCRetVariant@@@std@@@2@PEAUHISTORIAN_ERROR@@@Z",
|
||||
"?mdas_StartEventDataRetrievalQuery@@YAHK_K0IIGGAEAVEventQueryFilters@@PEB_WPEAKPEAUHISTORIAN_ERROR@@@Z",
|
||||
"mdas_AddHistorianTag",
|
||||
"mdas_AddHistorianTags",
|
||||
"mdas_AddHistorianValue",
|
||||
"mdas_AddNonStreamValues",
|
||||
"mdas_AddNonStreamValuesBegin",
|
||||
"mdas_AddNonStreamValuesEnd",
|
||||
"mdas_AddNonStreamedValue",
|
||||
"mdas_AddNonStreamedValue3",
|
||||
"mdas_AddNonStreamedValueAsync",
|
||||
"mdas_AddNonStreamedValuesBegin",
|
||||
"mdas_AddNonStreamedValuesEnd",
|
||||
"mdas_AddRevisionValue",
|
||||
"mdas_AddRevisionValuesBegin",
|
||||
"mdas_AddRevisionValuesEnd",
|
||||
"mdas_AddStreamValue",
|
||||
"mdas_AddStreamValue2",
|
||||
"mdas_AddTagExtendedProperties",
|
||||
"mdas_AddTagExtendedPropertyGroups",
|
||||
"mdas_AddTags",
|
||||
"mdas_AddTags2",
|
||||
"mdas_CanUpdateAreaHierarchy",
|
||||
"mdas_CloseConnection",
|
||||
"mdas_ConfigureAutoStartProcess",
|
||||
"mdas_ConfigureParameter",
|
||||
"mdas_DeleteTag",
|
||||
"mdas_DeleteTagExtendedPropertiesByName",
|
||||
"mdas_EndQuery",
|
||||
"mdas_ExchangeInfoWithProcess",
|
||||
"mdas_GetErrorCount",
|
||||
"mdas_GetErrorText",
|
||||
"mdas_GetHistorianTagsByKey",
|
||||
"mdas_GetJobStatus",
|
||||
"mdas_GetLicenseFeatureInfo",
|
||||
"mdas_GetLikeTagnames",
|
||||
"mdas_GetLocalizedText",
|
||||
"mdas_GetNextBlockQueryResult",
|
||||
"mdas_GetNextDataQueryResult",
|
||||
"mdas_GetSFParameter",
|
||||
"mdas_GetStorageStatus",
|
||||
"mdas_GetSystemParameter",
|
||||
"mdas_GetSystemTimeZoneName",
|
||||
"mdas_GetTagDeploymentStatus",
|
||||
"mdas_GetTagExtendedPropertyByName",
|
||||
"mdas_GetTagExtendedPropertyGroupStatusByName",
|
||||
"mdas_GetTagInfoByName",
|
||||
"mdas_GetTagInfoFromName",
|
||||
"mdas_GetTagInfosByName",
|
||||
"mdas_GetTagStatusByName",
|
||||
"mdas_GetTagTypeFromName",
|
||||
"mdas_GetTagidsByTagnameAndSource",
|
||||
"mdas_GetTimeZoneInfo",
|
||||
"mdas_GetTimeZoneNames",
|
||||
"mdas_Initialize",
|
||||
"mdas_IsAllForwarded",
|
||||
"mdas_IsDBCaseSensitive",
|
||||
"mdas_IsManualTag",
|
||||
"mdas_IsOriginalAllowed",
|
||||
"mdas_IsTagnameValid",
|
||||
"mdas_IsTagsSynchronized",
|
||||
"mdas_LogError",
|
||||
"mdas_OpenConnection",
|
||||
"mdas_OpenConnection2",
|
||||
"mdas_OpenConnectionOffline",
|
||||
"mdas_OpenConnectionOffline2",
|
||||
"mdas_OpenConnectionOffline4",
|
||||
"mdas_PingPipe",
|
||||
"mdas_PingServer",
|
||||
"mdas_ReleaseBuffer",
|
||||
"mdas_ReleaseErrorDetail",
|
||||
"mdas_RenameSourceTags",
|
||||
"mdas_RenameTags",
|
||||
"mdas_SendNonStreamedValues",
|
||||
"mdas_SetBufferMemory",
|
||||
"mdas_SetConnectState",
|
||||
"mdas_SetConnectionParameter",
|
||||
"mdas_SetParameter",
|
||||
"mdas_SetRedundantSFMode",
|
||||
"mdas_SetSFParameter",
|
||||
"mdas_SetServerConnectionInfo",
|
||||
"mdas_SetServerConnectionInfo2",
|
||||
"mdas_SetServerConnectionInfo4",
|
||||
"mdas_SetStoreForwardMode",
|
||||
"mdas_SetTraceAccount",
|
||||
"mdas_SetTraceFlags",
|
||||
"mdas_StartBlockRetrievalQuery",
|
||||
"mdas_StartDataRetrievalQuery",
|
||||
"mdas_StartLikeTagNameSearch",
|
||||
"mdas_StartProcess",
|
||||
"mdas_StopProcess",
|
||||
"mdas_UnInitialize",
|
||||
"mdas_UnregisterTag",
|
||||
"mdas_UpdateAreaHierarchy",
|
||||
"mdas_UpdateConnection",
|
||||
"mdas_UpdateObjectHierarchy"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,191 @@
|
||||
{
|
||||
"GeneratedUtc": "2026-04-30T19:06:31.829829+00:00",
|
||||
"Binaries": [
|
||||
{
|
||||
"Path": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClient.dll",
|
||||
"Sha256": "77a778988e2d8f2d0e88113f8c8b0788a0ef34fa5134938a353976778144dc83",
|
||||
"Exports": [
|
||||
"?mdas_AddHistorianValue2@@YAHKPEAUHISTORIAN_VALUE2@@PEAUHISTORIAN_ERROR@@@Z",
|
||||
"?mdas_AddNonStreamedValue2@@YAHKKPEAUHISTORIAN_VALUE2@@PEAUHISTORIAN_ERROR@@@Z",
|
||||
"?mdas_GetNextEventDataQueryResult@@YAHKKPEAVEventQueryResultRow@@PEAUHISTORIAN_ERROR@@@Z",
|
||||
"?mdas_GetRuntimeParameter@@YAHKAEBV?$vector@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@V?$allocator@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@@std@@AEAV?$vector@VCRetVariant@@V?$allocator@VCRetVariant@@@std@@@2@PEAUHISTORIAN_ERROR@@@Z",
|
||||
"?mdas_StartEventDataRetrievalQuery@@YAHK_K0IIGGAEAVEventQueryFilters@@PEB_WPEAKPEAUHISTORIAN_ERROR@@@Z",
|
||||
"mdas_AddHistorianTag",
|
||||
"mdas_AddHistorianTags",
|
||||
"mdas_AddHistorianValue",
|
||||
"mdas_AddNonStreamValues",
|
||||
"mdas_AddNonStreamValuesBegin",
|
||||
"mdas_AddNonStreamValuesEnd",
|
||||
"mdas_AddNonStreamedValue",
|
||||
"mdas_AddNonStreamedValue3",
|
||||
"mdas_AddNonStreamedValueAsync",
|
||||
"mdas_AddNonStreamedValuesBegin",
|
||||
"mdas_AddNonStreamedValuesEnd",
|
||||
"mdas_AddRevisionValue",
|
||||
"mdas_AddRevisionValuesBegin",
|
||||
"mdas_AddRevisionValuesEnd",
|
||||
"mdas_AddStreamValue",
|
||||
"mdas_AddStreamValue2",
|
||||
"mdas_AddTagExtendedProperties",
|
||||
"mdas_AddTagExtendedPropertyGroups",
|
||||
"mdas_AddTags",
|
||||
"mdas_AddTags2",
|
||||
"mdas_CanUpdateAreaHierarchy",
|
||||
"mdas_CloseConnection",
|
||||
"mdas_ConfigureAutoStartProcess",
|
||||
"mdas_ConfigureParameter",
|
||||
"mdas_DeleteTag",
|
||||
"mdas_DeleteTagExtendedPropertiesByName",
|
||||
"mdas_EndQuery",
|
||||
"mdas_ExchangeInfoWithProcess",
|
||||
"mdas_GetErrorCount",
|
||||
"mdas_GetErrorText",
|
||||
"mdas_GetHistorianTagsByKey",
|
||||
"mdas_GetJobStatus",
|
||||
"mdas_GetLicenseFeatureInfo",
|
||||
"mdas_GetLikeTagnames",
|
||||
"mdas_GetLocalizedText",
|
||||
"mdas_GetNextBlockQueryResult",
|
||||
"mdas_GetNextDataQueryResult",
|
||||
"mdas_GetSFParameter",
|
||||
"mdas_GetStorageStatus",
|
||||
"mdas_GetSystemParameter",
|
||||
"mdas_GetSystemTimeZoneName",
|
||||
"mdas_GetTagDeploymentStatus",
|
||||
"mdas_GetTagExtendedPropertyByName",
|
||||
"mdas_GetTagExtendedPropertyGroupStatusByName",
|
||||
"mdas_GetTagInfoByName",
|
||||
"mdas_GetTagInfoFromName",
|
||||
"mdas_GetTagInfosByName",
|
||||
"mdas_GetTagStatusByName",
|
||||
"mdas_GetTagTypeFromName",
|
||||
"mdas_GetTagidsByTagnameAndSource",
|
||||
"mdas_GetTimeZoneInfo",
|
||||
"mdas_GetTimeZoneNames",
|
||||
"mdas_Initialize",
|
||||
"mdas_IsAllForwarded",
|
||||
"mdas_IsDBCaseSensitive",
|
||||
"mdas_IsManualTag",
|
||||
"mdas_IsOriginalAllowed",
|
||||
"mdas_IsTagnameValid",
|
||||
"mdas_IsTagsSynchronized",
|
||||
"mdas_LogError",
|
||||
"mdas_OpenConnection",
|
||||
"mdas_OpenConnection2",
|
||||
"mdas_OpenConnectionOffline",
|
||||
"mdas_OpenConnectionOffline2",
|
||||
"mdas_OpenConnectionOffline4",
|
||||
"mdas_PingPipe",
|
||||
"mdas_PingServer",
|
||||
"mdas_ReleaseBuffer",
|
||||
"mdas_ReleaseErrorDetail",
|
||||
"mdas_RenameSourceTags",
|
||||
"mdas_RenameTags",
|
||||
"mdas_SendNonStreamedValues",
|
||||
"mdas_SetBufferMemory",
|
||||
"mdas_SetConnectState",
|
||||
"mdas_SetConnectionParameter",
|
||||
"mdas_SetParameter",
|
||||
"mdas_SetRedundantSFMode",
|
||||
"mdas_SetSFParameter",
|
||||
"mdas_SetServerConnectionInfo",
|
||||
"mdas_SetServerConnectionInfo2",
|
||||
"mdas_SetServerConnectionInfo4",
|
||||
"mdas_SetStoreForwardMode",
|
||||
"mdas_SetTraceAccount",
|
||||
"mdas_SetTraceFlags",
|
||||
"mdas_StartBlockRetrievalQuery",
|
||||
"mdas_StartDataRetrievalQuery",
|
||||
"mdas_StartLikeTagNameSearch",
|
||||
"mdas_StartProcess",
|
||||
"mdas_StopProcess",
|
||||
"mdas_UnInitialize",
|
||||
"mdas_UnregisterTag",
|
||||
"mdas_UpdateAreaHierarchy",
|
||||
"mdas_UpdateConnection",
|
||||
"mdas_UpdateObjectHierarchy"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Path": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientCommon.dll",
|
||||
"Sha256": "c9e6bf37fd98131519a7460f0c7359242f4b89c3d75a3d3c4899d7564d249834",
|
||||
"Exports": [
|
||||
"?CreateClientCommon@@YAPEAVIClientCommon@@PEA_W@Z",
|
||||
"?DeleteClientCommon@@YAXPEAVIClientCommon@@@Z"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Path": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientManaged.dll",
|
||||
"Sha256": "0e58222c7c0b3ce82075ac5c5bc4c21546e92d8727b23be16188304b312eedba",
|
||||
"Exports": []
|
||||
}
|
||||
],
|
||||
"Scenarios": [
|
||||
{
|
||||
"Name": "connect-process",
|
||||
"NativeOperation": "mdas_OpenConnection2",
|
||||
"ManagedApi": "ProbeAsync/GetConnectionStatusAsync",
|
||||
"EvidenceFile": "fixtures/protocol/2020/connect-process.bin"
|
||||
},
|
||||
{
|
||||
"Name": "history-raw",
|
||||
"NativeOperation": "mdas_StartDataRetrievalQuery \u002B mdas_GetNextDataQueryResult",
|
||||
"ManagedApi": "ReadRawAsync",
|
||||
"EvidenceFile": "fixtures/protocol/2020/history-raw.bin"
|
||||
},
|
||||
{
|
||||
"Name": "history-aggregate",
|
||||
"NativeOperation": "mdas_StartDataRetrievalQuery \u002B mdas_GetNextDataQueryResult",
|
||||
"ManagedApi": "ReadAggregateAsync",
|
||||
"EvidenceFile": "fixtures/protocol/2020/history-aggregate.bin"
|
||||
},
|
||||
{
|
||||
"Name": "history-at-time",
|
||||
"NativeOperation": "mdas_StartDataRetrievalQuery \u002B mdas_GetNextDataQueryResult",
|
||||
"ManagedApi": "ReadAtTimeAsync",
|
||||
"EvidenceFile": "fixtures/protocol/2020/history-at-time.bin"
|
||||
},
|
||||
{
|
||||
"Name": "history-block",
|
||||
"NativeOperation": "mdas_StartBlockRetrievalQuery \u002B mdas_GetNextBlockQueryResult",
|
||||
"ManagedApi": "ReadBlocksAsync",
|
||||
"EvidenceFile": "fixtures/protocol/2020/history-block.bin"
|
||||
},
|
||||
{
|
||||
"Name": "event-query",
|
||||
"NativeOperation": "mdas_StartEventDataRetrievalQuery \u002B mdas_GetNextEventDataQueryResult",
|
||||
"ManagedApi": "ReadEventsAsync",
|
||||
"EvidenceFile": "fixtures/protocol/2020/event-query.bin"
|
||||
},
|
||||
{
|
||||
"Name": "tag-browse",
|
||||
"NativeOperation": "mdas_StartLikeTagNameSearch \u002B mdas_GetLikeTagnames",
|
||||
"ManagedApi": "BrowseTagNamesAsync",
|
||||
"EvidenceFile": "fixtures/protocol/2020/tag-browse.bin"
|
||||
},
|
||||
{
|
||||
"Name": "tag-metadata",
|
||||
"NativeOperation": "mdas_GetTagInfoByName",
|
||||
"ManagedApi": "GetTagMetadataAsync",
|
||||
"EvidenceFile": "fixtures/protocol/2020/tag-metadata.bin"
|
||||
},
|
||||
{
|
||||
"Name": "status",
|
||||
"NativeOperation": "mdas_GetStorageStatus/mdas_GetSystemParameter",
|
||||
"ManagedApi": "GetConnectionStatusAsync/GetStoreForwardStatusAsync",
|
||||
"EvidenceFile": "fixtures/protocol/2020/status.bin"
|
||||
},
|
||||
{
|
||||
"Name": "write-streamed-value",
|
||||
"NativeOperation": "mdas_AddStreamValue",
|
||||
"ManagedApi": "WriteStreamedValueAsync",
|
||||
"EvidenceFile": "fixtures/protocol/2020/write-streamed-value.bin"
|
||||
},
|
||||
{
|
||||
"Name": "write-event",
|
||||
"NativeOperation": "mdas_AddStreamValue for HistorianEvent",
|
||||
"ManagedApi": "WriteEventAsync",
|
||||
"EvidenceFile": "fixtures/protocol/2020/write-event.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,147 @@
|
||||
# Capture Workflow
|
||||
|
||||
Use the reverse-engineering CLI to keep captures repeatable:
|
||||
|
||||
```powershell
|
||||
dotnet run --project tools\AVEVA.Historian.ReverseEngineering -- manifest
|
||||
dotnet run --project tools\AVEVA.Historian.ReverseEngineering -- exports current\aahClient.dll
|
||||
dotnet run --project tools\AVEVA.Historian.ReverseEngineering -- mark history-raw
|
||||
dotnet run --project tools\AVEVA.Historian.ReverseEngineering -- wcf-probe 10.100.0.48 32568
|
||||
dotnet run --project tools\AVEVA.Historian.ReverseEngineering -- wcf-tag-info 10.100.0.48 32568 OtOpcUaParityTest_001.Counter
|
||||
```
|
||||
|
||||
To probe the certificate-secured history endpoint with fully managed WCF/MDAS:
|
||||
|
||||
```powershell
|
||||
dotnet run --project tools\AVEVA.Historian.ReverseEngineering -- wcf-cert-probe localhost 32568
|
||||
dotnet run --project tools\AVEVA.Historian.ReverseEngineering -- wcf-cert-probe 10.100.0.48 32568 localhost
|
||||
```
|
||||
|
||||
The optional final argument supplies the expected endpoint DNS identity. On the
|
||||
current development Historian, the remote endpoint presents certificate identity
|
||||
`localhost`, so the explicit identity is required when connecting by IP address.
|
||||
|
||||
Windows built-in packet capture may miss local Historian traffic. For local
|
||||
native-wrapper probes, use the Frida harness:
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\Attach-NativeTraceHarnessWinsockCapture.ps1 -Scenario history -ServerName localhost -RetrievalMode Full -TagName OtOpcUaParityTest_001.Counter -LookbackMinutes 1440 -MaxRows 1
|
||||
```
|
||||
|
||||
The Frida harness attaches before `OpenConnection` and hooks:
|
||||
|
||||
- Winsock `connect`, `WSAConnect`, `send`, `recv`, `WSASend`, and `WSARecv`
|
||||
- `CreateFileW`, `ReadFile`, `WriteFile`, and `CloseHandle`
|
||||
- `NtCreateFile`, `NtReadFile`, and `NtWriteFile`
|
||||
|
||||
For native trace harness captures that must hook before `aahClientManaged.dll`
|
||||
loads, pass a preload pause:
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\Attach-NativeTraceHarnessWinsockCapture.ps1 -Scenario event -PreLoadSleepSeconds 8 -AttachDelaySeconds 0 -OutputPath .\docs\reverse-engineering\winsock-event-preload-localhost-latest.ndjson
|
||||
```
|
||||
|
||||
The latest preload local event pass still produced no Winsock or tracked pipe
|
||||
payloads even though native event open and `StartQuery` succeeded.
|
||||
|
||||
Artifacts should be treated as diagnostic metadata. The script records byte
|
||||
counts and short hex prefixes only; do not add raw credential/session buffers
|
||||
to the repo.
|
||||
|
||||
Current local result: `localhost`, `127.0.0.1`, and the machine LAN IP all
|
||||
complete native reads without observed client-process socket or pipe payloads.
|
||||
That suggests local native reads are not exercising the remote transport path.
|
||||
|
||||
To force the native client onto a remote TCP path through the Debian test box:
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\Run-DebianHistorianRelayCapture.ps1 -SshUser dohertj2 -SshHost 10.100.0.35 -TargetHost 10.100.0.48 -OutputPath .\docs\reverse-engineering\debian-relay-history-latest.ndjson -HarnessOutputPath .\docs\reverse-engineering\native-trace-harness-via-debian-relay-latest.json
|
||||
```
|
||||
|
||||
This starts a temporary Python TCP relay on `10.100.0.35:32568` forwarding to
|
||||
`10.100.0.48:32568`, runs the native harness against `10.100.0.35`, pulls back
|
||||
the relay log, and cleans up the remote process. The relay logs connection
|
||||
events, byte counts, and 16-byte hex prefixes only.
|
||||
|
||||
Current relay result: the native client reaches the remote Net.TCP/WCF preamble
|
||||
and authentication exchange, but the relayed session is rejected before
|
||||
`OpenConnection` becomes connected. This gives transport evidence but not query
|
||||
request/response buffers yet. Matching ArchestrA logs identify the relayed
|
||||
target as `Server(10.100.0.35)` and show `Transport with Certificate` security,
|
||||
so the relay is not transparent at the certificate/identity layer.
|
||||
|
||||
For event mode, the rewritten relay shows the same security boundary but a
|
||||
clear endpoint sequence:
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\Run-DebianHistorianRelayCapture.ps1 -SshUser dohertj2 -SshHost 10.100.0.35 -TargetHost 10.100.0.48 -RewriteEndpointHost -Scenario event -OutputPath .\docs\reverse-engineering\debian-relay-rewrite-event-latest.ndjson -HarnessOutputPath .\docs\reverse-engineering\native-trace-harness-via-debian-relay-rewrite-event-latest.json
|
||||
```
|
||||
|
||||
Observed event relay sequence:
|
||||
|
||||
- `/HistCert` preamble with `application/ssl-tls`
|
||||
- TLS-style records
|
||||
- repeated `/Hist-Integrated` preambles with `application/negotiate`
|
||||
- NTLMSSP type 1/2/3 messages
|
||||
- 13-byte server rejection/reset before connected state
|
||||
|
||||
Adding `--direct-connection` for event mode does not bypass the relay; event
|
||||
direct emits the same endpoint sequence and still fails before connected state.
|
||||
|
||||
To test whether native connection flags change that security choice, add extra
|
||||
harness arguments:
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\Run-DebianHistorianRelayCapture.ps1 -SshUser dohertj2 -SshHost 10.100.0.35 -TargetHost 10.100.0.48 -OutputPath .\docs\reverse-engineering\debian-relay-history-direct-latest.ndjson -HarnessOutputPath .\docs\reverse-engineering\native-trace-harness-via-debian-relay-direct-latest.json -HarnessExtraArgs @("--direct-connection")
|
||||
```
|
||||
|
||||
Observed result: once the reverse harness forces the private
|
||||
`directConnection` backing field, the native read succeeds and the relay records
|
||||
only its own startup line. This is useful for native parity snapshots, but it
|
||||
bypasses the remote transport evidence needed for the managed driver.
|
||||
|
||||
To collect Windows packet metadata for the relay path without storing raw
|
||||
payload bytes:
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\Run-PktmonDebianRelayCapture.ps1 -Scenario history -SshUser dohertj2 -SshHost 10.100.0.35 -TargetHost 10.100.0.48 -TagName OtOpcUaParityTest_001.Counter -LookbackMinutes 1440 -MaxRows 1 -OutputPrefix .\docs\reverse-engineering\pktmon-debian-relay-history-latest
|
||||
```
|
||||
|
||||
This script:
|
||||
|
||||
- adds a pktmon TCP filter for `10.100.0.35:32568`
|
||||
- starts pktmon with flags `0x00e`, intentionally omitting raw packet bytes
|
||||
- runs the Debian relay harness scenario
|
||||
- converts the ETL to text/stat metadata
|
||||
- deletes the ETL file before writing the summary
|
||||
|
||||
Current pktmon result: the metadata capture records TCP flows between
|
||||
`10.100.0.48` and `10.100.0.35:32568` with no payload bytes retained. This is
|
||||
useful for timing, directions, ports, and reset behavior, but still not enough
|
||||
to reconstruct query buffers.
|
||||
|
||||
To correlate relay TCP ownership on Windows while running Frida system-boundary
|
||||
hooks:
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\Attach-SystemBoundaryViaDebianRelay.ps1 -Scenario history -SshUser dohertj2 -SshHost 10.100.0.35 -TargetHost 10.100.0.48 -TagName OtOpcUaParityTest_001.Counter -LookbackMinutes 1440 -MaxRows 1 -OutputPath .\docs\reverse-engineering\system-boundary-via-debian-relay-history-latest.ndjson
|
||||
```
|
||||
|
||||
Current system-boundary relay result: the Windows TCP owner monitor attributes
|
||||
the established relay connection to `AVEVA.Historian.NativeTraceHarness`, but
|
||||
Frida hooks on exported Winsock calls, `WSAIoctl`, `mswsock`, file APIs, and
|
||||
`NtDeviceIoControlFile` still record no transport callbacks. Treat this as
|
||||
negative evidence for further export-level Frida work.
|
||||
|
||||
For each scenario:
|
||||
|
||||
1. Start Wireshark and API Monitor.
|
||||
2. Emit a `mark <scenario-name>` line and note the timestamp.
|
||||
3. Run the same operation through the native SDK/client.
|
||||
4. Save raw captures outside the repo.
|
||||
5. Add only sanitized binary frames or decoded notes under `fixtures/protocol`.
|
||||
|
||||
The production SDK must not reference this harness or any AVEVA native binary.
|
||||
|
||||
After a capture is sanitized, add parser tests before enabling the corresponding
|
||||
operation in `Historian2020ProtocolDialect`.
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"Scenario": "Local integrated full-history read",
|
||||
"RawArtifact": "artifacts/reverse-engineering/instrumented-cclientbase-open-correlation",
|
||||
"InstrumentedTokens": {
|
||||
"HistorianClient.OpenConnection": "0x060055D8",
|
||||
"aahClientCommon.CClientBase.OpenConnection": "0x0600388D",
|
||||
"Query.StartDataQuery": "0x0600574B",
|
||||
"aahClientCommon.CClientCommon.StartQuery": "0x06002E86",
|
||||
"CRetrievalConnectionWCF.StartQuery2": "0x06004A0D"
|
||||
},
|
||||
"Observed": {
|
||||
"OpenConnectionSuccess": 1,
|
||||
"LegacyClientHandle": 2,
|
||||
"CClientBaseInitialHandle": 0,
|
||||
"CClientBasePrimaryOpenRecords": 0,
|
||||
"CClientBaseSecondaryOpenSuccess": 1,
|
||||
"CClientBaseHandleAfterSecondaryOpen": "<transient-redacted>",
|
||||
"StartDataQueryClientHandleCandidate": 2,
|
||||
"CClientCommonClientHandleForConnection": "<same-as-CClientBaseHandleAfterSecondaryOpen>",
|
||||
"WcfStartQuery2ClientHandle": "<same-as-CClientBaseHandleAfterSecondaryOpen>",
|
||||
"WcfStartQuery2Success": 1,
|
||||
"WcfStartQuery2ServerQueryHandle": "<transient-redacted>",
|
||||
"CClientCommonQueryHandleAfterCall": "<same-as-WcfStartQuery2ServerQueryHandle>",
|
||||
"ManagedGetNextRowQueryHandle": 1
|
||||
},
|
||||
"Hashes": {
|
||||
"WcfStartQuery2ResponseSha256": "4c062b5ce8181308f0f46bfd8c6088acb52e6ade94401651b7d3ccc8952edfb5",
|
||||
"WcfGetNextResultSha256": "d90f74b9d83eb615a0c16d3241e5884e65abfb31d28cce110dbf37b35a17def5",
|
||||
"ManagedGetNextRowMemorySha256": "316893e5f783819793b8a2f68c0c4b1d70bbbf5a3201b054d4b43ffbe6bed15c"
|
||||
},
|
||||
"Conclusion": "CClientBase.OpenConnection starts with the vtable offset 24 handle equal to zero. The primary-open instrumentation did not fire on this local integrated path. The secondary open branch succeeds and the vtable offset 24 handle after that branch exactly matches the later CClientCommon.StartQuery client handle and WCF StartQuery2 client handle. The next reverse-engineering target is the secondary open vtable call at CClientBase.OpenConnection IL offset 0x06D4 and its request/response contract."
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"Scenario": "Local integrated full-history read",
|
||||
"RawArtifact": "artifacts/reverse-engineering/instrumented-cclientcommon-startquery-correlation",
|
||||
"InstrumentedTokens": {
|
||||
"HistorianClient.OpenConnection": "0x060055D8",
|
||||
"Query.StartDataQuery": "0x0600574B",
|
||||
"aahClientCommon.CClientCommon.StartQuery": "0x06002E86",
|
||||
"CRetrievalConnectionWCF.StartQuery2": "0x06004A0D",
|
||||
"CRetrievalConnectionWCF.GetNextQueryResultBuffer2": "0x06004A0E",
|
||||
"HistorianClient.GetNextRow<DataQueryResultRow>": "0x0600588D"
|
||||
},
|
||||
"Observed": {
|
||||
"OpenConnectionSuccess": 1,
|
||||
"LegacyClientHandle": 2,
|
||||
"StartDataQueryClientHandleCandidate": 2,
|
||||
"CClientCommonQueryHandleBeforeCall": 0,
|
||||
"CClientCommonClientHandleForConnection": "<transient-redacted>",
|
||||
"WcfStartQuery2ClientHandle": "<same-as-CClientCommonClientHandleForConnection>",
|
||||
"WcfStartQuery2Success": 1,
|
||||
"WcfStartQuery2QueryRequestType": 1,
|
||||
"WcfStartQuery2RequestSize": 251,
|
||||
"WcfStartQuery2ResponseSize": 31,
|
||||
"WcfStartQuery2ResponseSha256": "4c062b5ce8181308f0f46bfd8c6088acb52e6ade94401651b7d3ccc8952edfb5",
|
||||
"WcfStartQuery2ServerQueryHandle": "<transient-redacted>",
|
||||
"CClientCommonCallSuccess": 1,
|
||||
"CClientCommonQueryHandleAfterCall": "<same-as-WcfStartQuery2ServerQueryHandle>",
|
||||
"WcfGetNextClientHandle": "<same-as-CClientCommonClientHandleForConnection>",
|
||||
"WcfGetNextQueryHandle": "<same-as-WcfStartQuery2ServerQueryHandle>",
|
||||
"WcfGetNextResultSize": 570,
|
||||
"WcfGetNextResultSha256": "1bb1e1f55b226ed2e10f0a251d1a65be0daf6ecf7bff05ab9bd11e5870c5e615",
|
||||
"ManagedGetNextRowQueryHandle": 1,
|
||||
"ManagedGetNextRowMemorySha256": "96f4f04f56531d749f17e103f620f45a23d51f63dfcaba49b02a8e12a317efa4"
|
||||
},
|
||||
"Conclusion": "The successful read path does not use CRetrieval/CSrvRetrieval/CRetrievalConsoleClient for the WCF retrieval handle. aahClientCommon.CClientCommon.StartQuery obtains the accepted /Retr client handle from a CClient vtable call at IL offset 0x01A3, then passes it into the WCF StartQuery2 vtable call at IL offset 0x01BC. The server query handle written by WCF StartQuery2 is copied back through the same queryHandle pointer."
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"GeneratedUtc": "2026-05-02T23:00:03Z",
|
||||
"Scenario": "native integrated history read",
|
||||
"Sanitized": true,
|
||||
"InstrumentedMethods": {
|
||||
"CServerClient.GetHandle": "0x060017F9",
|
||||
"HistorianClient.OpenConnection": "0x060055D8",
|
||||
"Query.StartDataQuery": "0x0600574B",
|
||||
"CRetrievalConnectionWCF.StartQuery2": "0x06004A0D",
|
||||
"CRetrievalConnectionWCF.GetNextQueryResultBuffer2": "0x06004A0E",
|
||||
"HistorianClient.GetNextRow<DataQueryResultRow>": "0x0600588D"
|
||||
},
|
||||
"ObservedValues": {
|
||||
"CServerClientGetHandleRecords": 0,
|
||||
"HistorianClientOpenConnectionHandle": 2,
|
||||
"StartDataQueryClientHandleCandidate": 2,
|
||||
"WcfStartQuery2ClientHandle": "<transient-redacted>",
|
||||
"WcfStartQuery2ServerQueryHandle": "<transient-redacted>",
|
||||
"WcfStartQuery2Success": 1,
|
||||
"WcfGetNextQueryResultBuffer2Success": 1
|
||||
},
|
||||
"Conclusion": "CServerClient.GetHandle is not called on this successful local history read path. The transient WCF retrieval client handle is therefore not obtained through this accessor; the next target should be direct field access or the virtual/calli path through CRetrieval.StartQuery2 and CSrvRetrievalConnection.StartQuery."
|
||||
}
|
||||
@@ -0,0 +1,636 @@
|
||||
IL_0000: ldarg.0
|
||||
IL_0001: ldarg.s 23
|
||||
IL_0003: call 0x060004C7 CMetadataNamespace.{ctor}
|
||||
IL_0008: pop
|
||||
IL_0009: ldarg.0
|
||||
IL_000A: ldc.i4 208
|
||||
IL_000F: conv.i8
|
||||
IL_0010: add
|
||||
IL_0011: stloc.s 22
|
||||
IL_0013: ldloc.s 22
|
||||
IL_0015: call 0x06000041 QueryColumnSelector.{ctor}
|
||||
IL_001A: pop
|
||||
IL_001B: ldarg.0
|
||||
IL_001C: ldc.i4 232
|
||||
IL_0021: conv.i8
|
||||
IL_0022: add
|
||||
IL_0023: stloc.s 21
|
||||
IL_0025: ldloc.s 21
|
||||
IL_0027: stloc.s 20
|
||||
IL_0029: ldloc.s 20
|
||||
IL_002B: ldc.i4.0
|
||||
IL_002C: conv.i8
|
||||
IL_002D: stind.i8
|
||||
IL_002E: ldloc.s 20
|
||||
IL_0030: ldc.i4.8
|
||||
IL_0031: conv.i8
|
||||
IL_0032: add
|
||||
IL_0033: ldc.i4.0
|
||||
IL_0034: conv.i8
|
||||
IL_0035: stind.i8
|
||||
IL_0036: ldarg.0
|
||||
IL_0037: ldc.i4 264
|
||||
IL_003C: conv.i8
|
||||
IL_003D: add
|
||||
IL_003E: stloc.s 19
|
||||
IL_0040: ldloc.s 19
|
||||
IL_0042: stloc.s 12
|
||||
IL_0044: ldloc.s 12
|
||||
IL_0046: call 0x060000C9 std._String_val<std::_Simple_types<wchar_t> >.{ctor}
|
||||
IL_004B: pop
|
||||
IL_004C: ldloc.s 12
|
||||
IL_004E: call 0x06000074 std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >._Tidy_init
|
||||
IL_0053: leave.s IL_0063
|
||||
IL_0055: ldftn 0x06000064 std._Compressed_pair<std::allocator<wchar_t>,std::_String_val<std::_Simple_types<wchar_t> >,1>.{dtor}
|
||||
IL_005B: ldloc.s 12
|
||||
IL_005D: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_0062: endfinally
|
||||
IL_0063: nop
|
||||
IL_0064: ldarg.0
|
||||
IL_0065: ldc.i4 300
|
||||
IL_006A: conv.i8
|
||||
IL_006B: add
|
||||
IL_006C: stloc.s 6
|
||||
IL_006E: ldloc.s 6
|
||||
IL_0070: call 0x06000325 CQTIFlags.{ctor}
|
||||
IL_0075: pop
|
||||
IL_0076: ldarg.0
|
||||
IL_0077: ldc.i4 312
|
||||
IL_007C: conv.i8
|
||||
IL_007D: add
|
||||
IL_007E: stloc.s 18
|
||||
IL_0080: ldloc.s 18
|
||||
IL_0082: stloc.s 11
|
||||
IL_0084: ldloc.s 11
|
||||
IL_0086: call 0x060000C9 std._String_val<std::_Simple_types<wchar_t> >.{ctor}
|
||||
IL_008B: pop
|
||||
IL_008C: ldloc.s 11
|
||||
IL_008E: call 0x06000074 std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >._Tidy_init
|
||||
IL_0093: leave.s IL_00A3
|
||||
IL_0095: ldftn 0x06000064 std._Compressed_pair<std::allocator<wchar_t>,std::_String_val<std::_Simple_types<wchar_t> >,1>.{dtor}
|
||||
IL_009B: ldloc.s 11
|
||||
IL_009D: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_00A2: endfinally
|
||||
IL_00A3: nop
|
||||
IL_00A4: ldarg.0
|
||||
IL_00A5: ldc.i4 344
|
||||
IL_00AA: conv.i8
|
||||
IL_00AB: add
|
||||
IL_00AC: stloc.s 17
|
||||
IL_00AE: ldloc.s 17
|
||||
IL_00B0: stloc.s 10
|
||||
IL_00B2: ldloc.s 10
|
||||
IL_00B4: call 0x060000C9 std._String_val<std::_Simple_types<wchar_t> >.{ctor}
|
||||
IL_00B9: pop
|
||||
IL_00BA: ldloc.s 10
|
||||
IL_00BC: call 0x06000074 std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >._Tidy_init
|
||||
IL_00C1: leave.s IL_00D1
|
||||
IL_00C3: ldftn 0x06000064 std._Compressed_pair<std::allocator<wchar_t>,std::_String_val<std::_Simple_types<wchar_t> >,1>.{dtor}
|
||||
IL_00C9: ldloc.s 10
|
||||
IL_00CB: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_00D0: endfinally
|
||||
IL_00D1: nop
|
||||
IL_00D2: ldarg.0
|
||||
IL_00D3: ldc.i4 376
|
||||
IL_00D8: conv.i8
|
||||
IL_00D9: add
|
||||
IL_00DA: stloc.s 9
|
||||
IL_00DC: ldloc.s 9
|
||||
IL_00DE: call 0x06000622 std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >.{ctor}
|
||||
IL_00E3: pop
|
||||
IL_00E4: ldloc.s 9
|
||||
IL_00E6: ldc.i4.s 32
|
||||
IL_00E8: conv.i8
|
||||
IL_00E9: add
|
||||
IL_00EA: ldc.i4.0
|
||||
IL_00EB: stind.i4
|
||||
IL_00EC: leave.s IL_00FC
|
||||
IL_00EE: ldftn 0x0600005D std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >.{dtor}
|
||||
IL_00F4: ldloc.s 9
|
||||
IL_00F6: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_00FB: endfinally
|
||||
IL_00FC: nop
|
||||
IL_00FD: ldarg.0
|
||||
IL_00FE: ldc.i4 416
|
||||
IL_0103: conv.i8
|
||||
IL_0104: add
|
||||
IL_0105: stloc.s 16
|
||||
IL_0107: ldloc.s 16
|
||||
IL_0109: call 0x06002BA5 CStateCalcSelector.{ctor}
|
||||
IL_010E: pop
|
||||
IL_010F: ldarg.0
|
||||
IL_0110: ldc.i4 456
|
||||
IL_0115: conv.i8
|
||||
IL_0116: add
|
||||
IL_0117: stloc.s 15
|
||||
IL_0119: ldloc.s 15
|
||||
IL_011B: stloc.2
|
||||
IL_011C: ldloc.2
|
||||
IL_011D: ldc.i4.0
|
||||
IL_011E: conv.i8
|
||||
IL_011F: stind.i8
|
||||
IL_0120: ldloc.2
|
||||
IL_0121: ldc.i4.8
|
||||
IL_0122: conv.i8
|
||||
IL_0123: add
|
||||
IL_0124: ldc.i4.0
|
||||
IL_0125: conv.i8
|
||||
IL_0126: stind.i8
|
||||
IL_0127: ldloc.2
|
||||
IL_0128: ldc.i4.s 16
|
||||
IL_012A: conv.i8
|
||||
IL_012B: add
|
||||
IL_012C: ldc.i4.0
|
||||
IL_012D: conv.i8
|
||||
IL_012E: stind.i8
|
||||
IL_012F: ldarg.0
|
||||
IL_0130: ldc.i4 480
|
||||
IL_0135: conv.i8
|
||||
IL_0136: add
|
||||
IL_0137: stloc.s 14
|
||||
IL_0139: ldloc.s 14
|
||||
IL_013B: stloc.2
|
||||
IL_013C: ldloc.2
|
||||
IL_013D: ldc.i4.0
|
||||
IL_013E: conv.i8
|
||||
IL_013F: stind.i8
|
||||
IL_0140: ldloc.2
|
||||
IL_0141: ldc.i4.8
|
||||
IL_0142: conv.i8
|
||||
IL_0143: add
|
||||
IL_0144: ldc.i4.0
|
||||
IL_0145: conv.i8
|
||||
IL_0146: stind.i8
|
||||
IL_0147: ldloc.2
|
||||
IL_0148: ldc.i4.s 16
|
||||
IL_014A: conv.i8
|
||||
IL_014B: add
|
||||
IL_014C: ldc.i4.0
|
||||
IL_014D: conv.i8
|
||||
IL_014E: stind.i8
|
||||
IL_014F: ldarg.0
|
||||
IL_0150: ldc.i4 504
|
||||
IL_0155: conv.i8
|
||||
IL_0156: add
|
||||
IL_0157: ldarg.s 31
|
||||
IL_0159: stind.i4
|
||||
IL_015A: ldarg.0
|
||||
IL_015B: ldc.i4 508
|
||||
IL_0160: conv.i8
|
||||
IL_0161: add
|
||||
IL_0162: ldarg.s 24
|
||||
IL_0164: stind.i4
|
||||
IL_0165: ldarg.0
|
||||
IL_0166: ldc.i4 512
|
||||
IL_016B: conv.i8
|
||||
IL_016C: add
|
||||
IL_016D: ldarg.s 25
|
||||
IL_016F: stind.i4
|
||||
IL_0170: ldarg.0
|
||||
IL_0171: ldc.i4 516
|
||||
IL_0176: conv.i8
|
||||
IL_0177: add
|
||||
IL_0178: ldarg.s 22
|
||||
IL_017A: stind.i2
|
||||
IL_017B: ldarg.0
|
||||
IL_017C: ldc.i4 520
|
||||
IL_0181: conv.i8
|
||||
IL_0182: add
|
||||
IL_0183: stloc.s 8
|
||||
IL_0185: ldloc.s 8
|
||||
IL_0187: ldarg.s 27
|
||||
IL_0189: call 0x0600005F std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >.{ctor}
|
||||
IL_018E: pop
|
||||
IL_018F: ldloc.s 8
|
||||
IL_0191: ldc.i4.s 32
|
||||
IL_0193: conv.i8
|
||||
IL_0194: add
|
||||
IL_0195: ldarg.s 27
|
||||
IL_0197: ldc.i4.s 32
|
||||
IL_0199: conv.i8
|
||||
IL_019A: add
|
||||
IL_019B: call 0x06000568 std.vector<SEndpoint,std::allocator<SEndpoint> >.{ctor}
|
||||
IL_01A0: pop
|
||||
IL_01A1: leave.s IL_01B1
|
||||
IL_01A3: ldftn 0x0600005D std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >.{dtor}
|
||||
IL_01A9: ldloc.s 8
|
||||
IL_01AB: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_01B0: endfinally
|
||||
IL_01B1: nop
|
||||
IL_01B2: ldarg.0
|
||||
IL_01B3: ldc.i4 576
|
||||
IL_01B8: conv.i8
|
||||
IL_01B9: add
|
||||
IL_01BA: stloc.s 7
|
||||
IL_01BC: ldloc.s 7
|
||||
IL_01BE: ldarg.s 26
|
||||
IL_01C0: call 0x0600005F std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >.{ctor}
|
||||
IL_01C5: pop
|
||||
IL_01C6: ldloc.s 7
|
||||
IL_01C8: ldc.i4.s 32
|
||||
IL_01CA: conv.i8
|
||||
IL_01CB: add
|
||||
IL_01CC: ldarg.s 26
|
||||
IL_01CE: ldc.i4.s 32
|
||||
IL_01D0: conv.i8
|
||||
IL_01D1: add
|
||||
IL_01D2: call 0x06000568 std.vector<SEndpoint,std::allocator<SEndpoint> >.{ctor}
|
||||
IL_01D7: pop
|
||||
IL_01D8: leave.s IL_01E8
|
||||
IL_01DA: ldftn 0x0600005D std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >.{dtor}
|
||||
IL_01E0: ldloc.s 7
|
||||
IL_01E2: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_01E7: endfinally
|
||||
IL_01E8: nop
|
||||
IL_01E9: ldarg.0
|
||||
IL_01EA: ldc.i4 632
|
||||
IL_01EF: conv.i8
|
||||
IL_01F0: add
|
||||
IL_01F1: ldarg.s 30
|
||||
IL_01F3: stind.i2
|
||||
IL_01F4: ldarg.0
|
||||
IL_01F5: ldc.i4 636
|
||||
IL_01FA: conv.i8
|
||||
IL_01FB: add
|
||||
IL_01FC: ldarg.s 28
|
||||
IL_01FE: stind.i4
|
||||
IL_01FF: ldarg.0
|
||||
IL_0200: ldc.i4 640
|
||||
IL_0205: conv.i8
|
||||
IL_0206: add
|
||||
IL_0207: ldarg.s 29
|
||||
IL_0209: call 0x06002C1C AutoSummaryParameters.{ctor}
|
||||
IL_020E: pop
|
||||
IL_020F: ldloc.s 22
|
||||
IL_0211: ldarg.1
|
||||
IL_0212: call 0x06000043 QueryColumnSelector.=
|
||||
IL_0217: pop
|
||||
IL_0218: ldarg.0
|
||||
IL_0219: ldc.i4 216
|
||||
IL_021E: conv.i8
|
||||
IL_021F: add
|
||||
IL_0220: ldarg.2
|
||||
IL_0221: stind.i4
|
||||
IL_0222: ldarg.0
|
||||
IL_0223: ldc.i4 220
|
||||
IL_0228: conv.i8
|
||||
IL_0229: add
|
||||
IL_022A: ldarg.3
|
||||
IL_022B: stind.i4
|
||||
IL_022C: ldarg.0
|
||||
IL_022D: ldc.i4 224
|
||||
IL_0232: conv.i8
|
||||
IL_0233: add
|
||||
IL_0234: ldarg.s 4
|
||||
IL_0236: stind.i4
|
||||
IL_0237: ldloc.s 21
|
||||
IL_0239: ldarg.s 5
|
||||
IL_023B: stind.i8
|
||||
IL_023C: ldarg.0
|
||||
IL_023D: ldc.i4 240
|
||||
IL_0242: conv.i8
|
||||
IL_0243: add
|
||||
IL_0244: ldarg.s 6
|
||||
IL_0246: stind.i8
|
||||
IL_0247: ldarg.0
|
||||
IL_0248: ldc.i4 248
|
||||
IL_024D: conv.i8
|
||||
IL_024E: add
|
||||
IL_024F: ldarg.s 7
|
||||
IL_0251: stind.i8
|
||||
IL_0252: ldarg.0
|
||||
IL_0253: ldc.i4 256
|
||||
IL_0258: conv.i8
|
||||
IL_0259: add
|
||||
IL_025A: ldarg.s 8
|
||||
IL_025C: stind.r4
|
||||
IL_025D: ldarg.0
|
||||
IL_025E: ldc.i4 260
|
||||
IL_0263: conv.i8
|
||||
IL_0264: add
|
||||
IL_0265: ldarg.s 9
|
||||
IL_0267: stind.i4
|
||||
IL_0268: ldarg.s 10
|
||||
IL_026A: stloc.s 5
|
||||
IL_026C: ldarg.s 10
|
||||
IL_026E: unaligned. 1
|
||||
IL_0271: ldind.i2
|
||||
IL_0272: brfalse.s IL_0283
|
||||
IL_0274: ldloc.s 5
|
||||
IL_0276: ldc.i4.2
|
||||
IL_0277: conv.i8
|
||||
IL_0278: add
|
||||
IL_0279: stloc.s 5
|
||||
IL_027B: ldloc.s 5
|
||||
IL_027D: unaligned. 1
|
||||
IL_0280: ldind.i2
|
||||
IL_0281: brtrue.s IL_0274
|
||||
IL_0283: ldloc.s 5
|
||||
IL_0285: ldarg.s 10
|
||||
IL_0287: sub
|
||||
IL_0288: ldc.i4.1
|
||||
IL_0289: shr
|
||||
IL_028A: stloc.s 25
|
||||
IL_028C: ldloc.s 19
|
||||
IL_028E: ldarg.s 10
|
||||
IL_0290: ldloc.s 25
|
||||
IL_0292: call 0x0600005B std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >.assign
|
||||
IL_0297: pop
|
||||
IL_0298: ldarg.s 11
|
||||
IL_029A: ldc.i4.1
|
||||
IL_029B: beq.s IL_02CB
|
||||
IL_029D: ldarg.s 11
|
||||
IL_029F: ldc.i4.4
|
||||
IL_02A0: beq.s IL_02BF
|
||||
IL_02A2: ldarg.s 11
|
||||
IL_02A4: ldc.i4.5
|
||||
IL_02A5: beq.s IL_02B3
|
||||
IL_02A7: ldarg.0
|
||||
IL_02A8: ldc.i4 228
|
||||
IL_02AD: conv.i8
|
||||
IL_02AE: add
|
||||
IL_02AF: ldc.i4.0
|
||||
IL_02B0: stind.i4
|
||||
IL_02B1: br.s IL_02D5
|
||||
IL_02B3: ldarg.0
|
||||
IL_02B4: ldc.i4 228
|
||||
IL_02B9: conv.i8
|
||||
IL_02BA: add
|
||||
IL_02BB: ldc.i4.5
|
||||
IL_02BC: stind.i4
|
||||
IL_02BD: br.s IL_02D5
|
||||
IL_02BF: ldarg.0
|
||||
IL_02C0: ldc.i4 228
|
||||
IL_02C5: conv.i8
|
||||
IL_02C6: add
|
||||
IL_02C7: ldc.i4.4
|
||||
IL_02C8: stind.i4
|
||||
IL_02C9: br.s IL_02D5
|
||||
IL_02CB: ldarg.0
|
||||
IL_02CC: ldc.i4 228
|
||||
IL_02D1: conv.i8
|
||||
IL_02D2: add
|
||||
IL_02D3: ldc.i4.1
|
||||
IL_02D4: stind.i4
|
||||
IL_02D5: ldarg.0
|
||||
IL_02D6: ldc.i4 296
|
||||
IL_02DB: conv.i8
|
||||
IL_02DC: add
|
||||
IL_02DD: ldarg.s 12
|
||||
IL_02DF: stind.i4
|
||||
IL_02E0: ldloc.s 6
|
||||
IL_02E2: stloc.1
|
||||
IL_02E3: ldloc.1
|
||||
IL_02E4: ldarg.s 15
|
||||
IL_02E6: ldc.i4.s 12
|
||||
IL_02E8: shl
|
||||
IL_02E9: ldloc.1
|
||||
IL_02EA: ldind.u2
|
||||
IL_02EB: xor
|
||||
IL_02EC: ldc.i4 4095
|
||||
IL_02F1: and
|
||||
IL_02F2: ldarg.s 15
|
||||
IL_02F4: ldc.i4.s 12
|
||||
IL_02F6: shl
|
||||
IL_02F7: xor
|
||||
IL_02F8: stind.i2
|
||||
IL_02F9: ldloc.s 6
|
||||
IL_02FB: stloc.1
|
||||
IL_02FC: ldloc.1
|
||||
IL_02FD: ldarg.s 14
|
||||
IL_02FF: ldc.i4.8
|
||||
IL_0300: shl
|
||||
IL_0301: ldloc.1
|
||||
IL_0302: ldind.u2
|
||||
IL_0303: xor
|
||||
IL_0304: ldc.i4 3840
|
||||
IL_0309: and
|
||||
IL_030A: ldloc.1
|
||||
IL_030B: ldind.u2
|
||||
IL_030C: xor
|
||||
IL_030D: stind.i2
|
||||
IL_030E: ldarg.s 13
|
||||
IL_0310: ldc.i4 254
|
||||
IL_0315: beq.s IL_031B
|
||||
IL_0317: ldarg.s 13
|
||||
IL_0319: br.s IL_0320
|
||||
IL_031B: ldc.i4 255
|
||||
IL_0320: stloc.s 26
|
||||
IL_0322: ldloc.s 6
|
||||
IL_0324: stloc.1
|
||||
IL_0325: ldloc.1
|
||||
IL_0326: dup
|
||||
IL_0327: ldind.u2
|
||||
IL_0328: ldloca.s 26
|
||||
IL_032A: ldind.i4
|
||||
IL_032B: xor
|
||||
IL_032C: ldc.i4 255
|
||||
IL_0331: and
|
||||
IL_0332: ldloc.1
|
||||
IL_0333: ldind.u2
|
||||
IL_0334: xor
|
||||
IL_0335: stind.i2
|
||||
IL_0336: ldarg.s 16
|
||||
IL_0338: stloc.3
|
||||
IL_0339: ldarg.s 16
|
||||
IL_033B: unaligned. 1
|
||||
IL_033E: ldind.i2
|
||||
IL_033F: brfalse.s IL_034D
|
||||
IL_0341: ldloc.3
|
||||
IL_0342: ldc.i4.2
|
||||
IL_0343: conv.i8
|
||||
IL_0344: add
|
||||
IL_0345: stloc.3
|
||||
IL_0346: ldloc.3
|
||||
IL_0347: unaligned. 1
|
||||
IL_034A: ldind.i2
|
||||
IL_034B: brtrue.s IL_0341
|
||||
IL_034D: ldloc.3
|
||||
IL_034E: ldarg.s 16
|
||||
IL_0350: sub
|
||||
IL_0351: ldc.i4.1
|
||||
IL_0352: shr
|
||||
IL_0353: stloc.s 24
|
||||
IL_0355: ldloc.s 18
|
||||
IL_0357: ldarg.s 16
|
||||
IL_0359: ldloc.s 24
|
||||
IL_035B: call 0x0600005B std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >.assign
|
||||
IL_0360: pop
|
||||
IL_0361: ldarg.s 17
|
||||
IL_0363: brfalse.s IL_038B
|
||||
IL_0365: ldarg.s 17
|
||||
IL_0367: stloc.0
|
||||
IL_0368: ldarg.s 17
|
||||
IL_036A: unaligned. 1
|
||||
IL_036D: ldind.i2
|
||||
IL_036E: brfalse.s IL_037C
|
||||
IL_0370: ldloc.0
|
||||
IL_0371: ldc.i4.2
|
||||
IL_0372: conv.i8
|
||||
IL_0373: add
|
||||
IL_0374: stloc.0
|
||||
IL_0375: ldloc.0
|
||||
IL_0376: unaligned. 1
|
||||
IL_0379: ldind.i2
|
||||
IL_037A: brtrue.s IL_0370
|
||||
IL_037C: ldloc.0
|
||||
IL_037D: ldarg.s 17
|
||||
IL_037F: sub
|
||||
IL_0380: ldc.i4.1
|
||||
IL_0381: shr
|
||||
IL_0382: ldc.i4.0
|
||||
IL_0383: conv.i8
|
||||
IL_0384: ble.un.s IL_038B
|
||||
IL_0386: ldarg.s 17
|
||||
IL_0388: stloc.0
|
||||
IL_0389: br.s IL_0391
|
||||
IL_038B: ldsflda 0x04007BC9 ??_C@_1BC@PKKBNPFC@?$AAN?$AAo?$AAF?$AAi?$AAl?$AAt?$AAe?$AAr@
|
||||
IL_0390: stloc.0
|
||||
IL_0391: ldloc.0
|
||||
IL_0392: stloc.s 4
|
||||
IL_0394: ldloc.0
|
||||
IL_0395: unaligned. 1
|
||||
IL_0398: ldind.i2
|
||||
IL_0399: brfalse.s IL_03AA
|
||||
IL_039B: ldloc.s 4
|
||||
IL_039D: ldc.i4.2
|
||||
IL_039E: conv.i8
|
||||
IL_039F: add
|
||||
IL_03A0: stloc.s 4
|
||||
IL_03A2: ldloc.s 4
|
||||
IL_03A4: unaligned. 1
|
||||
IL_03A7: ldind.i2
|
||||
IL_03A8: brtrue.s IL_039B
|
||||
IL_03AA: ldloc.s 4
|
||||
IL_03AC: ldloc.0
|
||||
IL_03AD: sub
|
||||
IL_03AE: ldc.i4.1
|
||||
IL_03AF: shr
|
||||
IL_03B0: stloc.s 23
|
||||
IL_03B2: ldloc.s 17
|
||||
IL_03B4: ldloc.0
|
||||
IL_03B5: ldloc.s 23
|
||||
IL_03B7: call 0x0600005B std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >.assign
|
||||
IL_03BC: pop
|
||||
IL_03BD: ldarg.0
|
||||
IL_03BE: ldc.i4 408
|
||||
IL_03C3: conv.i8
|
||||
IL_03C4: add
|
||||
IL_03C5: ldarg.s 18
|
||||
IL_03C7: stind.i4
|
||||
IL_03C8: ldloc.s 16
|
||||
IL_03CA: ldarg.s 19
|
||||
IL_03CC: stind.i4
|
||||
IL_03CD: ldloc.s 15
|
||||
IL_03CF: stloc.s 13
|
||||
IL_03D1: ldloc.s 13
|
||||
IL_03D3: ldarg.s 20
|
||||
IL_03D5: beq.s IL_03E7
|
||||
IL_03D7: ldloc.s 13
|
||||
IL_03D9: ldarg.s 20
|
||||
IL_03DB: ldind.i8
|
||||
IL_03DC: ldarg.s 20
|
||||
IL_03DE: ldc.i4.8
|
||||
IL_03DF: conv.i8
|
||||
IL_03E0: add
|
||||
IL_03E1: ldind.i8
|
||||
IL_03E2: call 0x0600273E std.vector<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >,std::allocator<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > > >.assign<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > *,0>
|
||||
IL_03E7: ldloc.s 14
|
||||
IL_03E9: ldarg.s 21
|
||||
IL_03EB: call 0x0600268F std.vector<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >,std::allocator<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > > >.=
|
||||
IL_03F0: pop
|
||||
IL_03F1: leave.s IL_0407
|
||||
IL_03F3: ldftn 0x06002C1A AutoSummaryParameters.{dtor}
|
||||
IL_03F9: ldarg.0
|
||||
IL_03FA: ldc.i4 640
|
||||
IL_03FF: conv.i8
|
||||
IL_0400: add
|
||||
IL_0401: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_0406: endfinally
|
||||
IL_0407: leave.s IL_041D
|
||||
IL_0409: ldftn 0x06000443 SRedundantEndpoint.{dtor}
|
||||
IL_040F: ldarg.0
|
||||
IL_0410: ldc.i4 576
|
||||
IL_0415: conv.i8
|
||||
IL_0416: add
|
||||
IL_0417: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_041C: endfinally
|
||||
IL_041D: leave.s IL_0433
|
||||
IL_041F: ldftn 0x06000443 SRedundantEndpoint.{dtor}
|
||||
IL_0425: ldarg.0
|
||||
IL_0426: ldc.i4 520
|
||||
IL_042B: conv.i8
|
||||
IL_042C: add
|
||||
IL_042D: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_0432: endfinally
|
||||
IL_0433: leave.s IL_0449
|
||||
IL_0435: ldftn 0x0600105E std.vector<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >,std::allocator<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > > >.{dtor}
|
||||
IL_043B: ldarg.0
|
||||
IL_043C: ldc.i4 480
|
||||
IL_0441: conv.i8
|
||||
IL_0442: add
|
||||
IL_0443: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_0448: endfinally
|
||||
IL_0449: leave.s IL_045F
|
||||
IL_044B: ldftn 0x0600105E std.vector<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >,std::allocator<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > > >.{dtor}
|
||||
IL_0451: ldarg.0
|
||||
IL_0452: ldc.i4 456
|
||||
IL_0457: conv.i8
|
||||
IL_0458: add
|
||||
IL_0459: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_045E: endfinally
|
||||
IL_045F: leave.s IL_0475
|
||||
IL_0461: ldftn 0x06002BAF CStateCalcSelector.{dtor}
|
||||
IL_0467: ldarg.0
|
||||
IL_0468: ldc.i4 416
|
||||
IL_046D: conv.i8
|
||||
IL_046E: add
|
||||
IL_046F: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_0474: endfinally
|
||||
IL_0475: leave.s IL_048B
|
||||
IL_0477: ldftn 0x060004D6 CValueSelector.{dtor}
|
||||
IL_047D: ldarg.0
|
||||
IL_047E: ldc.i4 376
|
||||
IL_0483: conv.i8
|
||||
IL_0484: add
|
||||
IL_0485: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_048A: endfinally
|
||||
IL_048B: leave.s IL_04A1
|
||||
IL_048D: ldftn 0x0600005D std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >.{dtor}
|
||||
IL_0493: ldarg.0
|
||||
IL_0494: ldc.i4 344
|
||||
IL_0499: conv.i8
|
||||
IL_049A: add
|
||||
IL_049B: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_04A0: endfinally
|
||||
IL_04A1: leave.s IL_04B7
|
||||
IL_04A3: ldftn 0x0600005D std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >.{dtor}
|
||||
IL_04A9: ldarg.0
|
||||
IL_04AA: ldc.i4 312
|
||||
IL_04AF: conv.i8
|
||||
IL_04B0: add
|
||||
IL_04B1: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_04B6: endfinally
|
||||
IL_04B7: leave.s IL_04CD
|
||||
IL_04B9: ldftn 0x0600005D std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >.{dtor}
|
||||
IL_04BF: ldarg.0
|
||||
IL_04C0: ldc.i4 264
|
||||
IL_04C5: conv.i8
|
||||
IL_04C6: add
|
||||
IL_04C7: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_04CC: endfinally
|
||||
IL_04CD: leave.s IL_04E3
|
||||
IL_04CF: ldftn 0x06000044 QueryColumnSelector.{dtor}
|
||||
IL_04D5: ldarg.0
|
||||
IL_04D6: ldc.i4 208
|
||||
IL_04DB: conv.i8
|
||||
IL_04DC: add
|
||||
IL_04DD: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_04E2: endfinally
|
||||
IL_04E3: leave.s IL_04F2
|
||||
IL_04E5: ldftn 0x06002598 CMetadataNamespace.{dtor}
|
||||
IL_04EB: ldarg.0
|
||||
IL_04EC: call 0x06005C0F ___CxxCallUnwindDtor
|
||||
IL_04F1: endfinally
|
||||
IL_04F2: ldarg.0
|
||||
IL_04F3: ret
|
||||
@@ -0,0 +1 @@
|
||||
721220
|
||||
@@ -0,0 +1,561 @@
|
||||
{
|
||||
"Path": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientManaged.dll",
|
||||
"Filter": "0x06005965",
|
||||
"IsILOnly": false,
|
||||
"IsMixedMode": true,
|
||||
"Methods": [
|
||||
{
|
||||
"DeclaringType": "\u003CModule\u003E",
|
||||
"Name": {
|
||||
"String": "HistorianClient.GetNextRow\u003Cclass EventQueryResultRow\u003E",
|
||||
"Data": "SGlzdG9yaWFuQ2xpZW50LkdldE5leHRSb3c8Y2xhc3MgRXZlbnRRdWVyeVJlc3VsdFJvdz4=",
|
||||
"Length": 53,
|
||||
"DataLength": 53
|
||||
},
|
||||
"Token": "0x06005965",
|
||||
"Rva": "0x00430E10",
|
||||
"IsStatic": true,
|
||||
"IsPublic": false,
|
||||
"HasBody": true,
|
||||
"InstructionCount": 81,
|
||||
"Locals": [
|
||||
{
|
||||
"Index": 0,
|
||||
"Type": "System.Boolean"
|
||||
},
|
||||
{
|
||||
"Index": 1,
|
||||
"Type": "SError/value"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Type": "std.shared_ptr\u003CQuery\u003E"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Type": "System.UInt32"
|
||||
}
|
||||
],
|
||||
"Calls": [
|
||||
{
|
||||
"Offset": "0x0006",
|
||||
"OpCode": "call",
|
||||
"Operand": "std.shared_ptr\u003CQuery\u003E* modreq(System.Runtime.CompilerServices.IsUdtReturn) modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::HistorianClient.GetQuery(HistorianClient* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),std.shared_ptr\u003CQuery\u003E*,System.UInt32 modopt(System.Runtime.CompilerServices.IsLong))",
|
||||
"Token": "0x060055C5"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0033",
|
||||
"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": "0x0056",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Boolean modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::Query.GetNextQueryResultRow\u003Cclass EventQueryResultRow\u003E(Query* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),EventQueryResultRow*,SError* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": "0x0600597A"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0066",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0078",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std._Ref_count_base._Decref(std._Ref_count_base* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06000137"
|
||||
}
|
||||
],
|
||||
"Instructions": [
|
||||
{
|
||||
"Offset": "0x0000",
|
||||
"OpCode": "ldc.i4.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0001",
|
||||
"OpCode": "stloc.3",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0002",
|
||||
"OpCode": "ldarg.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0003",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0005",
|
||||
"OpCode": "ldarg.1",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0006",
|
||||
"OpCode": "call",
|
||||
"Operand": "std.shared_ptr\u003CQuery\u003E* modreq(System.Runtime.CompilerServices.IsUdtReturn) modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::HistorianClient.GetQuery(HistorianClient* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),std.shared_ptr\u003CQuery\u003E*,System.UInt32 modopt(System.Runtime.CompilerServices.IsLong))",
|
||||
"Token": "0x060055C5"
|
||||
},
|
||||
{
|
||||
"Offset": "0x000B",
|
||||
"OpCode": "pop",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x000C",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x000E",
|
||||
"OpCode": "ldind.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x000F",
|
||||
"OpCode": "ldc.i4.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0010",
|
||||
"OpCode": "conv.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0011",
|
||||
"OpCode": "bne.un.s",
|
||||
"Operand": "IL_0016: ldc.i4.1",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0013",
|
||||
"OpCode": "ldc.i4.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0014",
|
||||
"OpCode": "br.s",
|
||||
"Operand": "IL_0017: conv.u1",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0016",
|
||||
"OpCode": "ldc.i4.1",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0017",
|
||||
"OpCode": "conv.u1",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0018",
|
||||
"OpCode": "brtrue.s",
|
||||
"Operand": "IL_0051: ldloca.s V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x001A",
|
||||
"OpCode": "ldarg.1",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x001B",
|
||||
"OpCode": "ldc.i4.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x001C",
|
||||
"OpCode": "bne.un.s",
|
||||
"Operand": "IL_0022: ldc.i4.s 51",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x001E",
|
||||
"OpCode": "ldc.i4.s",
|
||||
"Operand": "30",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0020",
|
||||
"OpCode": "br.s",
|
||||
"Operand": "IL_0024: stloc.1",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0022",
|
||||
"OpCode": "ldc.i4.s",
|
||||
"Operand": "51",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0024",
|
||||
"OpCode": "stloc.1",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0025",
|
||||
"OpCode": "ldarg.3",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0026",
|
||||
"OpCode": "ldc.i4.s",
|
||||
"Operand": "12",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0028",
|
||||
"OpCode": "conv.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0029",
|
||||
"OpCode": "add",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x002A",
|
||||
"OpCode": "ldc.i4.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x002B",
|
||||
"OpCode": "stind.i4",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x002C",
|
||||
"OpCode": "ldarg.3",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x002D",
|
||||
"OpCode": "ldc.i4.8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x002E",
|
||||
"OpCode": "conv.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x002F",
|
||||
"OpCode": "add",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0030",
|
||||
"OpCode": "ldc.i4.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0031",
|
||||
"OpCode": "stind.i4",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0032",
|
||||
"OpCode": "ldarg.3",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0033",
|
||||
"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": "0x0038",
|
||||
"OpCode": "ldarg.3",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0039",
|
||||
"OpCode": "ldc.i4.s",
|
||||
"Operand": "12",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x003B",
|
||||
"OpCode": "conv.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x003C",
|
||||
"OpCode": "add",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x003D",
|
||||
"OpCode": "ldc.i4.4",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x003E",
|
||||
"OpCode": "stind.i4",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x003F",
|
||||
"OpCode": "ldarg.3",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0040",
|
||||
"OpCode": "ldc.i4.8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0041",
|
||||
"OpCode": "conv.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0042",
|
||||
"OpCode": "add",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0043",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_1",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0045",
|
||||
"OpCode": "ldind.i4",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0046",
|
||||
"OpCode": "stind.i4",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0047",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_1",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0049",
|
||||
"OpCode": "ldind.i4",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x004A",
|
||||
"OpCode": "ldc.i4.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x004B",
|
||||
"OpCode": "ceq",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x004D",
|
||||
"OpCode": "conv.u1",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x004E",
|
||||
"OpCode": "stloc.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x004F",
|
||||
"OpCode": "leave.s",
|
||||
"Operand": "IL_006C: ldloca.s V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0051",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0053",
|
||||
"OpCode": "ldind.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0054",
|
||||
"OpCode": "ldarg.2",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0055",
|
||||
"OpCode": "ldarg.3",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0056",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Boolean modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::Query.GetNextQueryResultRow\u003Cclass EventQueryResultRow\u003E(Query* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),EventQueryResultRow*,SError* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": "0x0600597A"
|
||||
},
|
||||
{
|
||||
"Offset": "0x005B",
|
||||
"OpCode": "stloc.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x005C",
|
||||
"OpCode": "leave.s",
|
||||
"Operand": "IL_006C: ldloca.s V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x005E",
|
||||
"OpCode": "ldftn",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std.shared_ptr\u003CQuery\u003E.{dtor}(std.shared_ptr\u003CQuery\u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x0600562A"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0064",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0066",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x006B",
|
||||
"OpCode": "endfinally",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x006C",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x006E",
|
||||
"OpCode": "ldc.i4.8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x006F",
|
||||
"OpCode": "add",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0070",
|
||||
"OpCode": "ldind.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0071",
|
||||
"OpCode": "brfalse.s",
|
||||
"Operand": "IL_007D: ldloc.0",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0073",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0075",
|
||||
"OpCode": "ldc.i4.8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0076",
|
||||
"OpCode": "add",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0077",
|
||||
"OpCode": "ldind.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0078",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std._Ref_count_base._Decref(std._Ref_count_base* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06000137"
|
||||
},
|
||||
{
|
||||
"Offset": "0x007D",
|
||||
"OpCode": "ldloc.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x007E",
|
||||
"OpCode": "ret",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,561 @@
|
||||
{
|
||||
"Path": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientManaged.dll",
|
||||
"Filter": "0x0600588D",
|
||||
"IsILOnly": false,
|
||||
"IsMixedMode": true,
|
||||
"Methods": [
|
||||
{
|
||||
"DeclaringType": "\u003CModule\u003E",
|
||||
"Name": {
|
||||
"String": "HistorianClient.GetNextRow\u003Cclass DataQueryResultRow\u003E",
|
||||
"Data": "SGlzdG9yaWFuQ2xpZW50LkdldE5leHRSb3c8Y2xhc3MgRGF0YVF1ZXJ5UmVzdWx0Um93Pg==",
|
||||
"Length": 52,
|
||||
"DataLength": 52
|
||||
},
|
||||
"Token": "0x0600588D",
|
||||
"Rva": "0x0042F818",
|
||||
"IsStatic": true,
|
||||
"IsPublic": false,
|
||||
"HasBody": true,
|
||||
"InstructionCount": 81,
|
||||
"Locals": [
|
||||
{
|
||||
"Index": 0,
|
||||
"Type": "System.Boolean"
|
||||
},
|
||||
{
|
||||
"Index": 1,
|
||||
"Type": "SError/value"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Type": "std.shared_ptr\u003CQuery\u003E"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Type": "System.UInt32"
|
||||
}
|
||||
],
|
||||
"Calls": [
|
||||
{
|
||||
"Offset": "0x0006",
|
||||
"OpCode": "call",
|
||||
"Operand": "std.shared_ptr\u003CQuery\u003E* modreq(System.Runtime.CompilerServices.IsUdtReturn) modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::HistorianClient.GetQuery(HistorianClient* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),std.shared_ptr\u003CQuery\u003E*,System.UInt32 modopt(System.Runtime.CompilerServices.IsLong))",
|
||||
"Token": "0x060055C5"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0033",
|
||||
"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": "0x0056",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Boolean modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::Query.GetNextQueryResultRow\u003Cclass DataQueryResultRow\u003E(Query* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),DataQueryResultRow*,SError* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": "0x060058AF"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0066",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0078",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std._Ref_count_base._Decref(std._Ref_count_base* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06000137"
|
||||
}
|
||||
],
|
||||
"Instructions": [
|
||||
{
|
||||
"Offset": "0x0000",
|
||||
"OpCode": "ldc.i4.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0001",
|
||||
"OpCode": "stloc.3",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0002",
|
||||
"OpCode": "ldarg.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0003",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0005",
|
||||
"OpCode": "ldarg.1",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0006",
|
||||
"OpCode": "call",
|
||||
"Operand": "std.shared_ptr\u003CQuery\u003E* modreq(System.Runtime.CompilerServices.IsUdtReturn) modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::HistorianClient.GetQuery(HistorianClient* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),std.shared_ptr\u003CQuery\u003E*,System.UInt32 modopt(System.Runtime.CompilerServices.IsLong))",
|
||||
"Token": "0x060055C5"
|
||||
},
|
||||
{
|
||||
"Offset": "0x000B",
|
||||
"OpCode": "pop",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x000C",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x000E",
|
||||
"OpCode": "ldind.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x000F",
|
||||
"OpCode": "ldc.i4.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0010",
|
||||
"OpCode": "conv.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0011",
|
||||
"OpCode": "bne.un.s",
|
||||
"Operand": "IL_0016: ldc.i4.1",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0013",
|
||||
"OpCode": "ldc.i4.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0014",
|
||||
"OpCode": "br.s",
|
||||
"Operand": "IL_0017: conv.u1",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0016",
|
||||
"OpCode": "ldc.i4.1",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0017",
|
||||
"OpCode": "conv.u1",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0018",
|
||||
"OpCode": "brtrue.s",
|
||||
"Operand": "IL_0051: ldloca.s V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x001A",
|
||||
"OpCode": "ldarg.1",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x001B",
|
||||
"OpCode": "ldc.i4.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x001C",
|
||||
"OpCode": "bne.un.s",
|
||||
"Operand": "IL_0022: ldc.i4.s 51",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x001E",
|
||||
"OpCode": "ldc.i4.s",
|
||||
"Operand": "30",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0020",
|
||||
"OpCode": "br.s",
|
||||
"Operand": "IL_0024: stloc.1",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0022",
|
||||
"OpCode": "ldc.i4.s",
|
||||
"Operand": "51",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0024",
|
||||
"OpCode": "stloc.1",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0025",
|
||||
"OpCode": "ldarg.3",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0026",
|
||||
"OpCode": "ldc.i4.s",
|
||||
"Operand": "12",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0028",
|
||||
"OpCode": "conv.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0029",
|
||||
"OpCode": "add",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x002A",
|
||||
"OpCode": "ldc.i4.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x002B",
|
||||
"OpCode": "stind.i4",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x002C",
|
||||
"OpCode": "ldarg.3",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x002D",
|
||||
"OpCode": "ldc.i4.8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x002E",
|
||||
"OpCode": "conv.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x002F",
|
||||
"OpCode": "add",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0030",
|
||||
"OpCode": "ldc.i4.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0031",
|
||||
"OpCode": "stind.i4",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0032",
|
||||
"OpCode": "ldarg.3",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0033",
|
||||
"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": "0x0038",
|
||||
"OpCode": "ldarg.3",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0039",
|
||||
"OpCode": "ldc.i4.s",
|
||||
"Operand": "12",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x003B",
|
||||
"OpCode": "conv.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x003C",
|
||||
"OpCode": "add",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x003D",
|
||||
"OpCode": "ldc.i4.4",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x003E",
|
||||
"OpCode": "stind.i4",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x003F",
|
||||
"OpCode": "ldarg.3",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0040",
|
||||
"OpCode": "ldc.i4.8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0041",
|
||||
"OpCode": "conv.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0042",
|
||||
"OpCode": "add",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0043",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_1",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0045",
|
||||
"OpCode": "ldind.i4",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0046",
|
||||
"OpCode": "stind.i4",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0047",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_1",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0049",
|
||||
"OpCode": "ldind.i4",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x004A",
|
||||
"OpCode": "ldc.i4.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x004B",
|
||||
"OpCode": "ceq",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x004D",
|
||||
"OpCode": "conv.u1",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x004E",
|
||||
"OpCode": "stloc.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x004F",
|
||||
"OpCode": "leave.s",
|
||||
"Operand": "IL_006C: ldloca.s V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0051",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0053",
|
||||
"OpCode": "ldind.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0054",
|
||||
"OpCode": "ldarg.2",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0055",
|
||||
"OpCode": "ldarg.3",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0056",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Boolean modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::Query.GetNextQueryResultRow\u003Cclass DataQueryResultRow\u003E(Query* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),DataQueryResultRow*,SError* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": "0x060058AF"
|
||||
},
|
||||
{
|
||||
"Offset": "0x005B",
|
||||
"OpCode": "stloc.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x005C",
|
||||
"OpCode": "leave.s",
|
||||
"Operand": "IL_006C: ldloca.s V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x005E",
|
||||
"OpCode": "ldftn",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std.shared_ptr\u003CQuery\u003E.{dtor}(std.shared_ptr\u003CQuery\u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x0600562A"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0064",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0066",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x006B",
|
||||
"OpCode": "endfinally",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x006C",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x006E",
|
||||
"OpCode": "ldc.i4.8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x006F",
|
||||
"OpCode": "add",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0070",
|
||||
"OpCode": "ldind.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0071",
|
||||
"OpCode": "brfalse.s",
|
||||
"Operand": "IL_007D: ldloc.0",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0073",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_2",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0075",
|
||||
"OpCode": "ldc.i4.8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0076",
|
||||
"OpCode": "add",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0077",
|
||||
"OpCode": "ldind.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0078",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std._Ref_count_base._Decref(std._Ref_count_base* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06000137"
|
||||
},
|
||||
{
|
||||
"Offset": "0x007D",
|
||||
"OpCode": "ldloc.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x007E",
|
||||
"OpCode": "ret",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"Path": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientManaged.dll",
|
||||
"Filter": "0x060055E4",
|
||||
"IsILOnly": false,
|
||||
"IsMixedMode": true,
|
||||
"Methods": [
|
||||
{
|
||||
"DeclaringType": "\u003CModule\u003E",
|
||||
"Name": {
|
||||
"String": "HistorianClient.StartDataQuery",
|
||||
"Data": "SGlzdG9yaWFuQ2xpZW50LlN0YXJ0RGF0YVF1ZXJ5",
|
||||
"Length": 30,
|
||||
"DataLength": 30
|
||||
},
|
||||
"Token": "0x060055E4",
|
||||
"Rva": "0x004160C4",
|
||||
"IsStatic": true,
|
||||
"IsPublic": false,
|
||||
"HasBody": true,
|
||||
"InstructionCount": 80,
|
||||
"Calls": [
|
||||
{
|
||||
"Offset": "0x0007",
|
||||
"OpCode": "call",
|
||||
"Operand": "std.shared_ptr\u003CQuery\u003E* modreq(System.Runtime.CompilerServices.IsUdtReturn) modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::HistorianClient.StartQuery(HistorianClient* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),std.shared_ptr\u003CQuery\u003E*,System.UInt32 modopt(System.Runtime.CompilerServices.IsLong)*)",
|
||||
"Token": "0x060055C4"
|
||||
},
|
||||
{
|
||||
"Offset": "0x005C",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Boolean modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::Query.StartDataQuery(Query* 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,CMetadataNamespace modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),SRedundantEndpoint modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),SRedundantEndpoint modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),SError* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": "0x0600574B"
|
||||
},
|
||||
{
|
||||
"Offset": "0x006A",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::Query.EndQuery(Query* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x0600574D"
|
||||
},
|
||||
{
|
||||
"Offset": "0x007F",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0091",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std._Ref_count_base._Decref(std._Ref_count_base* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06000137"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"Path": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientManaged.dll",
|
||||
"Filter": "ArchestrA.HistoryQuery.MoveNext",
|
||||
"IsILOnly": false,
|
||||
"IsMixedMode": true,
|
||||
"Methods": [
|
||||
{
|
||||
"DeclaringType": "ArchestrA.HistoryQuery",
|
||||
"Name": {
|
||||
"String": "MoveNext",
|
||||
"Data": "TW92ZU5leHQ=",
|
||||
"Length": 8,
|
||||
"DataLength": 8
|
||||
},
|
||||
"Token": "0x060062A2",
|
||||
"Rva": "0x004405D4",
|
||||
"IsStatic": false,
|
||||
"IsPublic": true,
|
||||
"HasBody": true,
|
||||
"InstructionCount": 67,
|
||||
"Calls": [
|
||||
{
|
||||
"Offset": "0x0004",
|
||||
"OpCode": "call",
|
||||
"Operand": "HistorianClient* ArchestrA.BaseQuery::GetClient(ArchestrA.HistorianAccessError\u0026)",
|
||||
"Token": "0x060061B5"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0029",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void ArchestrA.HistoryQueryResult::CleanResult()",
|
||||
"Token": "0x06006262"
|
||||
},
|
||||
{
|
||||
"Offset": "0x004D",
|
||||
"OpCode": "call",
|
||||
"Operand": "DataQueryResultRow* ArchestrA.HistoryQueryResult::get_UnmanagedQueryResult()",
|
||||
"Token": "0x06006263"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0054",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Boolean modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::HistorianClient.GetNextRow\u003Cclass DataQueryResultRow\u003E(HistorianClient* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),System.UInt32 modopt(System.Runtime.CompilerServices.IsLong),DataQueryResultRow*,SError* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": "0x0600588D"
|
||||
},
|
||||
{
|
||||
"Offset": "0x006E",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void ArchestrA.HistoryQueryResult::InitializeBasicProperties()",
|
||||
"Token": "0x06006260"
|
||||
},
|
||||
{
|
||||
"Offset": "0x007F",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0087",
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,361 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,265 @@
|
||||
{
|
||||
"Path": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientManaged.dll",
|
||||
"Filter": "0x0600574B",
|
||||
"IsILOnly": false,
|
||||
"IsMixedMode": true,
|
||||
"Methods": [
|
||||
{
|
||||
"DeclaringType": "\u003CModule\u003E",
|
||||
"Name": {
|
||||
"String": "Query.StartDataQuery",
|
||||
"Data": "UXVlcnkuU3RhcnREYXRhUXVlcnk=",
|
||||
"Length": 20,
|
||||
"DataLength": 20
|
||||
},
|
||||
"Token": "0x0600574B",
|
||||
"Rva": "0x0041CACC",
|
||||
"IsStatic": true,
|
||||
"IsPublic": false,
|
||||
"HasBody": true,
|
||||
"InstructionCount": 481,
|
||||
"Calls": [
|
||||
{
|
||||
"Offset": "0x0018",
|
||||
"OpCode": "call",
|
||||
"Operand": "SMemFile\u003CSNullAllocator\u003E* modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::SMemFile\u003CSNullAllocator\u003E.{ctor}(SMemFile\u003CSNullAllocator\u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),System.Void modopt(System.Runtime.CompilerServices.IsConst)*,System.UInt64,SMemFile\u003CSNullAllocator\u003E/EDisableAlloc)",
|
||||
"Token": "0x06000803"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0030",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x003D",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::SMemFile\u003CSNullAllocator\u003E.LoadEx(SMemFile\u003CSNullAllocator\u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),System.Void*,System.UInt64)",
|
||||
"Token": "0x0600080C"
|
||||
},
|
||||
{
|
||||
"Offset": "0x004D",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::SMemFile\u003CSNullAllocator\u003E.LoadEx(SMemFile\u003CSNullAllocator\u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),System.Void*,System.UInt64)",
|
||||
"Token": "0x0600080C"
|
||||
},
|
||||
{
|
||||
"Offset": "0x005C",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0064",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::SMemFile\u003CSNullAllocator\u003E.{dtor}(SMemFile\u003CSNullAllocator\u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06000805"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0072",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::QueryColumnSelector.SelectAllQueryColumns(QueryColumnSelector* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06000048"
|
||||
},
|
||||
{
|
||||
"Offset": "0x00CF",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::Query.SetTagNameListWithDataSourceId(Query* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),std.basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),std.vector\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E,std::allocator\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E \u003E \u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),System.UInt32 modopt(System.Runtime.CompilerServices.IsLong),System.Char modopt(System.Runtime.CompilerServices.IsConst)**)",
|
||||
"Token": "0x0600570B"
|
||||
},
|
||||
{
|
||||
"Offset": "0x00F0",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::Query.SetTagNameListWithDataSourceId(Query* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),std.basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),std.vector\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E,std::allocator\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E \u003E \u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),System.UInt32 modopt(System.Runtime.CompilerServices.IsLong),System.Char modopt(System.Runtime.CompilerServices.IsConst)**)",
|
||||
"Token": "0x0600570B"
|
||||
},
|
||||
{
|
||||
"Offset": "0x00FE",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::Query.SetTagNameList(Query* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),std.vector\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E,std::allocator\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E \u003E \u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),System.UInt32 modopt(System.Runtime.CompilerServices.IsLong),System.Char modopt(System.Runtime.CompilerServices.IsConst)**)",
|
||||
"Token": "0x0600570A"
|
||||
},
|
||||
{
|
||||
"Offset": "0x010A",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::Query.SetTagNameList(Query* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),std.vector\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E,std::allocator\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E \u003E \u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),System.UInt32 modopt(System.Runtime.CompilerServices.IsLong),System.Char modopt(System.Runtime.CompilerServices.IsConst)**)",
|
||||
"Token": "0x0600570A"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0111",
|
||||
"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": "0x0129",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x013E",
|
||||
"OpCode": "call",
|
||||
"Operand": "AutoSummaryParameters* modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::AutoSummaryParameters.{ctor}(AutoSummaryParameters* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06002C18"
|
||||
},
|
||||
{
|
||||
"Offset": "0x018B",
|
||||
"OpCode": "call",
|
||||
"Operand": "DataQueryRequest* modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::DataQueryRequest.{ctor}(DataQueryRequest* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),QueryColumnSelector modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),INSQL_QUERYTYPE,INSQL_QUERYFORMAT,HISTORIAN_SUMMARYTYPE,System.UInt64,System.UInt64,System.UInt64,System.Single,System.UInt32 modopt(System.Runtime.CompilerServices.IsLong),System.Char modopt(System.Runtime.CompilerServices.IsConst)*,E_VERSIONTYPE,System.UInt32 modopt(System.Runtime.CompilerServices.IsLong),E_INTERPOLATIONTYPE,E_TIMESTAMPRULE,E_QUALITYRULE,System.Char modopt(System.Runtime.CompilerServices.IsConst)*,System.Char modopt(System.Runtime.CompilerServices.IsConst)*,EValueSelector,E_AGGREGATIONTYPE,std.vector\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E,std::allocator\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E \u003E \u003E modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),std.vector\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E,std::allocator\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E \u003E \u003E modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),System.UInt16,CMetadataNamespace modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),System.UInt32 modopt(System.Runtime.CompilerServices.IsLong),System.UInt32 modopt(System.Runtime.CompilerServices.IsLong),SRedundantEndpoint modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),SRedundantEndpoint modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),System.UInt32 modopt(System.Runtime.CompilerServices.IsLong),AutoSummaryParameters modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),System.UInt16,System.UInt32 modopt(System.Runtime.CompilerServices.IsLong))",
|
||||
"Token": "0x0600570F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x019B",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x01A4",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::AutoSummaryParameters.{dtor}(AutoSummaryParameters* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06002C1A"
|
||||
},
|
||||
{
|
||||
"Offset": "0x01AD",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::DataQueryRequest.Save\u003Cclass SByteStream\u003Cclass SCrtMemFile\u003E \u003E(DataQueryRequest modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),SByteStream\u003CSCrtMemFile\u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": "0x06005760"
|
||||
},
|
||||
{
|
||||
"Offset": "0x01BD",
|
||||
"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": "0x01C5",
|
||||
"OpCode": "call",
|
||||
"Operand": "SCrtMemFile* modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::SCrtMemFile.{ctor}(SCrtMemFile* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06000CFB"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0222",
|
||||
"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.UInt16,SByteStream\u003CSCrtMemFile\u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),SByteStream\u003CSCrtMemFile\u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),System.UInt32 modopt(System.Runtime.CompilerServices.IsLong)* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),SError* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x027E",
|
||||
"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.UInt16,SByteStream\u003CSCrtMemFile\u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),SByteStream\u003CSCrtMemFile\u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),System.UInt32 modopt(System.Runtime.CompilerServices.IsLong)* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),SError* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x028F",
|
||||
"OpCode": "call",
|
||||
"Operand": "DataQueryResponse* modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::DataQueryResponse.{ctor}(DataQueryResponse* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06005711"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0299",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::DataQueryResponse.Load\u003Cclass SByteStream\u003Cclass SCrtMemFile\u003E \u003E(DataQueryResponse* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),SByteStream\u003CSCrtMemFile\u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": "0x06005761"
|
||||
},
|
||||
{
|
||||
"Offset": "0x02A9",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Char modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::DataQueryResponse.GetStandardTimezoneName(DataQueryResponse modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06005713"
|
||||
},
|
||||
{
|
||||
"Offset": "0x02B3",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Int32 modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::wcsncpy_s(System.Char*,System.UInt64,System.Char modopt(System.Runtime.CompilerServices.IsConst)*,System.UInt64)",
|
||||
"Token": "0x06005CD0"
|
||||
},
|
||||
{
|
||||
"Offset": "0x02EA",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Int32 modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::wcsncpy_s(System.Char*,System.UInt64,System.Char modopt(System.Runtime.CompilerServices.IsConst)*,System.UInt64)",
|
||||
"Token": "0x06005CD0"
|
||||
},
|
||||
{
|
||||
"Offset": "0x02F7",
|
||||
"OpCode": "call",
|
||||
"Operand": "SError* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced) modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::SError.=(SError* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),SError modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": "0x06000162"
|
||||
},
|
||||
{
|
||||
"Offset": "0x031B",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0323",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::DataQueryResponse.{dtor}(DataQueryResponse* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06005712"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0332",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x033A",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::SMemFile\u003CSCrtAllocator\u003E.{dtor}(SMemFile\u003CSCrtAllocator\u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x060011E0"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0349",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0351",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::DataQueryRequest.{dtor}(DataQueryRequest* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06002C1D"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0360",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0368",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::SMemFile\u003CSCrtAllocator\u003E.{dtor}(SMemFile\u003CSCrtAllocator\u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x060011E0"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0377",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x037F",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std.vector\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E,std::allocator\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E \u003E \u003E._Tidy(std.vector\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E,std::allocator\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E \u003E \u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x060006FD"
|
||||
},
|
||||
{
|
||||
"Offset": "0x038E",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0396",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std.vector\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E,std::allocator\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E \u003E \u003E._Tidy(std.vector\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E,std::allocator\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E \u003E \u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x060006FD"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,459 @@
|
||||
{
|
||||
"Path": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientManaged.dll",
|
||||
"Filter": "0x0600574A",
|
||||
"IsILOnly": false,
|
||||
"IsMixedMode": true,
|
||||
"Methods": [
|
||||
{
|
||||
"DeclaringType": "\u003CModule\u003E",
|
||||
"Name": {
|
||||
"String": "Query.StartEventQuery",
|
||||
"Data": "UXVlcnkuU3RhcnRFdmVudFF1ZXJ5",
|
||||
"Length": 21,
|
||||
"DataLength": 21
|
||||
},
|
||||
"Token": "0x0600574A",
|
||||
"Rva": "0x0041DB4C",
|
||||
"IsStatic": true,
|
||||
"IsPublic": false,
|
||||
"HasBody": true,
|
||||
"InstructionCount": 373,
|
||||
"Locals": [
|
||||
{
|
||||
"Index": 0,
|
||||
"Type": "System.Int64"
|
||||
},
|
||||
{
|
||||
"Index": 1,
|
||||
"Type": "Query* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst)"
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Type": "System.Int64"
|
||||
},
|
||||
{
|
||||
"Index": 3,
|
||||
"Type": "System.Int32"
|
||||
},
|
||||
{
|
||||
"Index": 4,
|
||||
"Type": "System.Int64"
|
||||
},
|
||||
{
|
||||
"Index": 5,
|
||||
"Type": "System.UInt32"
|
||||
},
|
||||
{
|
||||
"Index": 6,
|
||||
"Type": "System.UInt32"
|
||||
},
|
||||
{
|
||||
"Index": 7,
|
||||
"Type": "SByteStream\u003CSCrtMemFile\u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced) modopt(System.Runtime.CompilerServices.CallConvCdecl) (SByteStream\u003CSCrtMemFile\u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))"
|
||||
},
|
||||
{
|
||||
"Index": 8,
|
||||
"Type": "std.basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst)"
|
||||
},
|
||||
{
|
||||
"Index": 9,
|
||||
"Type": "SByteStream\u003CSCrtMemFile\u003E"
|
||||
},
|
||||
{
|
||||
"Index": 10,
|
||||
"Type": "SCrtMemFile"
|
||||
},
|
||||
{
|
||||
"Index": 11,
|
||||
"Type": "EventQueryRequest"
|
||||
},
|
||||
{
|
||||
"Index": 12,
|
||||
"Type": "std.basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E*"
|
||||
},
|
||||
{
|
||||
"Index": 13,
|
||||
"Type": "std.basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E"
|
||||
},
|
||||
{
|
||||
"Index": 14,
|
||||
"Type": "SByteStream\u003CSCrtMemFile\u003E"
|
||||
},
|
||||
{
|
||||
"Index": 15,
|
||||
"Type": "SCrtMemFile"
|
||||
}
|
||||
],
|
||||
"Calls": [
|
||||
{
|
||||
"Offset": "0x0029",
|
||||
"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": "0x0041",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x005C",
|
||||
"OpCode": "call",
|
||||
"Operand": "std.basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E* modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std.basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E.{ctor}(std.basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),System.Char modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x0600005E"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0077",
|
||||
"OpCode": "call",
|
||||
"Operand": "EventQueryRequest* modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::EventQueryRequest.{ctor}(EventQueryRequest* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.UInt16,System.UInt16,EventQueryFilters* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),std.basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E modreq(System.Runtime.CompilerServices.IsCopyConstructed)*,System.UInt32 modopt(System.Runtime.CompilerServices.IsLong))",
|
||||
"Token": "0x06005719"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0081",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::EventQueryRequest.Save\u003Cclass SByteStream\u003Cclass SCrtMemFile\u003E \u003E(EventQueryRequest modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),SByteStream\u003CSCrtMemFile\u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": "0x0600575E"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0091",
|
||||
"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": "0x0099",
|
||||
"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": "0x00B1",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x00FB",
|
||||
"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.UInt16,SByteStream\u003CSCrtMemFile\u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),SByteStream\u003CSCrtMemFile\u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),System.UInt32 modopt(System.Runtime.CompilerServices.IsLong)* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),SError* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0134",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x013C",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::SMemFile\u003CSCrtAllocator\u003E.{dtor}(SMemFile\u003CSCrtAllocator\u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x060011E0"
|
||||
},
|
||||
{
|
||||
"Offset": "0x014B",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0153",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::EventQueryRequest.{dtor}(EventQueryRequest* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x0600571A"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0162",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x016A",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::SMemFile\u003CSCrtAllocator\u003E.{dtor}(SMemFile\u003CSCrtAllocator\u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x060011E0"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0179",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0186",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std.vector\u003CEventQueryFilter,std::allocator\u003CEventQueryFilter\u003E \u003E._Tidy(std.vector\u003CEventQueryFilter,std::allocator\u003CEventQueryFilter\u003E \u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06005466"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0195",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x019E",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std._Tree_val\u003Cstd::_Tree_simple_types\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E \u003E \u003E._Erase_head\u003Cclass std::allocator\u003Cstruct std::_Tree_node\u003Cclass std::basic_string\u003Cwchar_t,struct std::char_traits\u003Cwchar_t\u003E,class std::allocator\u003Cwchar_t\u003E \u003E,void *\u003E \u003E \u003E(std._Tree_val\u003Cstd::_Tree_simple_types\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E \u003E \u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),std.allocator\u003Cstd::_Tree_node\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E,void *\u003E \u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": "0x060008A5"
|
||||
},
|
||||
{
|
||||
"Offset": "0x01D7",
|
||||
"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.UInt16,SByteStream\u003CSCrtMemFile\u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),SByteStream\u003CSCrtMemFile\u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),System.UInt32 modopt(System.Runtime.CompilerServices.IsLong)* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),SError* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x01ED",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x01FD",
|
||||
"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": "0x020C",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0224",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x022C",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::EventQueryRequest.{dtor}(EventQueryRequest* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x0600571A"
|
||||
},
|
||||
{
|
||||
"Offset": "0x023B",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x024B",
|
||||
"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": "0x025A",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0272",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x027F",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std.vector\u003CEventQueryFilter,std::allocator\u003CEventQueryFilter\u003E \u003E._Tidy(std.vector\u003CEventQueryFilter,std::allocator\u003CEventQueryFilter\u003E \u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06005466"
|
||||
},
|
||||
{
|
||||
"Offset": "0x028E",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0297",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std._Tree_val\u003Cstd::_Tree_simple_types\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E \u003E \u003E._Erase_head\u003Cclass std::allocator\u003Cstruct std::_Tree_node\u003Cclass std::basic_string\u003Cwchar_t,struct std::char_traits\u003Cwchar_t\u003E,class std::allocator\u003Cwchar_t\u003E \u003E,void *\u003E \u003E \u003E(std._Tree_val\u003Cstd::_Tree_simple_types\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E \u003E \u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),std.allocator\u003Cstd::_Tree_node\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E,void *\u003E \u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": "0x060008A5"
|
||||
},
|
||||
{
|
||||
"Offset": "0x02A8",
|
||||
"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": "0x02B7",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x02CF",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x02D7",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::EventQueryRequest.{dtor}(EventQueryRequest* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x0600571A"
|
||||
},
|
||||
{
|
||||
"Offset": "0x02E6",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x02F6",
|
||||
"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": "0x0305",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x031D",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x032A",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std.vector\u003CEventQueryFilter,std::allocator\u003CEventQueryFilter\u003E \u003E._Tidy(std.vector\u003CEventQueryFilter,std::allocator\u003CEventQueryFilter\u003E \u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst))",
|
||||
"Token": "0x06005466"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0339",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void \u003CModule\u003E::___CxxCallUnwindDtor(System.Void (System.Void*),System.Void*)",
|
||||
"Token": "0x06005C0F"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0342",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::std._Tree_val\u003Cstd::_Tree_simple_types\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E \u003E \u003E._Erase_head\u003Cclass std::allocator\u003Cstruct std::_Tree_node\u003Cclass std::basic_string\u003Cwchar_t,struct std::char_traits\u003Cwchar_t\u003E,class std::allocator\u003Cwchar_t\u003E \u003E,void *\u003E \u003E \u003E(std._Tree_val\u003Cstd::_Tree_simple_types\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E \u003E \u003E* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),std.allocator\u003Cstd::_Tree_node\u003Cstd::basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E,void *\u003E \u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": "0x060008A5"
|
||||
}
|
||||
],
|
||||
"Instructions": [
|
||||
{
|
||||
"Offset": "0x0070",
|
||||
"OpCode": "ldloc.s",
|
||||
"Operand": "V_8",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0072",
|
||||
"OpCode": "ldc.i4",
|
||||
"Operand": "65536",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0077",
|
||||
"OpCode": "call",
|
||||
"Operand": "EventQueryRequest* modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::EventQueryRequest.{ctor}(EventQueryRequest* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.UInt16,System.UInt16,EventQueryFilters* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced),std.basic_string\u003Cwchar_t,std::char_traits\u003Cwchar_t\u003E,std::allocator\u003Cwchar_t\u003E \u003E modreq(System.Runtime.CompilerServices.IsCopyConstructed)*,System.UInt32 modopt(System.Runtime.CompilerServices.IsLong))",
|
||||
"Token": "0x06005719"
|
||||
},
|
||||
{
|
||||
"Offset": "0x007C",
|
||||
"OpCode": "pop",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x007D",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_11",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x007F",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_14",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0081",
|
||||
"OpCode": "call",
|
||||
"Operand": "System.Void modopt(System.Runtime.CompilerServices.CallConvCdecl) \u003CModule\u003E::EventQueryRequest.Save\u003Cclass SByteStream\u003Cclass SCrtMemFile\u003E \u003E(EventQueryRequest modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),SByteStream\u003CSCrtMemFile\u003E* modopt(System.Runtime.CompilerServices.IsImplicitlyDereferenced))",
|
||||
"Token": "0x0600575E"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0086",
|
||||
"OpCode": "ldsfld",
|
||||
"Operand": "System.Int32** \u003CModule\u003E::__unep@??$endstream@VSCrtMemFile@@@@$$FYAAEAV?$SByteStream@VSCrtMemFile@@@@AEAV0@@Z",
|
||||
"Token": "0x04001B05"
|
||||
},
|
||||
{
|
||||
"Offset": "0x008B",
|
||||
"OpCode": "stloc.s",
|
||||
"Operand": "V_7",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x008D",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_14",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x008F",
|
||||
"OpCode": "ldloc.s",
|
||||
"Operand": "V_7",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0091",
|
||||
"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": "0x0096",
|
||||
"OpCode": "pop",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0097",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_10",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0099",
|
||||
"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": "0x009E",
|
||||
"OpCode": "pop",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x009F",
|
||||
"OpCode": "ldloca.s",
|
||||
"Operand": "V_10",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x00A1",
|
||||
"OpCode": "ldsflda",
|
||||
"Operand": "\u003CCppImplementationDetails\u003E.$ArrayType$$$BY0BC@Q6AXXZ modopt(System.Runtime.CompilerServices.IsConst) \u003CModule\u003E::??_7SCrtMemFile@@6B@",
|
||||
"Token": "0x04001016"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
{
|
||||
"Path": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientManaged.dll",
|
||||
"Filter": "0x0600100D",
|
||||
"IsILOnly": false,
|
||||
"IsMixedMode": true,
|
||||
"Methods": [
|
||||
{
|
||||
"DeclaringType": "\u003CModule\u003E",
|
||||
"Name": {
|
||||
"String": "SByteStream\u003CSCrtMemFile\u003E.GetData",
|
||||
"Data": "U0J5dGVTdHJlYW08U0NydE1lbUZpbGU+LkdldERhdGE=",
|
||||
"Length": 32,
|
||||
"DataLength": 32
|
||||
},
|
||||
"Token": "0x0600100D",
|
||||
"Rva": "0x0005FDF8",
|
||||
"IsStatic": true,
|
||||
"IsPublic": false,
|
||||
"HasBody": true,
|
||||
"InstructionCount": 10,
|
||||
"Locals": [],
|
||||
"Calls": [
|
||||
{
|
||||
"Offset": "0x0009",
|
||||
"OpCode": "calli",
|
||||
"Operand": "System.Byte modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.CallConvCdecl) (System.IntPtr)",
|
||||
"Token": null
|
||||
}
|
||||
],
|
||||
"Instructions": [
|
||||
{
|
||||
"Offset": "0x0000",
|
||||
"OpCode": "ldarg.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0001",
|
||||
"OpCode": "ldind.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0002",
|
||||
"OpCode": "dup",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0003",
|
||||
"OpCode": "ldind.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0004",
|
||||
"OpCode": "ldc.i4.s",
|
||||
"Operand": "120",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0006",
|
||||
"OpCode": "conv.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0007",
|
||||
"OpCode": "add",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0008",
|
||||
"OpCode": "ldind.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0009",
|
||||
"OpCode": "calli",
|
||||
"Operand": "System.Byte modopt(System.Runtime.CompilerServices.IsConst)* modopt(System.Runtime.CompilerServices.CallConvCdecl) (System.IntPtr)",
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x000E",
|
||||
"OpCode": "ret",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"Path": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientManaged.dll",
|
||||
"Filter": "0x0600100C",
|
||||
"IsILOnly": false,
|
||||
"IsMixedMode": true,
|
||||
"Methods": [
|
||||
{
|
||||
"DeclaringType": "\u003CModule\u003E",
|
||||
"Name": {
|
||||
"String": "SByteStream\u003CSCrtMemFile\u003E.GetLength",
|
||||
"Data": "U0J5dGVTdHJlYW08U0NydE1lbUZpbGU+LkdldExlbmd0aA==",
|
||||
"Length": 34,
|
||||
"DataLength": 34
|
||||
},
|
||||
"Token": "0x0600100C",
|
||||
"Rva": "0x00064FE8",
|
||||
"IsStatic": true,
|
||||
"IsPublic": false,
|
||||
"HasBody": true,
|
||||
"InstructionCount": 8,
|
||||
"Locals": [],
|
||||
"Calls": [],
|
||||
"Instructions": [
|
||||
{
|
||||
"Offset": "0x0000",
|
||||
"OpCode": "ldarg.0",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0001",
|
||||
"OpCode": "ldind.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0002",
|
||||
"OpCode": "ldc.i4.8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0003",
|
||||
"OpCode": "conv.i8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0004",
|
||||
"OpCode": "add",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0005",
|
||||
"OpCode": "ldind.i4",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0006",
|
||||
"OpCode": "conv.u8",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
},
|
||||
{
|
||||
"Offset": "0x0007",
|
||||
"OpCode": "ret",
|
||||
"Operand": null,
|
||||
"Token": null
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,362 @@
|
||||
{
|
||||
"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
|
||||
@@ -0,0 +1,46 @@
|
||||
Microsoft (R) COFF/PE Dumper Version 14.44.35226.0
|
||||
Copyright (C) Microsoft Corporation. All rights reserved.
|
||||
|
||||
|
||||
Dump of file current\aahClientManaged.dll
|
||||
|
||||
File Type: DLL
|
||||
|
||||
Image has the following dependencies:
|
||||
|
||||
WS2_32.dll
|
||||
Secur32.dll
|
||||
VERSION.dll
|
||||
RPCRT4.dll
|
||||
NETAPI32.dll
|
||||
MSVCP140.dll
|
||||
KERNEL32.dll
|
||||
USER32.dll
|
||||
ADVAPI32.dll
|
||||
SHELL32.dll
|
||||
OLEAUT32.dll
|
||||
CRYPT32.dll
|
||||
VCRUNTIME140.dll
|
||||
VCRUNTIME140_1.dll
|
||||
api-ms-win-crt-stdio-l1-1-0.dll
|
||||
api-ms-win-crt-string-l1-1-0.dll
|
||||
api-ms-win-crt-filesystem-l1-1-0.dll
|
||||
api-ms-win-crt-runtime-l1-1-0.dll
|
||||
api-ms-win-crt-heap-l1-1-0.dll
|
||||
api-ms-win-crt-convert-l1-1-0.dll
|
||||
api-ms-win-crt-utility-l1-1-0.dll
|
||||
api-ms-win-crt-math-l1-1-0.dll
|
||||
ole32.dll
|
||||
SHLWAPI.dll
|
||||
api-ms-win-crt-time-l1-1-0.dll
|
||||
mscoree.dll
|
||||
|
||||
Summary
|
||||
|
||||
DA000 .data
|
||||
5D000 .nep
|
||||
6000 .pdata
|
||||
AB9000 .rdata
|
||||
2000 .reloc
|
||||
1000 .rsrc
|
||||
465000 .text
|
||||
@@ -0,0 +1,10 @@
|
||||
|
||||
Dump of file current\aahClientManaged.dll
|
||||
WS2_32.dll
|
||||
4FF ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ
|
||||
ADVAPI32.dll
|
||||
CRYPT32.dll
|
||||
7D CryptBinaryToStringW
|
||||
DF CryptStringToBinaryW
|
||||
mscoree.dll
|
||||
|
||||
@@ -0,0 +1,584 @@
|
||||
Microsoft (R) COFF/PE Dumper Version 14.44.35226.0
|
||||
Copyright (C) Microsoft Corporation. All rights reserved.
|
||||
|
||||
|
||||
Dump of file current\aahClientManaged.dll
|
||||
|
||||
File Type: DLL
|
||||
|
||||
Section contains the following imports:
|
||||
|
||||
WS2_32.dll
|
||||
1804C3980 Import Address Table
|
||||
180F78A00 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
2 FreeAddrInfoW
|
||||
9 GetNameInfoW
|
||||
B InetPtonW
|
||||
7 GetAddrInfoW
|
||||
Ordinal 115
|
||||
Ordinal 116
|
||||
|
||||
Secur32.dll
|
||||
1804C3840 Import Address Table
|
||||
180F788C0 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
24 InitializeSecurityContextW
|
||||
2 AcquireCredentialsHandleW
|
||||
0 AcceptSecurityContext
|
||||
36 QuerySecurityContextToken
|
||||
18 FreeCredentialsHandle
|
||||
|
||||
VERSION.dll
|
||||
1804C3960 Import Address Table
|
||||
180F789E0 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
8 GetFileVersionInfoW
|
||||
10 VerQueryValueW
|
||||
7 GetFileVersionInfoSizeW
|
||||
|
||||
RPCRT4.dll
|
||||
1804C37F8 Import Address Table
|
||||
180F78878 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
21D UuidCreate
|
||||
226 UuidToStringW
|
||||
214 RpcStringFreeW
|
||||
222 UuidFromStringW
|
||||
|
||||
NETAPI32.dll
|
||||
1804C3768 Import Address Table
|
||||
180F787E8 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
EF NetUserGetLocalGroups
|
||||
E0 NetShareGetInfo
|
||||
9B NetLocalGroupGetMembers
|
||||
51 NetApiBufferFree
|
||||
|
||||
MSVCP140.dll
|
||||
1804C34C8 Import Address Table
|
||||
180F78548 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
4C3 ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W0@Z
|
||||
12E ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_K@Z
|
||||
4BC ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z
|
||||
3CB ?id@?$codecvt@_WDU_Mbstatet@@@std@@2V0locale@2@A
|
||||
28C ?_Xbad_function_call@std@@YAXXZ
|
||||
28D ?_Xinvalid_argument@std@@YAXPEBD@Z
|
||||
283 ?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ
|
||||
282 ?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ
|
||||
1C8 ?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ
|
||||
57D _Mbrtowc
|
||||
28F ?_Xout_of_range@std@@YAXPEBD@Z
|
||||
28E ?_Xlength_error@std@@YAXPEBD@Z
|
||||
28B ?_Xbad_alloc@std@@YAXXZ
|
||||
34F ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ
|
||||
352 ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ
|
||||
35B ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ
|
||||
449 ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ
|
||||
4C9 ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z
|
||||
3F8 ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z
|
||||
4FF ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ
|
||||
4B7 ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV12@PEA_W_J@Z
|
||||
53D ?width@ios_base@std@@QEAA_J_J@Z
|
||||
4E3 ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEB_W_J@Z
|
||||
4E0 ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z
|
||||
3FE ?in@?$codecvt@_WDU_Mbstatet@@@std@@QEBAHAEAU_Mbstatet@@PEBD1AEAPEBDPEA_W3AEAPEA_W@Z
|
||||
1EA ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ
|
||||
1E7 ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ
|
||||
437 ?out@?$codecvt@_WDU_Mbstatet@@@std@@QEBAHAEAU_Mbstatet@@PEB_W1AEAPEB_WPEAD3AEAPEAD@Z
|
||||
132 ??Bios_base@std@@QEBA_NXZ
|
||||
2B ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z
|
||||
22 ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z
|
||||
4DA ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ
|
||||
497 ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ
|
||||
4D1 ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ
|
||||
3C2 ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEBA?AVlocale@2@XZ
|
||||
1AD ?_Fiopen@std@@YAPEAU_iobuf@@PEB_WHH@Z
|
||||
A5 ??1_Lockit@std@@QEAA@XZ
|
||||
1B5 ?_Getcat@?$codecvt@_WDU_Mbstatet@@@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z
|
||||
131 ??Bid@locale@std@@QEAA_KXZ
|
||||
6D ??0_Lockit@std@@QEAA@H@Z
|
||||
85 ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ
|
||||
88 ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ
|
||||
365 ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WXZ
|
||||
367 ?flags@ios_base@std@@QEBAHXZ
|
||||
53E ?width@ios_base@std@@QEBA_JXZ
|
||||
8B ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ
|
||||
21B ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z
|
||||
52B ?unshift@?$codecvt@_WDU_Mbstatet@@@std@@QEBAHAEAU_Mbstatet@@PEAD1AEAPEAD@Z
|
||||
29D ?always_noconv@codecvt_base@std@@QEBA_NXZ
|
||||
1F9 ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXXZ
|
||||
1D5 ?_Getgloballocale@locale@std@@CAPEAV_Locimp@12@XZ
|
||||
35F ?fail@ios_base@std@@QEBA_NXZ
|
||||
ED ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAG@Z
|
||||
2AA ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z
|
||||
12D ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_J@Z
|
||||
124 ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@K@Z
|
||||
36D ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z
|
||||
4C2 ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z
|
||||
24C ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ
|
||||
82 ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ
|
||||
128 ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z
|
||||
3C8 ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ
|
||||
35 ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@XZ
|
||||
50E ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ
|
||||
3C5 ?good@ios_base@std@@QEBA_NXZ
|
||||
246 ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ
|
||||
51E ?uncaught_exception@std@@YA_NXZ
|
||||
36A ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ
|
||||
463 ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z
|
||||
536 ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WD@Z
|
||||
548 ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEB_W_J@Z
|
||||
545 ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_J@Z
|
||||
51D ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ
|
||||
4D7 ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JXZ
|
||||
281 ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UEAAXXZ
|
||||
22A ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UEAAXXZ
|
||||
48B ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ
|
||||
295 ?__ExceptionPtrCopy@@YAXPEAXPEBX@Z
|
||||
299 ?__ExceptionPtrDestroy@@YAXPEAX@Z
|
||||
10 ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAA@XZ
|
||||
7F ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UEAA@XZ
|
||||
17 ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z
|
||||
440 ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ
|
||||
|
||||
KERNEL32.dll
|
||||
1804C3138 Import Address Table
|
||||
180F781B8 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
E5 CreateProcessW
|
||||
DC CreateNamedPipeW
|
||||
451 QueryPerformanceFrequency
|
||||
426 PostQueuedCompletionStatus
|
||||
9C ConnectNamedPipe
|
||||
368 InitializeCriticalSectionAndSpinCount
|
||||
5E7 WaitForSingleObjectEx
|
||||
369 InitializeCriticalSectionEx
|
||||
10A DecodePointer
|
||||
1B1 FreeLibrary
|
||||
86 CloseHandle
|
||||
135 EnterCriticalSection
|
||||
267 GetLastError
|
||||
3C0 LeaveCriticalSection
|
||||
5B5 TryEnterCriticalSection
|
||||
2F0 GetSystemTimeAsFileTime
|
||||
5E4 WaitForMultipleObjects
|
||||
4CA ResetEvent
|
||||
111 DeleteCriticalSection
|
||||
367 InitializeCriticalSection
|
||||
BF CreateEventW
|
||||
3D2 LocalFree
|
||||
16F FileTimeToLocalFileTime
|
||||
170 FileTimeToSystemTime
|
||||
36D InitializeSRWLock
|
||||
0 AcquireSRWLockExclusive
|
||||
4B6 ReleaseSRWLockExclusive
|
||||
1 AcquireSRWLockShared
|
||||
4B7 ReleaseSRWLockShared
|
||||
60D WideCharToMultiByte
|
||||
3C6 LoadLibraryExW
|
||||
2B5 GetProcAddress
|
||||
27A GetModuleFileNameW
|
||||
186 FindFirstFileW
|
||||
17B FindClose
|
||||
27D GetModuleHandleExW
|
||||
1E5 GetComputerNameW
|
||||
64F lstrlenW
|
||||
466 RaiseException
|
||||
21D GetCurrentProcess
|
||||
1AD FormatMessageW
|
||||
BA CreateDirectoryW
|
||||
CB CreateFileW
|
||||
116 DeleteFileW
|
||||
17C FindCloseChangeNotification
|
||||
17E FindFirstChangeNotificationW
|
||||
18F FindNextChangeNotification
|
||||
192 FindNextFileW
|
||||
1A5 FlushFileBuffers
|
||||
230 GetDiskFreeSpaceW
|
||||
22F GetDiskFreeSpaceExW
|
||||
249 GetFileAttributesExW
|
||||
253 GetFileSizeEx
|
||||
2FB GetTempFileNameW
|
||||
477 ReadFile
|
||||
4BD RemoveDirectoryW
|
||||
51E SetEndOfFile
|
||||
531 SetFilePointerEx
|
||||
534 SetFileTime
|
||||
621 WriteFile
|
||||
1E1 GetCompressedFileSizeW
|
||||
41C OutputDebugStringW
|
||||
12F DuplicateHandle
|
||||
53F SetLastError
|
||||
5ED WaitNamedPipeW
|
||||
450 QueryPerformanceCounter
|
||||
29F GetOverlappedResult
|
||||
71 CancelIo
|
||||
524 SetEvent
|
||||
4B8 ReleaseSemaphore
|
||||
4B4 ReleaseMutex
|
||||
5E6 WaitForSingleObject
|
||||
DA CreateMutexW
|
||||
584 SetWaitableTimer
|
||||
58B Sleep
|
||||
EC CreateSemaphoreW
|
||||
101 CreateWaitableTimerW
|
||||
21E GetCurrentProcessId
|
||||
221 GetCurrentThread
|
||||
222 GetCurrentThreadId
|
||||
56B SetThreadPriority
|
||||
566 SetThreadIdealProcessor
|
||||
2EA GetSystemInfo
|
||||
268 GetLocalTime
|
||||
30E GetTickCount
|
||||
3C7 LoadLibraryW
|
||||
649 lstrcpyW
|
||||
AD CopyFileW
|
||||
3EE MoveFileW
|
||||
3EB MoveFileExW
|
||||
FB CreateToolhelp32Snapshot
|
||||
431 Process32NextW
|
||||
27E GetModuleHandleW
|
||||
4D3 RtlCaptureContext
|
||||
4DA RtlLookupFunctionEntry
|
||||
4E1 RtlVirtualUnwind
|
||||
5BC UnhandledExceptionFilter
|
||||
57B SetUnhandledExceptionFilter
|
||||
59A TerminateProcess
|
||||
389 IsProcessorFeaturePresent
|
||||
382 IsDebuggerPresent
|
||||
2D7 GetStartupInfoW
|
||||
122 DisableThreadLibraryCalls
|
||||
36C InitializeSListHead
|
||||
64E lstrlenA
|
||||
596 SystemTimeToFileTime
|
||||
597 SystemTimeToTzSpecificLocalTime
|
||||
40C OpenMutexW
|
||||
3CF LocalFileTimeToFileTime
|
||||
126 DisconnectNamedPipe
|
||||
2D1 GetQueuedCompletionStatus
|
||||
D0 CreateIoCompletionPort
|
||||
3F2 MultiByteToWideChar
|
||||
|
||||
USER32.dll
|
||||
1804C3870 Import Address Table
|
||||
180F788F0 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
3B3 UnregisterClassW
|
||||
3E5 wsprintfW
|
||||
|
||||
ADVAPI32.dll
|
||||
1804C3000 Import Address Table
|
||||
180F78080 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
264 RegCreateKeyExW
|
||||
20 AllocateAndInitializeSid
|
||||
215 OpenProcessToken
|
||||
25B RegCloseKey
|
||||
299 RegQueryValueExW
|
||||
28C RegOpenKeyExW
|
||||
170 GetTokenInformation
|
||||
1A9 LookupAccountSidW
|
||||
21A OpenThreadToken
|
||||
134 FreeSid
|
||||
18B ImpersonateLoggedOnUser
|
||||
2C1 RevertToSelf
|
||||
17B GetUserNameW
|
||||
1A5 LogonUserW
|
||||
25F RegConnectRegistryW
|
||||
27D RegEnumValueW
|
||||
19E IsValidSid
|
||||
14B GetLengthSid
|
||||
85 CopySid
|
||||
18F InitializeSecurityDescriptor
|
||||
2E8 SetSecurityDescriptorDacl
|
||||
1A7 LookupAccountNameW
|
||||
2D8 SetEntriesInAclW
|
||||
83 ConvertStringSidToSidW
|
||||
65 CloseServiceHandle
|
||||
217 OpenSCManagerW
|
||||
219 OpenServiceW
|
||||
5D ChangeServiceConfigW
|
||||
250 QueryServiceStatus
|
||||
2FB StartServiceW
|
||||
27E RegFlushKey
|
||||
8B CreateProcessAsUserW
|
||||
288 RegNotifyChangeKeyValue
|
||||
2A9 RegSetValueExW
|
||||
F1 DuplicateTokenEx
|
||||
|
||||
SHELL32.dll
|
||||
1804C3820 Import Address Table
|
||||
180F788A0 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
176 SHGetSpecialFolderPathW
|
||||
|
||||
OLEAUT32.dll
|
||||
1804C3790 Import Address Table
|
||||
180F78810 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
Ordinal 201
|
||||
Ordinal 9
|
||||
Ordinal 202
|
||||
Ordinal 150
|
||||
Ordinal 2
|
||||
Ordinal 12
|
||||
Ordinal 7
|
||||
Ordinal 6
|
||||
Ordinal 10
|
||||
Ordinal 8
|
||||
Ordinal 149
|
||||
Ordinal 200
|
||||
|
||||
CRYPT32.dll
|
||||
1804C3120 Import Address Table
|
||||
180F781A0 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
7D CryptBinaryToStringW
|
||||
DF CryptStringToBinaryW
|
||||
|
||||
VCRUNTIME140.dll
|
||||
1804C3888 Import Address Table
|
||||
180F78908 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
1B __current_exception
|
||||
24 __std_type_info_compare
|
||||
3B memcmp
|
||||
36 _purecall
|
||||
E __CxxFrameHandler3
|
||||
1 _CxxThrowException
|
||||
F __CxxQueryExceptionSize
|
||||
B __CxxExceptionFilter
|
||||
10 __CxxRegisterExceptionObject
|
||||
A __CxxDetectRethrow
|
||||
11 __CxxUnregisterExceptionObject
|
||||
13 __FrameUnwindFilter
|
||||
3E memset
|
||||
21 __std_exception_copy
|
||||
22 __std_exception_destroy
|
||||
38 _set_se_translator
|
||||
3C memcpy
|
||||
3D memmove
|
||||
44 wcschr
|
||||
45 wcsrchr
|
||||
18 __RTDynamicCast
|
||||
8 __C_specific_handler
|
||||
25 __std_type_info_destroy_list
|
||||
1C __current_exception_context
|
||||
|
||||
VCRUNTIME140_1.dll
|
||||
1804C3950 Import Address Table
|
||||
180F789D0 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
0 __CxxFrameHandler4
|
||||
|
||||
api-ms-win-crt-stdio-l1-1-0.dll
|
||||
1804C3B30 Import Address Table
|
||||
180F78BB0 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
81 fputwc
|
||||
9E ungetwc
|
||||
79 fgetpos
|
||||
74 fclose
|
||||
7B fgetwc
|
||||
8A fwrite
|
||||
88 fsetpos
|
||||
98 setvbuf
|
||||
77 fflush
|
||||
78 fgetc
|
||||
9D ungetc
|
||||
C __stdio_common_vsnwprintf_s
|
||||
2F _fseeki64
|
||||
|
||||
api-ms-win-crt-string-l1-1-0.dll
|
||||
1804C3BA0 Import Address Table
|
||||
180F78C20 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
6E isspace
|
||||
4A _wcsicmp
|
||||
A6 wcsncmp
|
||||
A8 wcsncpy_s
|
||||
97 tolower
|
||||
9D wcscat_s
|
||||
7B iswspace
|
||||
6C isprint
|
||||
34 _strnicmp
|
||||
54 _wcsnicmp
|
||||
9B towupper
|
||||
2A _stricmp
|
||||
90 strncpy_s
|
||||
9A towlower
|
||||
A1 wcscpy_s
|
||||
71 iswalpha
|
||||
70 iswalnum
|
||||
B0 wmemcpy_s
|
||||
|
||||
api-ms-win-crt-filesystem-l1-1-0.dll
|
||||
1804C3A10 Import Address Table
|
||||
180F78A90 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
39 _wsplitpath_s
|
||||
25 _waccess
|
||||
24 _unlock_file
|
||||
16 _lock_file
|
||||
31 _wfullpath
|
||||
|
||||
api-ms-win-crt-runtime-l1-1-0.dll
|
||||
1804C3AA0 Import Address Table
|
||||
180F78B20 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
18 _configure_narrow_argv
|
||||
3F _seh_filter_dll
|
||||
36 _initterm
|
||||
67 terminate
|
||||
39 _invalid_parameter_noinfo_noreturn
|
||||
54 abort
|
||||
16 _cexit
|
||||
1D _crt_at_quick_exit
|
||||
38 _invalid_parameter_noinfo
|
||||
33 _initialize_narrow_environment
|
||||
34 _initialize_onexit_table
|
||||
21 _errno
|
||||
14 _beginthreadex
|
||||
3C _register_onexit_function
|
||||
1E _crt_atexit
|
||||
37 _initterm_e
|
||||
22 _execute_onexit_table
|
||||
|
||||
api-ms-win-crt-heap-l1-1-0.dll
|
||||
1804C3A40 Import Address Table
|
||||
180F78AC0 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
1A realloc
|
||||
15 _recalloc
|
||||
17 calloc
|
||||
18 free
|
||||
19 malloc
|
||||
8 _callnewh
|
||||
|
||||
api-ms-win-crt-convert-l1-1-0.dll
|
||||
1804C39B8 Import Address Table
|
||||
180F78A38 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
2F _ui64tow_s
|
||||
33 _ultow_s
|
||||
47 _wtoi
|
||||
6B wcstod
|
||||
50 atoi
|
||||
1E _ltow_s
|
||||
4B _wtol
|
||||
5E strtod
|
||||
73 wcstoul
|
||||
45 _wtof
|
||||
|
||||
api-ms-win-crt-utility-l1-1-0.dll
|
||||
1804C3C68 Import Address Table
|
||||
180F78CE8 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
1B rand
|
||||
1D srand
|
||||
|
||||
api-ms-win-crt-math-l1-1-0.dll
|
||||
1804C3A78 Import Address Table
|
||||
180F78AF8 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
7D ceilf
|
||||
29 _finite
|
||||
10 _dclass
|
||||
30 _isnan
|
||||
|
||||
ole32.dll
|
||||
1804C3C90 Import Address Table
|
||||
180F78D10 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
90 CoUninitialize
|
||||
61 CoInitializeEx
|
||||
1BE OleRun
|
||||
2B CoCreateInstance
|
||||
20C StringFromGUID2
|
||||
60 CoInitialize
|
||||
|
||||
SHLWAPI.dll
|
||||
1804C3830 Import Address Table
|
||||
180F788B0 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
158 StrToIntW
|
||||
|
||||
api-ms-win-crt-time-l1-1-0.dll
|
||||
1804C3C38 Import Address Table
|
||||
180F78CB8 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
20 _gmtime64_s
|
||||
30 _time64
|
||||
28 _mktime64
|
||||
24 _localtime64_s
|
||||
47 wcsftime
|
||||
|
||||
mscoree.dll
|
||||
1804C3C80 Import Address Table
|
||||
180F78D00 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
76 _CorDllMain
|
||||
|
||||
Summary
|
||||
|
||||
DA000 .data
|
||||
5D000 .nep
|
||||
6000 .pdata
|
||||
AB9000 .rdata
|
||||
2000 .reloc
|
||||
1000 .rsrc
|
||||
465000 .text
|
||||
@@ -0,0 +1,81 @@
|
||||
> WS2_32.dll
|
||||
1804C3980 Import Address Table
|
||||
180F78A00 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
2 FreeAddrInfoW
|
||||
9 GetNameInfoW
|
||||
B InetPtonW
|
||||
7 GetAddrInfoW
|
||||
Ordinal 115
|
||||
Ordinal 116
|
||||
|
||||
Secur32.dll
|
||||
1804C3840 Import Address Table
|
||||
180F788C0 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
24 InitializeSecurityContextW
|
||||
2 AcquireCredentialsHandleW
|
||||
0 AcceptSecurityContext
|
||||
36 QuerySecurityContextToken
|
||||
18 FreeCredentialsHandle
|
||||
|
||||
VERSION.dll
|
||||
1804C3960 Import Address Table
|
||||
180F789E0 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
8 GetFileVersionInfoW
|
||||
10 VerQueryValueW
|
||||
7 GetFileVersionInfoSizeW
|
||||
|
||||
RPCRT4.dll
|
||||
1804C37F8 Import Address Table
|
||||
180F78878 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
21D UuidCreate
|
||||
226 UuidToStringW
|
||||
214 RpcStringFreeW
|
||||
222 UuidFromStringW
|
||||
|
||||
NETAPI32.dll
|
||||
1804C3768 Import Address Table
|
||||
180F787E8 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
EF NetUserGetLocalGroups
|
||||
E0 NetShareGetInfo
|
||||
9B NetLocalGroupGetMembers
|
||||
51 NetApiBufferFree
|
||||
|
||||
MSVCP140.dll
|
||||
1804C34C8 Import Address Table
|
||||
180F78548 Import Name Table
|
||||
0 time date stamp
|
||||
0 Index of first forwarder reference
|
||||
|
||||
4C3 ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W0@Z
|
||||
12E ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_K@Z
|
||||
4BC ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z
|
||||
3CB ?id@?$codecvt@_WDU_Mbstatet@@@std@@2V0locale@2@A
|
||||
28C ?_Xbad_function_call@std@@YAXXZ
|
||||
28D ?_Xinvalid_argument@std@@YAXPEBD@Z
|
||||
283 ?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ
|
||||
282 ?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ
|
||||
1C8 ?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ
|
||||
57D _Mbrtowc
|
||||
28F ?_Xout_of_range@std@@YAXPEBD@Z
|
||||
28E ?_Xlength_error@std@@YAXPEBD@Z
|
||||
28B ?_Xbad_alloc@std@@YAXXZ
|
||||
34F ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ
|
||||
352 ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ
|
||||
35B ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ
|
||||
449 ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ
|
||||
4C9 ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z
|
||||
@@ -0,0 +1,281 @@
|
||||
# Frida Hook Pass: aahClientManaged Integrated Read
|
||||
|
||||
Scenario:
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\Attach-AahClientManagedFridaCapture.ps1 -TagName OtOpcUaParityTest_001.Counter -LookbackMinutes 1440 -MaxRows 1
|
||||
```
|
||||
|
||||
Artifacts:
|
||||
|
||||
- Script: `scripts\frida\aahclientmanaged-open-query.js`
|
||||
- Runner: `scripts\Attach-AahClientManagedFridaCapture.ps1`
|
||||
- Latest capture: `docs\reverse-engineering\frida-aahclientmanaged-attach-read-latest.ndjson`
|
||||
|
||||
## Result
|
||||
|
||||
The attach-based workflow is the reliable Frida path for this mixed CLR/native
|
||||
assembly:
|
||||
|
||||
1. Start Windows PowerShell.
|
||||
2. Load `current\aahClientManaged.dll`.
|
||||
3. Sleep briefly before creating `HistorianAccess`.
|
||||
4. Attach Frida to the already-loaded process.
|
||||
5. Install hooks at candidate RVAs.
|
||||
6. Continue the native integrated read.
|
||||
|
||||
Frida confirmed:
|
||||
|
||||
- target process architecture: `x64`
|
||||
- loaded module: `aahClientManaged.dll`
|
||||
- module base for latest run: `0x7ffd4a600000`
|
||||
- module size: `17166336`
|
||||
- path: `C:\Users\dohertj2\Desktop\histsdk\current\aahClientManaged.dll`
|
||||
|
||||
Hooks were installed for candidate method RVAs including:
|
||||
|
||||
- `CClientInfo.SerializeOpenConnectionInParams*`
|
||||
- `CHistoryConnectionWCF.OpenConnection*`
|
||||
- `HistorianClient.StartQuery`
|
||||
- `HistorianClient.StartDataQuery`
|
||||
- `ClientApp.StartDataQuery`
|
||||
- `Query.StartDataQuery`
|
||||
- `CRetrievalConnectionWCF.StartQuery2`
|
||||
- `QueryColumnSelector.SelectNonSummaryColumns`
|
||||
- `QueryColumnSelector.Save<SCrtMemFile>`
|
||||
- `QueryColumnSelector.GetColumnSelectorFlags`
|
||||
- `HistorianClient.GetNextRow<DataQueryResultRow>`
|
||||
- `HistorianClient.GetNextRow<EventQueryResultRow>`
|
||||
|
||||
No hook entry/leave events fired during the successful read.
|
||||
|
||||
## Interpretation
|
||||
|
||||
The `methods` command RVAs are not reliable executable hook targets for the
|
||||
successful path. They are CLR/mixed-mode method body locations or stubs, not the
|
||||
actual runtime addresses invoked after CLR/JIT/mixed-mode dispatch. Frida can
|
||||
see the module and can install some interceptors at `base + RVA`, but those
|
||||
addresses are not reached by the wrapper scenario.
|
||||
|
||||
The successful read still proves the scenario:
|
||||
|
||||
- integrated auth opens
|
||||
- `GetConnectionStatus` settles
|
||||
- `HistoryQuery.StartQuery` succeeds
|
||||
- `MoveNext` returns one row for `OtOpcUaParityTest_001.Counter`
|
||||
|
||||
An expanded pass based on decompiled call targets produced the same result:
|
||||
hooks installed for MethodDef RVAs such as `HistorianClient.StartDataQuery`
|
||||
(`0x4160C4`), `Query.StartDataQuery` (`0x41CACC`),
|
||||
`QueryColumnSelector.SelectNonSummaryColumns` (`0x1EE34`), and
|
||||
`HistorianClient.GetNextRow<DataQueryResultRow>` (`0x42F818`), but no
|
||||
entry/leave callbacks fired. Treat MethodDef RVAs from the mixed-mode assembly
|
||||
as insufficient for Frida interception without resolving the actual CLR/native
|
||||
dispatch target.
|
||||
|
||||
Runtime method-pointer dumps from
|
||||
`tools\AVEVA.Historian.NativeTraceHarness --dump-method-pointers ...` provide a
|
||||
better target class, but not stable RVAs. `RuntimeHelpers.PrepareMethod` plus
|
||||
`MethodHandle.GetFunctionPointer()` exposes process-local CLR/JIT entry
|
||||
addresses for methods such as `<Module>.HistorianClient.StartDataQuery`,
|
||||
`<Module>.CRetrievalConnectionWCF.StartQuery2`, and
|
||||
`<Module>.HistorianClient.GetNextRow<class DataQueryResultRow>`. The current
|
||||
artifacts mark all of these as `FunctionPointerInModule = false`, so they must
|
||||
be discovered in the same process that will be hooked.
|
||||
|
||||
`scripts\Attach-NativeTraceHarnessRuntimePointerCapture.ps1` now automates that
|
||||
same-process attempt. It starts `NativeTraceHarness`, writes a runtime pointer
|
||||
snapshot immediately before `StartQuery`, pauses, generates a temporary Frida
|
||||
script with the absolute addresses, and attaches to the still-paused process.
|
||||
The latest local direct history run installed 37 absolute hooks from
|
||||
`runtime-method-pointers-before-history-start-latest.json`; the read succeeded,
|
||||
but no hook `enter`/`leave` callbacks fired. This rules out raw Frida
|
||||
interception of `MethodHandle.GetFunctionPointer()` addresses as the next
|
||||
primary capture route.
|
||||
|
||||
## Decompiled Query Call Facts
|
||||
|
||||
`ArchestrA.HistoryQuery.StartQuery`:
|
||||
|
||||
- Calls `BaseQuery.GetClient`.
|
||||
- Calls `EndQuery` before starting a new query.
|
||||
- Converts tag names to a native UTF-16 pointer vector.
|
||||
- Builds a selected-column stream as:
|
||||
- `ushort` value `1`
|
||||
- 8-byte `QueryColumnSelector` payload
|
||||
- Calls `HistorianClient.StartDataQuery` with retrieval mode, query format `0`,
|
||||
summary type `0`, tag count, tag pointer vector, UTC FILETIME start/end,
|
||||
resolution, deadbands, time zone `UTC`, version/interpolation/timestamp/
|
||||
quality/value-selector/aggregation enum values, option/filter buffers,
|
||||
selected-column byte count and pointer, max states, output query handle, and
|
||||
`SError`.
|
||||
|
||||
`ArchestrA.EventQuery.StartQuery`:
|
||||
|
||||
- Calls `BaseQuery.GetClient`.
|
||||
- Calls `EndQuery` before starting a new event query.
|
||||
- Normalizes `EventCount = 0` to `100000` and enables a continue-query mode.
|
||||
- Calls `HistorianClient.StartEventQuery` with UTC FILETIME start/end, event
|
||||
count, skip count, event order as `ushort`, query type value `1`, filter
|
||||
pointer, time zone `UTC`, output query handle, and `SError`.
|
||||
|
||||
## Confirmed Managed Contract Shape
|
||||
|
||||
Decompilation confirms these WCF byte-buffer contracts:
|
||||
|
||||
- `HistoryServiceContract.IHistoryServiceContract2.OpenConnection2`
|
||||
- `HistoryServiceContract.IHistoryServiceContract2.ExchangeKey`
|
||||
- `HistoryServiceContract.IHistoryServiceContract2.ValidateClientCredential`
|
||||
- `RetrievalServiceContract.IRetrievalServiceContract2.StartQuery2`
|
||||
- `RetrievalServiceContract.IRetrievalServiceContract2.GetNextQueryResultBuffer2`
|
||||
- `RetrievalServiceContract.IRetrievalServiceContract2.EndQuery2`
|
||||
|
||||
`StartQuery2` signature:
|
||||
|
||||
```text
|
||||
bool StartQuery2(
|
||||
uint clientHandle,
|
||||
ushort queryRequestType,
|
||||
uint requestSize,
|
||||
byte[] pRequestBuff,
|
||||
out uint responseSize,
|
||||
out byte[] pResponseBuff,
|
||||
ref uint queryHandle,
|
||||
out uint errSize,
|
||||
out byte[] err)
|
||||
```
|
||||
|
||||
`GetNextQueryResultBuffer2` signature:
|
||||
|
||||
```text
|
||||
bool GetNextQueryResultBuffer2(
|
||||
uint clientHandle,
|
||||
uint queryHandle,
|
||||
out uint resultSize,
|
||||
out byte[] pResultBuff,
|
||||
out uint errSize,
|
||||
out byte[] err)
|
||||
```
|
||||
|
||||
## Next Hook Direction
|
||||
|
||||
Use profiler/API-boundary interception rather than raw Frida function-pointer
|
||||
interception:
|
||||
|
||||
- CLR profiler / managed method rewrite for `HistoryServiceContract.*` and
|
||||
`RetrievalServiceContract.*` calls.
|
||||
- API Monitor or Detours-style hooks at the lower native/WCF DLL boundary.
|
||||
- Focus first on capturing managed byte-array arguments to:
|
||||
- `OpenConnection2`
|
||||
- `ExchangeKey`
|
||||
- `ValidateClientCredential`
|
||||
- `StartQuery2`
|
||||
- `GetNextQueryResultBuffer2`
|
||||
|
||||
## WCF Diagnostics Attempt
|
||||
|
||||
`tools\AVEVA.Historian.NativeTraceHarness` attempted classic .NET Framework
|
||||
`System.ServiceModel` diagnostics and message logging while running the same
|
||||
successful integrated read. No `.svclog` file was produced, even though the
|
||||
scenario succeeded. This is negative evidence that the native wrapper path does
|
||||
not expose a managed WCF client pipeline in the harness AppDomain that can be
|
||||
captured with ordinary WCF config diagnostics. A profiler/method-rewrite hook
|
||||
remains the likely buffer-capture route.
|
||||
|
||||
## Event Add-Tag Hook Pass
|
||||
|
||||
Scenario:
|
||||
|
||||
```powershell
|
||||
.\tools\AVEVA.Historian.NativeTraceHarness\bin\Debug\net481\AVEVA.Historian.NativeTraceHarness.exe --scenario event --server-name localhost --tcp-port 32568 --connection-wait-seconds 15 --pre-open-sleep-seconds 15 --max-rows 1 --lookback-minutes 1440
|
||||
```
|
||||
|
||||
Artifacts:
|
||||
|
||||
- Script: `scripts\frida\aahclientmanaged-open-query.js`
|
||||
- Latest capture: `docs\reverse-engineering\frida-aahclientmanaged-event-addtag-latest.ndjson`
|
||||
- Native result: `docs\reverse-engineering\native-event-addtag-frida-child.json`
|
||||
|
||||
The native event query still succeeded and returned one event row. The
|
||||
expanded hook list installed hooks for the event default-tag path:
|
||||
|
||||
- `HistorianAccess.CreateDefaultEventTag` at method RVA `0x43c2d4`
|
||||
- `HistorianAccess.AddTagInternal` at method RVA `0x43be68`
|
||||
- `HistorianClient.AddHistorianTag` at method RVA `0x417c18`
|
||||
- `HistorianClient.ConvertEventTagToTagMetadata` at method RVA `0x417b68`
|
||||
- `CTagMetadata.Save<SByteStream<SCrtMemFile>>` at method RVA `0x1044dc`
|
||||
|
||||
The capture has hook-install events and some hook-install failures for other
|
||||
candidates, but still no enter/leave events. This confirms the same limitation
|
||||
as the history pass: MethodDef RVAs from this mixed-mode assembly are not the
|
||||
actual runtime entry points for the successful wrapper path. The next capture
|
||||
mechanism needs CLR method rewriting/profiling or a lower native boundary such
|
||||
as Winsock/API Monitor, not raw `base + RVA` Frida interceptors.
|
||||
|
||||
## Event Winsock/IPС Pass
|
||||
|
||||
`tools\AVEVA.Historian.NativeTraceHarness` now supports
|
||||
`--pre-load-sleep-seconds`, allowing Frida to attach before
|
||||
`aahClientManaged.dll` is loaded. Running the event scenario with that preload
|
||||
pause produced:
|
||||
|
||||
- `docs\reverse-engineering\winsock-event-preload-localhost-latest.ndjson`
|
||||
- native event open succeeded
|
||||
- `StartQuery` succeeded
|
||||
- one event row returned
|
||||
- no Historian-port `connect`/`send`/`recv` events
|
||||
- no tracked named-pipe or interesting file `ReadFile`/`WriteFile` payloads
|
||||
|
||||
For the local event scenario, the successful wrapper path is therefore not
|
||||
visible through the current Winsock or named-pipe hook set. Keep the preload
|
||||
pause because it is useful for future lower-level hooks, but the next byte
|
||||
capture should target CLR method arguments, API Monitor at the native/WCF DLL
|
||||
boundary, or a real remote/relay path where traffic leaves the process.
|
||||
|
||||
The remote relay path does expose event-mode transport, but it still stops at
|
||||
the security layer. With endpoint-host rewriting enabled, event mode sends
|
||||
`/HistCert` over `application/ssl-tls`, then repeats `/Hist-Integrated` over
|
||||
`application/negotiate` with NTLMSSP messages. The server returns a short reject
|
||||
record before the native harness reaches connected state, so this path has
|
||||
endpoint/security evidence but still no query payload evidence.
|
||||
|
||||
## aahClient Export Hook Pass
|
||||
|
||||
`scripts\frida\aahclient-exports.js` and
|
||||
`scripts\Attach-NativeTraceHarnessAahClientExportCapture.ps1` hook the
|
||||
procedural `mdas_*` exports from `aahClient.dll` if that DLL is loaded. The
|
||||
first local direct history run attached before `aahClientManaged.dll` load and
|
||||
the native read succeeded, but Frida never observed `aahClient.dll` being loaded
|
||||
and installed no export hooks. A separate `-DumpLoadedModules` run of the older
|
||||
PowerShell harness also showed only `aahClientManaged.dll` among the current
|
||||
AVEVA DLL set during a successful wrapper read.
|
||||
|
||||
That rules out `aahClient.dll` exports as the immediate capture boundary for
|
||||
the active wrapper path. The `mdas_*` exports may still describe a separate
|
||||
native client ABI, but they are not the calls currently made by
|
||||
`HistoryQuery.StartQuery` in this harness.
|
||||
|
||||
## System Boundary Hook Pass
|
||||
|
||||
`scripts\frida\aahclientmanaged-system-boundary.js` and
|
||||
`scripts\Attach-NativeTraceHarnessSystemBoundaryCapture.ps1` hook the imported
|
||||
system/API boundary used by `aahClientManaged.dll`: file I/O, `NtCreateFile`,
|
||||
`NtReadFile`, `NtWriteFile`, `NtDeviceIoControlFile`, DNS, exported Winsock
|
||||
connect/send/recv APIs, `WSAIoctl`, `mswsock` extension exports, Secur32,
|
||||
Crypt32, and NetAPI.
|
||||
|
||||
Local direct history and same-machine remote-IP reads still succeeded without
|
||||
file/pipe/socket/security callbacks beyond hook installation. This reinforces
|
||||
that the local Historian path is optimized below the query surface we need.
|
||||
|
||||
The Debian relay run adds one sharper fact. The relay accepted connections from
|
||||
the Windows host, and the Windows TCP owner monitor attributed the established
|
||||
connection to the `AVEVA.Historian.NativeTraceHarness` PID. Even with hooks
|
||||
installed in that same PID before `OpenConnection`, no exported Winsock,
|
||||
`WSAIoctl`, `mswsock`, or `NtDeviceIoControlFile` callbacks fired. The relay
|
||||
connection still reset before the harness reached `ConnectedToServer = true`.
|
||||
|
||||
That makes raw Frida export hooks insufficient for the remaining transport
|
||||
capture. The next local capture mechanism should be ETW/netsh/WFP/kernel-level
|
||||
network tracing, API Monitor/Detours below the wrapper, or CLR profiler/IL
|
||||
instrumentation inside the mixed-mode assembly.
|
||||
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"Rows": [
|
||||
{
|
||||
"Index": 0,
|
||||
"Sha256": "ed1b47b525e0b6376a4971cb3f0b0cc41e210c861c0c9dbff3bed7aaf56cedd8",
|
||||
"ManagedEventTimeUtc": "2026-04-26T01:24:13.6890000Z",
|
||||
"ManagedReceivedTimeUtc": "2026-04-26T01:24:14.0694578Z",
|
||||
"ManagedEventType": "User.Write.Secured",
|
||||
"EventTimeFileTimeOffsets": [
|
||||
"0x0018"
|
||||
],
|
||||
"ReceivedTimeFileTimeOffsets": [],
|
||||
"UInt32_0": 2425116024,
|
||||
"UInt32_4": 32764,
|
||||
"UInt32_16": 3276024449,
|
||||
"UInt32_24": 1681784464,
|
||||
"CandidateGuidsFirst512": [
|
||||
"0x0000:908c5578-7ffc-0000-f9d6-0943872add44",
|
||||
"0x0008:4309d6f9-2a87-44dd-812a-44c3da2a0d48",
|
||||
"0x0010:c3442a81-2ada-480d-90fe-3d641bd5dc01",
|
||||
"0x0018:643dfe90-d51b-01dc-0000-000000000000",
|
||||
"0x0028:43e1fa80-015d-0000-b04b-f4255d012600",
|
||||
"0x0030:25f44bb0-015d-0026-1200-000000000000",
|
||||
"0x0048:cac30000-7ffc-0000-30e2-c3cafc7f0000",
|
||||
"0x0088:c82f0000-0031-0000-b5eb-67cafc7f0000"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Index": 1,
|
||||
"Sha256": "59226efdb1ec72d19ac46d49c6b34738f7cbc9b0cbb9073024b13aaffb2c79c5",
|
||||
"ManagedEventTimeUtc": "2026-04-26T01:27:27.5750000Z",
|
||||
"ManagedReceivedTimeUtc": "2026-04-26T01:27:28.0515993Z",
|
||||
"ManagedEventType": "User.Write.Secured",
|
||||
"EventTimeFileTimeOffsets": [
|
||||
"0x0018"
|
||||
],
|
||||
"ReceivedTimeFileTimeOffsets": [],
|
||||
"UInt32_0": 2425116024,
|
||||
"UInt32_4": 32764,
|
||||
"UInt32_16": 1261349795,
|
||||
"UInt32_24": 3620644464,
|
||||
"CandidateGuidsFirst512": [
|
||||
"0x0000:908c5578-7ffc-0000-1a66-179b9f7f7641",
|
||||
"0x0008:9b17661a-7f9f-4176-a3ab-2e4bd2bdf7af",
|
||||
"0x0010:4b2eaba3-bdd2-aff7-70a6-ced71bd5dc01",
|
||||
"0x0018:d7cea670-d51b-01dc-0000-000000000000",
|
||||
"0x00C8:3f800000-015d-0000-5036-de435d010000",
|
||||
"0x00E0:43df1b30-015d-0000-301f-df435d010000",
|
||||
"0x00E8:43df1f30-015d-0000-301f-df435d010000",
|
||||
"0x0110:ca5fa300-7ffc-0000-01d1-f7e569d20000"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Sha256": "780af7ec3a20ca264d16357c64e47bae7782d2e0cf38bb4a144c69160d25d7d0",
|
||||
"ManagedEventTimeUtc": "2026-04-26T01:27:55.5750000Z",
|
||||
"ManagedReceivedTimeUtc": "2026-04-26T01:27:56.0491226Z",
|
||||
"ManagedEventType": "User.Write.Secured",
|
||||
"EventTimeFileTimeOffsets": [
|
||||
"0x0018"
|
||||
],
|
||||
"ReceivedTimeFileTimeOffsets": [],
|
||||
"UInt32_0": 2425116024,
|
||||
"UInt32_4": 32764,
|
||||
"UInt32_16": 203626129,
|
||||
"UInt32_24": 3900644464,
|
||||
"CandidateGuidsFirst512": [
|
||||
"0x0000:908c5578-7ffc-0000-6409-7dc6ab5afb44",
|
||||
"0x0008:c67d0964-5aab-44fb-9116-230c0dd54f03",
|
||||
"0x0010:0c231691-d50d-034f-701c-7fe81bd5dc01",
|
||||
"0x0018:e87f1c70-d51b-01dc-0000-000000000000",
|
||||
"0x0048:c82f0000-0031-0000-8434-80cafc7f0000",
|
||||
"0x00C8:3f800000-0000-0000-5036-de435d010000",
|
||||
"0x00E0:43df06e0-015d-0000-e00a-df435d010000",
|
||||
"0x00E8:43df0ae0-015d-0000-e00a-df435d010000"
|
||||
]
|
||||
}
|
||||
],
|
||||
"Count": 3,
|
||||
"Notes": "Raw EventQueryResultRow snapshots are retained only under ignored artifacts. This doc stores hashes, managed timestamps, and matching FILETIME offsets."
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"CapturedLength": 512,
|
||||
"UInt32_4": 1,
|
||||
"HexFirst256": [
|
||||
"0000: EE 00 00 00 01 00 00 00 10 2A 4B E7 3B 02 00 00 .........*K.;...",
|
||||
"0010: 00 00 00 00 00 00 00 00 1D 00 00 00 00 00 00 00 ................",
|
||||
"0020: 1F 00 00 00 00 00 00 00 5E A1 29 8D 76 D9 DC 01 ........^.).v...",
|
||||
"0030: 85 00 00 00 F8 00 00 00 C0 00 00 00 00 00 00 00 ................",
|
||||
"0040: 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 ................",
|
||||
"0050: 08 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 ................",
|
||||
"0060: 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................",
|
||||
"0070: 00 00 00 00 FC 7F 00 00 00 00 00 00 00 00 00 00 ................",
|
||||
"0080: 00 00 00 00 00 00 59 40 00 00 00 00 00 00 00 00 ......Y@........",
|
||||
"0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................",
|
||||
"00A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................",
|
||||
"00B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................",
|
||||
"00C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................",
|
||||
"00D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................",
|
||||
"00E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................",
|
||||
"00F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................"
|
||||
],
|
||||
"UInt32_304": 0,
|
||||
"UInt32_0": 238,
|
||||
"Sha256": "2c2cb06988187c1bd7793a52a71f33599542a69d5e83885c583de8bf3df5d43b",
|
||||
"UInt32_308": 0,
|
||||
"Int64_48": 1065151889541,
|
||||
"UInt32_300": 0,
|
||||
"Double_80": 2.590366E-318
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"Count": 2,
|
||||
"Rows": [
|
||||
{
|
||||
"Index": 0,
|
||||
"Sha256": "09de8a05e230f8367265a3034d8d1fac17b34afeeb122ebfdbfe699a41855a99",
|
||||
"TagKey": 238,
|
||||
"EndUtc_0x28": "2026-05-01T14:36:00.7909908Z",
|
||||
"StartUtc_0x150": "2026-04-24T15:56:00.7909908Z",
|
||||
"Quality_0x30": 0,
|
||||
"QualityDetail_0x34": 248,
|
||||
"OpcQuality_0x38": 192,
|
||||
"PercentGood_0x80": 100.0,
|
||||
"ResolutionCandidate_0x1B8": 7
|
||||
},
|
||||
{
|
||||
"Index": 1,
|
||||
"Sha256": "09de8a05e230f8367265a3034d8d1fac17b34afeeb122ebfdbfe699a41855a99",
|
||||
"TagKey": 238,
|
||||
"EndUtc_0x28": "2026-05-01T14:36:00.7909908Z",
|
||||
"StartUtc_0x150": "2026-04-24T15:56:00.7909908Z",
|
||||
"Quality_0x30": 0,
|
||||
"QualityDetail_0x34": 248,
|
||||
"OpcQuality_0x38": 192,
|
||||
"PercentGood_0x80": 100.0,
|
||||
"ResolutionCandidate_0x1B8": 7
|
||||
}
|
||||
],
|
||||
"Notes": "Interpolated row layout matches aggregate time-bound offsets in this fixture; second capture duplicates the first after no-more-data."
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"Count": 3,
|
||||
"Rows": [
|
||||
{
|
||||
"Index": 0,
|
||||
"Sha256": "171fee4de57c4130a7d716a26906eb4481328ffb931251ad49acc0182f384578",
|
||||
"TagKey": 238,
|
||||
"EndUtc_0x28": "2026-05-01T14:34:18.8170203Z",
|
||||
"StartUtc_0x150": "2026-04-24T15:54:18.8170203Z",
|
||||
"Quality_0x30": 0,
|
||||
"QualityDetail_0x34": 64,
|
||||
"OpcQuality_0x38": 64,
|
||||
"PercentGood_0x80": 19.614948272705078,
|
||||
"ResolutionScaled_0x1A8": 0,
|
||||
"ResolutionCandidate_0x1B8": 7
|
||||
},
|
||||
{
|
||||
"Index": 1,
|
||||
"Sha256": "ff8848ca8765fe97f76a82a2006511ccfb055b139a6eced3ded9715261e12d86",
|
||||
"TagKey": 238,
|
||||
"EndUtc_0x28": "2026-05-02T14:34:18.8170203Z",
|
||||
"StartUtc_0x150": "2026-05-01T14:34:18.8170203Z",
|
||||
"Quality_0x30": 0,
|
||||
"QualityDetail_0x34": 4160,
|
||||
"OpcQuality_0x38": 64,
|
||||
"PercentGood_0x80": 99.99822998046875,
|
||||
"ResolutionScaled_0x1A8": 0,
|
||||
"ResolutionCandidate_0x1B8": 7
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Sha256": "ff8848ca8765fe97f76a82a2006511ccfb055b139a6eced3ded9715261e12d86",
|
||||
"TagKey": 238,
|
||||
"EndUtc_0x28": "2026-05-02T14:34:18.8170203Z",
|
||||
"StartUtc_0x150": "2026-05-01T14:34:18.8170203Z",
|
||||
"Quality_0x30": 0,
|
||||
"QualityDetail_0x34": 4160,
|
||||
"OpcQuality_0x38": 64,
|
||||
"PercentGood_0x80": 99.99822998046875,
|
||||
"ResolutionScaled_0x1A8": 0,
|
||||
"ResolutionCandidate_0x1B8": 7
|
||||
}
|
||||
],
|
||||
"Notes": "0x28 is managed EndDateTime for aggregate rows; 0x150 is managed StartDateTime. Last two captures are duplicate no-more-data snapshots."
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,91 @@
|
||||
221515:// Class QueryColumnSelector (sequential) (ansi) (sealed)
|
||||
222202:// Class DataQueryResultRow (sequential) (ansi) (sealed)
|
||||
224482:// Class HistoryQuery (sequential) (ansi) (sealed)
|
||||
224598:// Class HistoryQueryArgs (sequential) (ansi) (sealed)
|
||||
224599:// Class HistoryQueryResult (sequential) (ansi) (sealed)
|
||||
224833:// Class _Ref_count_resource<wchar_t const * *,Wonderware::HistoryQuery::ArrayDeleter<wchar_t const *> > (sequential) (ansi) (sealed)
|
||||
224834:// Class _Temporary_owner_del<wchar_t const * *,Wonderware::HistoryQuery::ArrayDeleter<wchar_t const *> > (sequential) (ansi) (sealed)
|
||||
224855:// Class _Compressed_pair<Wonderware::HistoryQuery::ArrayDeleter<wchar_t const *>,wchar_t const * *,1> (sequential) (ansi) (sealed)
|
||||
226006:// Class _Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *> > > > (sequential) (ansi) (sealed)
|
||||
226014:// Class _Tree_unchecked_const_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *> > >,std::_Iterator_base0> (sequential) (ansi) (sealed)
|
||||
226022:// Class _Tree_id<std::_Tree_node<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *>,void *> *> (sequential) (ansi) (sealed)
|
||||
226041:// Class DataQueryRequest (sequential) (ansi) (sealed)
|
||||
226042:// Class DataQueryResultBuffer (sequential) (ansi) (sealed)
|
||||
226131:// Class CActiveDataQuery (sequential) (ansi) (sealed)
|
||||
226147:// Class SExternallyLocked<std::map<unsigned long,aahClientCommon::CActiveDataQuery *,std::less<unsigned long>,std::allocator<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *> > >,SProtectCriticalSection<ProtectCSDefault> > (sequential) (ansi) (sealed)
|
||||
226154:// Class map<unsigned long,aahClientCommon::CActiveDataQuery *,std::less<unsigned long>,std::allocator<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *> > > (sequential) (ansi) (sealed)
|
||||
226167:// Class pair<unsigned long const ,aahClientCommon::CActiveDataQuery *> (sequential) (ansi) (sealed)
|
||||
226168:// Class _Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *> > > > (sequential) (ansi) (sealed)
|
||||
226193:// Class _Tree<std::_Tmap_traits<unsigned long,aahClientCommon::CActiveDataQuery *,std::less<unsigned long>,std::allocator<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *> >,0> > (sequential) (ansi) (sealed)
|
||||
226276:// Class _Tree_node<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *>,void *> (sequential) (ansi) (sealed)
|
||||
226278:// Class _Tree_val<std::_Tree_simple_types<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *> > > (sequential) (ansi) (sealed)
|
||||
226322:// Class allocator<std::_Tree_node<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *>,void *> > (sequential) (ansi) (sealed)
|
||||
226354:// Class _Compressed_pair<std::allocator<std::_Tree_node<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *>,void *> >,std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *> > >,1> (sequential) (ansi) (sealed)
|
||||
226405:// Class pair<std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *> > > >,bool> (sequential) (ansi) (sealed)
|
||||
226419:// Class _Compressed_pair<std::less<unsigned long>,std::_Compressed_pair<std::allocator<std::_Tree_node<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *>,void *> >,std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *> > >,1>,1> (sequential) (ansi) (sealed)
|
||||
226467:// Class _Tree_unchecked_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *> > > > (sequential) (ansi) (sealed)
|
||||
226497:// Class pair<std::_Tree_node<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *>,void *> *,bool> (sequential) (ansi) (sealed)
|
||||
226498:// Class _Tree_find_result<std::_Tree_node<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *>,void *> *> (sequential) (ansi) (sealed)
|
||||
226520:// Class _Tree_temp_node<std::allocator<std::_Tree_node<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *>,void *> > > (sequential) (ansi) (sealed)
|
||||
226522:// Class _Alloc_construct_ptr<std::allocator<std::_Tree_node<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *>,void *> > > (sequential) (ansi) (sealed)
|
||||
226523:// Class _In_place_key_extract_map<unsigned long,std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *> > (sequential) (ansi) (sealed)
|
||||
226539:// Class _Default_allocator_traits<std::allocator<std::_Tree_node<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *>,void *> > > (sequential) (ansi) (sealed)
|
||||
226543:// Class _Tree_temp_node_alloc<std::allocator<std::_Tree_node<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *>,void *> > > (sequential) (ansi) (sealed)
|
||||
226555:// Class _Tmap_traits<unsigned long,aahClientCommon::CActiveDataQuery *,std::less<unsigned long>,std::allocator<std::pair<unsigned long const ,aahClientCommon::CActiveDataQuery *> >,0> (sequential) (ansi) (sealed)
|
||||
226570:// Class DataQueryResponse (sequential) (ansi) (sealed)
|
||||
226571:// Class DataQueryResponseVersion (auto) (ansi) (sealed) (nested assembly)
|
||||
227149:// Interface IHistoryServiceContract (public) (abstract) (auto) (ansi)
|
||||
227150:// Interface IHistoryServiceContract2 (public) (abstract) (auto) (ansi)
|
||||
227196:// Class gcroot<HistoryServiceContract::IHistoryServiceContract2 ^> (sequential) (ansi) (sealed)
|
||||
227598:// Interface IRetrievalServiceContract (public) (abstract) (auto) (ansi)
|
||||
227599:// Interface IRetrievalServiceContract2 (public) (abstract) (auto) (ansi)
|
||||
227600:// Interface IRetrievalServiceContract3 (public) (abstract) (auto) (ansi)
|
||||
227601:// Interface IRetrievalServiceContract4 (public) (abstract) (auto) (ansi)
|
||||
227690:// Class CRetrievalConnectionWCF (sequential) (ansi) (sealed)
|
||||
227691:// Class gcroot<RetrievalServiceContract::IRetrievalServiceContract4 ^> (sequential) (ansi) (sealed)
|
||||
228414:// Class _Vector_iterator<std::_Vector_val<std::_Simple_types<EventQueryCondition> > > (sequential) (ansi) (sealed)
|
||||
228415:// Class _Vector_const_iterator<std::_Vector_val<std::_Simple_types<EventQueryCondition> > > (sequential) (ansi) (sealed)
|
||||
228424:// Class EventQueryCondition (sequential) (ansi) (sealed)
|
||||
228425:// Class EventQueryFilter (sequential) (ansi) (sealed)
|
||||
228426:// Class EventQueryFilters (sequential) (ansi) (sealed)
|
||||
228427:// Class EventQueryResultBuffer (sequential) (ansi) (sealed)
|
||||
228436:// Class HistorianClient (sequential) (ansi) (sealed)
|
||||
228440:// Class ClientApp (sequential) (ansi) (sealed)
|
||||
228443:// Class SExternallyLocked<SHashMap<unsigned long,HistorianClient *>,SProtectCriticalSection<ProtectCSDefault> > (sequential) (ansi) (sealed)
|
||||
228444:// Class SHashMap<unsigned long,HistorianClient *> (sequential) (ansi) (sealed)
|
||||
228452:// Class vector<SHashMap<unsigned long,HistorianClient *>::TreeAssoc,std::allocator<SHashMap<unsigned long,HistorianClient *>::TreeAssoc> > (sequential) (ansi) (sealed)
|
||||
228453:// Class vector<SHashMap<unsigned long,HistorianClient *>::RootAssoc,std::allocator<SHashMap<unsigned long,HistorianClient *>::RootAssoc> > (sequential) (ansi) (sealed)
|
||||
228462:// Class _Vector_const_iterator<std::_Vector_val<std::_Simple_types<EventQueryFilter> > > (sequential) (ansi) (sealed)
|
||||
228463:// Class vector<EventQueryFilter,std::allocator<EventQueryFilter> > (sequential) (ansi) (sealed)
|
||||
228464:// Class vector<EventQueryCondition,std::allocator<EventQueryCondition> > (sequential) (ansi) (sealed)
|
||||
228473:// Class _Tidy_guard<std::vector<EventQueryFilter,std::allocator<EventQueryFilter> > > (sequential) (ansi) (sealed)
|
||||
228478:// Class allocator<EventQueryFilter> (sequential) (ansi) (sealed)
|
||||
228479:// Class _Default_allocator_traits<std::allocator<EventQueryFilter> > (sequential) (ansi) (sealed)
|
||||
228480:// Class allocator<EventQueryCondition> (sequential) (ansi) (sealed)
|
||||
228485:// Class allocator<SHashMap<unsigned long,HistorianClient *>::TreeAssoc> (sequential) (ansi) (sealed)
|
||||
228486:// Class allocator<SHashMap<unsigned long,HistorianClient *>::RootAssoc> (sequential) (ansi) (sealed)
|
||||
228487:// Class _Compressed_pair<std::allocator<EventQueryFilter>,std::_Vector_val<std::_Simple_types<EventQueryFilter> >,1> (sequential) (ansi) (sealed)
|
||||
228488:// Class _Compressed_pair<std::allocator<EventQueryCondition>,std::_Vector_val<std::_Simple_types<EventQueryCondition> >,1> (sequential) (ansi) (sealed)
|
||||
228490:// Class _Compressed_pair<std::allocator<SHashMap<unsigned long,HistorianClient *>::TreeAssoc>,std::_Vector_val<std::_Simple_types<SHashMap<unsigned long,HistorianClient *>::TreeAssoc> >,1> (sequential) (ansi) (sealed)
|
||||
228491:// Class _Compressed_pair<std::allocator<SHashMap<unsigned long,HistorianClient *>::RootAssoc>,std::_Vector_val<std::_Simple_types<SHashMap<unsigned long,HistorianClient *>::RootAssoc> >,1> (sequential) (ansi) (sealed)
|
||||
228492:// Class EventQueryResultRow (sequential) (ansi) (sealed)
|
||||
228496:// Class _Vector_val<std::_Simple_types<EventQueryFilter> > (sequential) (ansi) (sealed)
|
||||
228497:// Class _Vector_val<std::_Simple_types<EventQueryCondition> > (sequential) (ansi) (sealed)
|
||||
228498:// Class _Default_allocator_traits<std::allocator<EventQueryCondition> > (sequential) (ansi) (sealed)
|
||||
228511:// Class _Vector_val<std::_Simple_types<SHashMap<unsigned long,HistorianClient *>::TreeAssoc> > (sequential) (ansi) (sealed)
|
||||
228512:// Class _Vector_val<std::_Simple_types<SHashMap<unsigned long,HistorianClient *>::RootAssoc> > (sequential) (ansi) (sealed)
|
||||
228514:// Class _Tidy_guard<std::vector<EventQueryCondition,std::allocator<EventQueryCondition> > > (sequential) (ansi) (sealed)
|
||||
228519:// Class _Uninitialized_backout_al<std::allocator<EventQueryCondition> > (sequential) (ansi) (sealed)
|
||||
228521:// Class _Uninitialized_backout_al<std::allocator<EventQueryFilter> > (sequential) (ansi) (sealed)
|
||||
228532:// Class _Uninitialized_backout_al<std::allocator<SHashMap<unsigned long,HistorianClient *>::RootAssoc> > (sequential) (ansi) (sealed)
|
||||
228533:// Class _Uninitialized_backout_al<std::allocator<SHashMap<unsigned long,HistorianClient *>::TreeAssoc> > (sequential) (ansi) (sealed)
|
||||
228534:// Class _Default_allocator_traits<std::allocator<SHashMap<unsigned long,HistorianClient *>::TreeAssoc> > (sequential) (ansi) (sealed)
|
||||
228535:// Class _Default_allocator_traits<std::allocator<SHashMap<unsigned long,HistorianClient *>::RootAssoc> > (sequential) (ansi) (sealed)
|
||||
228636:// Class EventQueryRequest (sequential) (ansi) (sealed)
|
||||
228830:// Class EventQueryArgsBase (public) (auto) (ansi)
|
||||
228831:// Class EventQueryArgs (public) (auto) (ansi)
|
||||
228832:// Class EventQuery (public) (auto) (ansi)
|
||||
228835:// Class HistorianEventQueryType (public) (auto) (ansi) (sealed)
|
||||
228873:// Class HistoryQueryArgs (public) (auto) (ansi)
|
||||
228874:// Class HistoryQueryResult (public) (auto) (ansi)
|
||||
228875:// Class HistoryQuery (public) (auto) (ansi)
|
||||
@@ -0,0 +1,108 @@
|
||||
|
||||
.class /*02001EF9*/ public auto ansi beforefieldinit ArchestrA.HistoryQuery
|
||||
extends ArchestrA.BaseQuery/*02001E55*/
|
||||
implements [mscorlib/*23000001*/]System.IDisposable/*01000049*/
|
||||
{
|
||||
.method /*060062A2*/ public hidebysig instance bool
|
||||
marshal( unsigned int8)
|
||||
MoveNext([out] class ArchestrA.HistorianAccessError/*02001E2E*/& 'error') cil managed
|
||||
// SIG: 20 01 02 10 12 C0 00 78 B8
|
||||
{
|
||||
// Method begins at RVA 0x4405d4
|
||||
// Code size 142 (0x8e)
|
||||
.maxstack 4
|
||||
.locals /*110030A3*/ (bool V_0,
|
||||
valuetype HistorianClient/*02001D42*/* V_1,
|
||||
valuetype SError/*0200043D*/ V_2,
|
||||
uint32 V_3)
|
||||
IL_0000: /* 16 | */ ldc.i4.0
|
||||
IL_0001: /* 0D | */ stloc.3
|
||||
IL_0002: /* 02 | */ ldarg.0
|
||||
IL_0003: /* 03 | */ ldarg.1
|
||||
IL_0004: /* 28 | (06)0061B5 */ call instance valuetype HistorianClient/*02001D42*/* ArchestrA.BaseQuery/*02001E55*/::GetClient(class ArchestrA.HistorianAccessError/*02001E2E*/&) /* 060061B5 */
|
||||
IL_0009: /* 0B | */ stloc.1
|
||||
IL_000a: /* 07 | */ ldloc.1
|
||||
IL_000b: /* 2D | 02 */ brtrue.s IL_000f
|
||||
|
||||
IL_000d: /* 16 | */ ldc.i4.0
|
||||
IL_000e: /* 2A | */ ret
|
||||
|
||||
IL_000f: /* 02 | */ ldarg.0
|
||||
IL_0010: /* 7B | (04)009EFB */ ldfld uint32 modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsLong/*0100000C*/) ArchestrA.BaseQuery/*02001E55*/::queryHandle /* 04009EFB */
|
||||
IL_0015: /* 2D | 0C */ brtrue.s IL_0023
|
||||
|
||||
IL_0017: /* 03 | */ ldarg.1
|
||||
IL_0018: /* 1A | */ ldc.i4.4
|
||||
IL_0019: /* 1F | 3A */ ldc.i4.s 58
|
||||
IL_001b: /* 73 | (06)005F77 */ newobj instance void ArchestrA.HistorianAccessError/*02001E2E*/::.ctor(valuetype ArchestrA.HistorianAccessError/*02001E2E*//ErrorTypeValue/*02001E30*/,
|
||||
valuetype ArchestrA.HistorianAccessError/*02001E2E*//ErrorValue/*02001E2F*/) /* 06005F77 */
|
||||
IL_0020: /* 51 | */ stind.ref
|
||||
IL_0021: /* 16 | */ ldc.i4.0
|
||||
IL_0022: /* 2A | */ ret
|
||||
|
||||
IL_0023: /* 02 | */ ldarg.0
|
||||
IL_0024: /* 7B | (04)00A087 */ ldfld class ArchestrA.HistoryQueryResult/*02001EF8*/ ArchestrA.HistoryQuery/*02001EF9*/::queryResult /* 0400A087 */
|
||||
IL_0029: /* 28 | (06)006262 */ call instance void ArchestrA.HistoryQueryResult/*02001EF8*/::CleanResult() /* 06006262 */
|
||||
IL_002e: /* 12 | 02 */ ldloca.s V_2
|
||||
IL_0030: /* 16 | */ ldc.i4.0
|
||||
IL_0031: /* 6A | */ conv.i8
|
||||
IL_0032: /* 55 | */ stind.i8
|
||||
IL_0033: /* 12 | 02 */ ldloca.s V_2
|
||||
IL_0035: /* 1E | */ ldc.i4.8
|
||||
IL_0036: /* 58 | */ add
|
||||
IL_0037: /* 16 | */ ldc.i4.0
|
||||
IL_0038: /* 54 | */ stind.i4
|
||||
IL_0039: /* 12 | 02 */ ldloca.s V_2
|
||||
IL_003b: /* 1F | 0C */ ldc.i4.s 12
|
||||
IL_003d: /* 58 | */ add
|
||||
IL_003e: /* 16 | */ ldc.i4.0
|
||||
IL_003f: /* 54 | */ stind.i4
|
||||
.try
|
||||
{
|
||||
IL_0040: /* 07 | */ ldloc.1
|
||||
IL_0041: /* 02 | */ ldarg.0
|
||||
IL_0042: /* 7B | (04)009EFB */ ldfld uint32 modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsLong/*0100000C*/) ArchestrA.BaseQuery/*02001E55*/::queryHandle /* 04009EFB */
|
||||
IL_0047: /* 02 | */ ldarg.0
|
||||
IL_0048: /* 7B | (04)00A087 */ ldfld class ArchestrA.HistoryQueryResult/*02001EF8*/ ArchestrA.HistoryQuery/*02001EF9*/::queryResult /* 0400A087 */
|
||||
IL_004d: /* 28 | (06)006263 */ call instance valuetype DataQueryResultRow/*020004E8*/* ArchestrA.HistoryQueryResult/*02001EF8*/::get_UnmanagedQueryResult() /* 06006263 */
|
||||
IL_0052: /* 12 | 02 */ ldloca.s V_2
|
||||
IL_0054: /* 28 | (06)00588D */ call bool modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'HistorianClient.GetNextRow<class DataQueryResultRow>'(valuetype HistorianClient/*02001D42*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/),
|
||||
uint32 modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsLong/*0100000C*/),
|
||||
valuetype DataQueryResultRow/*020004E8*/*,
|
||||
valuetype SError/*0200043D*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsImplicitlyDereferenced/*01000012*/)) /* 0600588D */
|
||||
IL_0059: /* 2D | 0D */ brtrue.s IL_0068
|
||||
|
||||
IL_005b: /* 03 | */ ldarg.1
|
||||
IL_005c: /* 12 | 02 */ ldloca.s V_2
|
||||
IL_005e: /* 73 | (06)005F73 */ newobj instance void ArchestrA.HistorianAccessError/*02001E2E*/::.ctor(valuetype SError/*0200043D*/ modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsImplicitlyDereferenced/*01000012*/)) /* 06005F73 */
|
||||
IL_0063: /* 51 | */ stind.ref
|
||||
IL_0064: /* 16 | */ ldc.i4.0
|
||||
IL_0065: /* 0A | */ stloc.0
|
||||
IL_0066: /* DE | 1D */ leave.s IL_0085
|
||||
|
||||
IL_0068: /* 02 | */ ldarg.0
|
||||
IL_0069: /* 7B | (04)00A087 */ ldfld class ArchestrA.HistoryQueryResult/*02001EF8*/ ArchestrA.HistoryQuery/*02001EF9*/::queryResult /* 0400A087 */
|
||||
IL_006e: /* 28 | (06)006260 */ call instance void ArchestrA.HistoryQueryResult/*02001EF8*/::InitializeBasicProperties() /* 06006260 */
|
||||
IL_0073: /* 17 | */ ldc.i4.1
|
||||
IL_0074: /* 0A | */ stloc.0
|
||||
IL_0075: /* DE | 0E */ leave.s IL_0085
|
||||
|
||||
} // end .try
|
||||
fault
|
||||
{
|
||||
IL_0077: /* FE06 | (06)000159 */ ldftn void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'SError.{dtor}'(valuetype SError/*0200043D*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 06000159 */
|
||||
IL_007d: /* 12 | 02 */ ldloca.s V_2
|
||||
IL_007f: /* 28 | (06)005C0F */ call void ___CxxCallUnwindDtor(method void *(void*),
|
||||
void*) /* 06005C0F */
|
||||
IL_0084: /* DC | */ endfinally
|
||||
} // end handler
|
||||
// HEX: 04 00 00 00 40 00 00 00 37 00 00 00 77 00 00 00 0E 00 00 00 73 00 00 01
|
||||
IL_0085: /* 12 | 02 */ ldloca.s V_2
|
||||
IL_0087: /* 28 | (06)000165 */ call void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) SError.ClearErrorDetail(valuetype SError/*0200043D*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 06000165 */
|
||||
IL_008c: /* 06 | */ ldloc.0
|
||||
IL_008d: /* 2A | */ ret
|
||||
} // end of method HistoryQuery::MoveNext
|
||||
|
||||
} // end of class ArchestrA.HistoryQuery
|
||||
|
||||
// *********** DISASSEMBLY COMPLETE ***********************
|
||||
@@ -0,0 +1,627 @@
|
||||
// RVA: 0x00fd7d80
|
||||
// Count: 0x0001
|
||||
// Type: 0x0002
|
||||
// [0x0000] (0x 6005c3f)
|
||||
|
||||
|
||||
.class /*02001EF9*/ public auto ansi beforefieldinit ArchestrA.HistoryQuery
|
||||
extends ArchestrA.BaseQuery/*02001E55*/
|
||||
implements [mscorlib/*23000001*/]System.IDisposable/*01000049*/
|
||||
{
|
||||
.method /*060062A1*/ public hidebysig instance bool
|
||||
marshal( unsigned int8)
|
||||
StartQuery(class ArchestrA.HistoryQueryArgs/*02001EF7*/ startArgs,
|
||||
[out] class ArchestrA.HistorianAccessError/*02001E2E*/& 'error') cil managed
|
||||
// SIG: 20 02 02 12 C0 00 7B DC 10 12 C0 00 78 B8
|
||||
{
|
||||
// Method begins at RVA 0x44012c
|
||||
// Code size 957 (0x3bd)
|
||||
.maxstack 31
|
||||
.locals /*110031C3*/ (valuetype HistorianClient/*02001D42*/* V_0,
|
||||
bool V_1,
|
||||
valuetype std.'basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >'/*020001F4*/ modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) V_2,
|
||||
char modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)* V_3,
|
||||
int64 V_4,
|
||||
uint64 V_5,
|
||||
uint8 modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)* V_6,
|
||||
char modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)* V_7,
|
||||
uint32 modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsLong/*0100000C*/) V_8,
|
||||
method unmanaged cdecl valuetype 'SByteStream<SCrtMemFile>'/*02000551*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsImplicitlyDereferenced/*01000012*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) *(valuetype 'SByteStream<SCrtMemFile>'/*02000551*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsImplicitlyDereferenced/*01000012*/)) V_9,
|
||||
uint64 V_10,
|
||||
bool V_11,
|
||||
uint32 V_12,
|
||||
valuetype [mscorlib/*23000001*/]System.DateTime/*01000086*/ V_13,
|
||||
valuetype [mscorlib/*23000001*/]System.DateTime/*01000086*/ V_14,
|
||||
valuetype [mscorlib/*23000001*/]System.DateTime/*01000086*/ V_15,
|
||||
valuetype [mscorlib/*23000001*/]System.DateTime/*01000086*/ V_16,
|
||||
valuetype '<CppImplementationDetails>'.$ArrayType$$$BY0EA@_W/*0200033B*/ V_17,
|
||||
valuetype '<CppImplementationDetails>'.$ArrayType$$$BY0EA@_W/*0200033B*/ V_18,
|
||||
valuetype SError/*0200043D*/ V_19,
|
||||
uint16 V_20,
|
||||
valuetype 'SByteStream<SCrtMemFile>'/*02000551*/ V_21,
|
||||
valuetype SCrtMemFile/*020004AE*/ V_22,
|
||||
valuetype QueryColumnSelector/*02000239*/ V_23,
|
||||
valuetype stx.tsarray/*0200022B*/ V_24,
|
||||
valuetype '<CppImplementationDetails>'.$ArrayType$$$BY0EA@_W/*0200033B*/ V_25,
|
||||
valuetype '<CppImplementationDetails>'.$ArrayType$$$BY0EA@_W/*0200033B*/ V_26,
|
||||
valuetype SError/*0200043D*/ V_27)
|
||||
IL_0000: /* 02 | */ ldarg.0
|
||||
IL_0001: /* 04 | */ ldarg.2
|
||||
IL_0002: /* 28 | (06)0061B5 */ call instance valuetype HistorianClient/*02001D42*/* ArchestrA.BaseQuery/*02001E55*/::GetClient(class ArchestrA.HistorianAccessError/*02001E2E*/&) /* 060061B5 */
|
||||
IL_0007: /* 0A | */ stloc.0
|
||||
IL_0008: /* 06 | */ ldloc.0
|
||||
IL_0009: /* 2D | 02 */ brtrue.s IL_000d
|
||||
|
||||
IL_000b: /* 16 | */ ldc.i4.0
|
||||
IL_000c: /* 2A | */ ret
|
||||
|
||||
IL_000d: /* 02 | */ ldarg.0
|
||||
IL_000e: /* 04 | */ ldarg.2
|
||||
IL_000f: /* 28 | (06)0062A3 */ call instance bool ArchestrA.HistoryQuery/*02001EF9*/::EndQuery(class ArchestrA.HistorianAccessError/*02001E2E*/&) /* 060062A3 */
|
||||
IL_0014: /* 2D | 02 */ brtrue.s IL_0018
|
||||
|
||||
IL_0016: /* 16 | */ ldc.i4.0
|
||||
IL_0017: /* 2A | */ ret
|
||||
|
||||
IL_0018: /* 12 | 1B */ ldloca.s V_27
|
||||
IL_001a: /* 16 | */ ldc.i4.0
|
||||
IL_001b: /* 6A | */ conv.i8
|
||||
IL_001c: /* 55 | */ stind.i8
|
||||
IL_001d: /* 12 | 1B */ ldloca.s V_27
|
||||
IL_001f: /* 1E | */ ldc.i4.8
|
||||
IL_0020: /* 58 | */ add
|
||||
IL_0021: /* 16 | */ ldc.i4.0
|
||||
IL_0022: /* 54 | */ stind.i4
|
||||
IL_0023: /* 12 | 1B */ ldloca.s V_27
|
||||
IL_0025: /* 1F | 0C */ ldc.i4.s 12
|
||||
IL_0027: /* 58 | */ add
|
||||
IL_0028: /* 16 | */ ldc.i4.0
|
||||
IL_0029: /* 54 | */ stind.i4
|
||||
.try
|
||||
{
|
||||
IL_002a: /* 06 | */ ldloc.0
|
||||
IL_002b: /* 1F | 10 */ ldc.i4.s 16
|
||||
IL_002d: /* 6A | */ conv.i8
|
||||
IL_002e: /* 58 | */ add
|
||||
IL_002f: /* 4C | */ ldind.i8
|
||||
IL_0030: /* 20 | 48040000 */ ldc.i4 0x448
|
||||
IL_0035: /* 6A | */ conv.i8
|
||||
IL_0036: /* 58 | */ add
|
||||
IL_0037: /* 4C | */ ldind.i8
|
||||
IL_0038: /* 13 | 04 */ stloc.s V_4
|
||||
IL_003a: /* 06 | */ ldloc.0
|
||||
IL_003b: /* 1E | */ ldc.i4.8
|
||||
IL_003c: /* 6A | */ conv.i8
|
||||
IL_003d: /* 58 | */ add
|
||||
IL_003e: /* 4A | */ ldind.i4
|
||||
IL_003f: /* 13 | 0C */ stloc.s V_12
|
||||
IL_0041: /* 11 | 04 */ ldloc.s V_4
|
||||
IL_0043: /* 11 | 0C */ ldloc.s V_12
|
||||
IL_0045: /* 12 | 0B */ ldloca.s V_11
|
||||
IL_0047: /* 12 | 1B */ ldloca.s V_27
|
||||
IL_0049: /* 11 | 04 */ ldloc.s V_4
|
||||
IL_004b: /* 4C | */ ldind.i8
|
||||
IL_004c: /* 20 | 00030000 */ ldc.i4 0x300
|
||||
IL_0051: /* 6A | */ conv.i8
|
||||
IL_0052: /* 58 | */ add
|
||||
IL_0053: /* 4C | */ ldind.i8
|
||||
IL_0054: /* 29 | C0310011 */ calli unmanaged cdecl uint8 modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CompilerMarshalOverride/*01000018*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/)(native int,uint32 modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsLong/*0100000C*/),bool* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsImplicitlyDereferenced/*01000012*/),valuetype SError/*0200043D*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsImplicitlyDereferenced/*01000012*/)) /*110031C0*/
|
||||
IL_0059: /* 2D | 0E */ brtrue.s IL_0069
|
||||
|
||||
IL_005b: /* 04 | */ ldarg.2
|
||||
IL_005c: /* 12 | 1B */ ldloca.s V_27
|
||||
IL_005e: /* 73 | (06)005F73 */ newobj instance void ArchestrA.HistorianAccessError/*02001E2E*/::.ctor(valuetype SError/*0200043D*/ modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsImplicitlyDereferenced/*01000012*/)) /* 06005F73 */
|
||||
IL_0063: /* 51 | */ stind.ref
|
||||
IL_0064: /* 38 | A5000000 */ br IL_010e
|
||||
|
||||
IL_0069: /* 02 | */ ldarg.0
|
||||
IL_006a: /* 11 | 0B */ ldloc.s V_11
|
||||
IL_006c: /* 7D | (04)00A086 */ stfld bool ArchestrA.HistoryQuery/*02001EF9*/::optionAvailable /* 0400A086 */
|
||||
IL_0071: /* 06 | */ ldloc.0
|
||||
IL_0072: /* 1F | 10 */ ldc.i4.s 16
|
||||
IL_0074: /* 6A | */ conv.i8
|
||||
IL_0075: /* 58 | */ add
|
||||
IL_0076: /* 4C | */ ldind.i8
|
||||
IL_0077: /* 20 | 80000000 */ ldc.i4 0x80
|
||||
IL_007c: /* 6A | */ conv.i8
|
||||
IL_007d: /* 58 | */ add
|
||||
IL_007e: /* 0C | */ stloc.2
|
||||
IL_007f: /* 08 | */ ldloc.2
|
||||
IL_0080: /* 0D | */ stloc.3
|
||||
IL_0081: /* 1E | */ ldc.i4.8
|
||||
IL_0082: /* 6A | */ conv.i8
|
||||
IL_0083: /* 08 | */ ldloc.2
|
||||
IL_0084: /* 1F | 18 */ ldc.i4.s 24
|
||||
IL_0086: /* 6A | */ conv.i8
|
||||
IL_0087: /* 58 | */ add
|
||||
IL_0088: /* 4C | */ ldind.i8
|
||||
IL_0089: /* 36 | 03 */ ble.un.s IL_008e
|
||||
|
||||
IL_008b: /* 16 | */ ldc.i4.0
|
||||
IL_008c: /* 2B | 01 */ br.s IL_008f
|
||||
|
||||
IL_008e: /* 17 | */ ldc.i4.1
|
||||
IL_008f: /* D2 | */ conv.u1
|
||||
IL_0090: /* 2C | 03 */ brfalse.s IL_0095
|
||||
|
||||
IL_0092: /* 08 | */ ldloc.2
|
||||
IL_0093: /* 4C | */ ldind.i8
|
||||
IL_0094: /* 0D | */ stloc.3
|
||||
IL_0095: /* 02 | */ ldarg.0
|
||||
IL_0096: /* 09 | */ ldloc.3
|
||||
IL_0097: /* 73 | (0A)000042 */ newobj instance void [mscorlib/*23000001*/]System.String/*01000030*/::.ctor(char*) /* 0A000042 */
|
||||
IL_009c: /* 7D | (04)00A085 */ stfld string ArchestrA.HistoryQuery/*02001EF9*/::dataSourceId /* 0400A085 */
|
||||
IL_00a1: /* 03 | */ ldarg.1
|
||||
IL_00a2: /* 2D | 0B */ brtrue.s IL_00af
|
||||
|
||||
IL_00a4: /* 04 | */ ldarg.2
|
||||
IL_00a5: /* 1A | */ ldc.i4.4
|
||||
IL_00a6: /* 1C | */ ldc.i4.6
|
||||
IL_00a7: /* 73 | (06)005F77 */ newobj instance void ArchestrA.HistorianAccessError/*02001E2E*/::.ctor(valuetype ArchestrA.HistorianAccessError/*02001E2E*//ErrorTypeValue/*02001E30*/,
|
||||
valuetype ArchestrA.HistorianAccessError/*02001E2E*//ErrorValue/*02001E2F*/) /* 06005F77 */
|
||||
IL_00ac: /* 51 | */ stind.ref
|
||||
IL_00ad: /* 2B | 5F */ br.s IL_010e
|
||||
|
||||
IL_00af: /* 03 | */ ldarg.1
|
||||
IL_00b0: /* 04 | */ ldarg.2
|
||||
IL_00b1: /* 6F | (06)006246 */ callvirt instance bool ArchestrA.HistoryQueryArgs/*02001EF7*/::ProcessQueryArgs(class ArchestrA.HistorianAccessError/*02001E2E*/&) /* 06006246 */
|
||||
IL_00b6: /* 2C | 56 */ brfalse.s IL_010e
|
||||
|
||||
IL_00b8: /* 12 | 1A */ ldloca.s V_26
|
||||
IL_00ba: /* 16 | */ ldc.i4.0
|
||||
IL_00bb: /* 20 | 80000000 */ ldc.i4 0x80
|
||||
IL_00c0: /* 6A | */ conv.i8
|
||||
IL_00c1: /* FE12 | 04 */ unaligned. 4
|
||||
IL_00c4: /* FE18 | */ initblk
|
||||
IL_00c6: /* 03 | */ ldarg.1
|
||||
IL_00c7: /* 28 | (06)006251 */ call instance string ArchestrA.HistoryQueryArgs/*02001EF7*/::get_Option() /* 06006251 */
|
||||
IL_00cc: /* 1F | 40 */ ldc.i4.s 64
|
||||
IL_00ce: /* 6A | */ conv.i8
|
||||
IL_00cf: /* 12 | 1A */ ldloca.s V_26
|
||||
IL_00d1: /* 28 | (06)005823 */ call int32 ArchestrA.ConvertHelper.ManagedToUnmanagedString(string,
|
||||
uint64,
|
||||
char*) /* 06005823 */
|
||||
IL_00d6: /* 2C | 0C */ brfalse.s IL_00e4
|
||||
|
||||
IL_00d8: /* 04 | */ ldarg.2
|
||||
IL_00d9: /* 1A | */ ldc.i4.4
|
||||
IL_00da: /* 1F | 55 */ ldc.i4.s 85
|
||||
IL_00dc: /* 73 | (06)005F77 */ newobj instance void ArchestrA.HistorianAccessError/*02001E2E*/::.ctor(valuetype ArchestrA.HistorianAccessError/*02001E2E*//ErrorTypeValue/*02001E30*/,
|
||||
valuetype ArchestrA.HistorianAccessError/*02001E2E*//ErrorValue/*02001E2F*/) /* 06005F77 */
|
||||
IL_00e1: /* 51 | */ stind.ref
|
||||
IL_00e2: /* 2B | 2A */ br.s IL_010e
|
||||
|
||||
IL_00e4: /* 12 | 19 */ ldloca.s V_25
|
||||
IL_00e6: /* 16 | */ ldc.i4.0
|
||||
IL_00e7: /* 20 | 80000000 */ ldc.i4 0x80
|
||||
IL_00ec: /* 6A | */ conv.i8
|
||||
IL_00ed: /* FE12 | 04 */ unaligned. 4
|
||||
IL_00f0: /* FE18 | */ initblk
|
||||
IL_00f2: /* 03 | */ ldarg.1
|
||||
IL_00f3: /* 28 | (06)006257 */ call instance string ArchestrA.HistoryQueryArgs/*02001EF7*/::get_Filter() /* 06006257 */
|
||||
IL_00f8: /* 1F | 40 */ ldc.i4.s 64
|
||||
IL_00fa: /* 6A | */ conv.i8
|
||||
IL_00fb: /* 12 | 19 */ ldloca.s V_25
|
||||
IL_00fd: /* 28 | (06)005823 */ call int32 ArchestrA.ConvertHelper.ManagedToUnmanagedString(string,
|
||||
uint64,
|
||||
char*) /* 06005823 */
|
||||
IL_0102: /* 2C | 11 */ brfalse.s IL_0115
|
||||
|
||||
IL_0104: /* 04 | */ ldarg.2
|
||||
IL_0105: /* 1A | */ ldc.i4.4
|
||||
IL_0106: /* 1F | 55 */ ldc.i4.s 85
|
||||
IL_0108: /* 73 | (06)005F77 */ newobj instance void ArchestrA.HistorianAccessError/*02001E2E*/::.ctor(valuetype ArchestrA.HistorianAccessError/*02001E2E*//ErrorTypeValue/*02001E30*/,
|
||||
valuetype ArchestrA.HistorianAccessError/*02001E2E*//ErrorValue/*02001E2F*/) /* 06005F77 */
|
||||
IL_010d: /* 51 | */ stind.ref
|
||||
IL_010e: /* 16 | */ ldc.i4.0
|
||||
IL_010f: /* 0B | */ stloc.1
|
||||
IL_0110: /* DD | 9F020000 */ leave IL_03b4
|
||||
|
||||
IL_0115: /* 03 | */ ldarg.1
|
||||
IL_0116: /* 28 | (06)0061B7 */ call instance class [System/*2300000D*/]System.Collections.Specialized.StringCollection/*01000126*/ ArchestrA.BaseQueryArgs/*02001E56*/::get_TagNames() /* 060061B7 */
|
||||
IL_011b: /* 6F | (0A)00041C */ callvirt instance int32 [System/*2300000D*/]System.Collections.Specialized.StringCollection/*01000126*/::get_Count() /* 0A00041C */
|
||||
IL_0120: /* 6A | */ conv.i8
|
||||
IL_0121: /* 13 | 0A */ stloc.s V_10
|
||||
IL_0123: /* 12 | 18 */ ldloca.s V_24
|
||||
IL_0125: /* 16 | */ ldc.i4.0
|
||||
IL_0126: /* 6A | */ conv.i8
|
||||
IL_0127: /* 55 | */ stind.i8
|
||||
IL_0128: /* 12 | 18 */ ldloca.s V_24
|
||||
IL_012a: /* 1E | */ ldc.i4.8
|
||||
IL_012b: /* 58 | */ add
|
||||
IL_012c: /* 16 | */ ldc.i4.0
|
||||
IL_012d: /* 6A | */ conv.i8
|
||||
IL_012e: /* 55 | */ stind.i8
|
||||
IL_012f: /* 12 | 18 */ ldloca.s V_24
|
||||
IL_0131: /* 1F | 10 */ ldc.i4.s 16
|
||||
IL_0133: /* 58 | */ add
|
||||
IL_0134: /* 16 | */ ldc.i4.0
|
||||
IL_0135: /* 6A | */ conv.i8
|
||||
IL_0136: /* 55 | */ stind.i8
|
||||
.try
|
||||
{
|
||||
IL_0137: /* 12 | 18 */ ldloca.s V_24
|
||||
IL_0139: /* 11 | 0A */ ldloc.s V_10
|
||||
IL_013b: /* 28 | (06)005856 */ call void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'std.vector<wchar_t *,std::allocator<wchar_t *> >.reserve'(valuetype std.'vector<wchar_t *,std::allocator<wchar_t *> >'/*02000245*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/),
|
||||
uint64 modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 06005856 */
|
||||
IL_0140: /* DE | 0E */ leave.s IL_0150
|
||||
|
||||
} // end .try
|
||||
fault
|
||||
{
|
||||
IL_0142: /* FE06 | (06)00585A */ ldftn void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'std.vector<wchar_t *,std::allocator<wchar_t *> >.{dtor}'(valuetype std.'vector<wchar_t *,std::allocator<wchar_t *> >'/*02000245*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 0600585A */
|
||||
IL_0148: /* 12 | 18 */ ldloca.s V_24
|
||||
IL_014a: /* 28 | (06)005C0F */ call void ___CxxCallUnwindDtor(method void *(void*),
|
||||
void*) /* 06005C0F */
|
||||
IL_014f: /* DC | */ endfinally
|
||||
} // end handler
|
||||
// HEX: 04 00 00 00 37 01 00 00 0B 00 00 00 42 01 00 00 0E 00 00 00 73 00 00 01
|
||||
IL_0150: /* 00 | */ nop
|
||||
.try
|
||||
{
|
||||
IL_0151: /* 03 | */ ldarg.1
|
||||
IL_0152: /* 28 | (06)0061B7 */ call instance class [System/*2300000D*/]System.Collections.Specialized.StringCollection/*01000126*/ ArchestrA.BaseQueryArgs/*02001E56*/::get_TagNames() /* 060061B7 */
|
||||
IL_0157: /* 12 | 18 */ ldloca.s V_24
|
||||
IL_0159: /* 04 | */ ldarg.2
|
||||
IL_015a: /* 28 | (06)005825 */ call bool ArchestrA.ConvertHelper.ManagedToUnmanagedStrings(class [System/*2300000D*/]System.Collections.Specialized.StringCollection/*01000126*/,
|
||||
valuetype stx.tsarray/*0200022B*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsImplicitlyDereferenced/*01000012*/),
|
||||
class ArchestrA.HistorianAccessError/*02001E2E*/&) /* 06005825 */
|
||||
IL_015f: /* 2D | 07 */ brtrue.s IL_0168
|
||||
|
||||
IL_0161: /* 16 | */ ldc.i4.0
|
||||
IL_0162: /* 0B | */ stloc.1
|
||||
IL_0163: /* 38 | 0D020000 */ br IL_0375
|
||||
|
||||
IL_0168: /* 12 | 17 */ ldloca.s V_23
|
||||
IL_016a: /* 28 | (06)000041 */ call valuetype QueryColumnSelector/*02000239*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'QueryColumnSelector.{ctor}'(valuetype QueryColumnSelector/*02000239*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 06000041 */
|
||||
IL_016f: /* 26 | */ pop
|
||||
.try
|
||||
{
|
||||
IL_0170: /* 02 | */ ldarg.0
|
||||
IL_0171: /* 03 | */ ldarg.1
|
||||
IL_0172: /* 12 | 17 */ ldloca.s V_23
|
||||
IL_0174: /* 28 | (06)00629C */ call instance void ArchestrA.HistoryQuery/*02001EF9*/::SelectQueryColumns(class ArchestrA.HistoryQueryArgs/*02001EF7*/,
|
||||
valuetype QueryColumnSelector/*02000239*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsImplicitlyDereferenced/*01000012*/)) /* 0600629C */
|
||||
IL_0179: /* 12 | 16 */ ldloca.s V_22
|
||||
IL_017b: /* 28 | (06)0011DE */ call valuetype 'SMemFile<SCrtAllocator>'/*020006A8*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'SMemFile<SCrtAllocator>.{ctor}'(valuetype 'SMemFile<SCrtAllocator>'/*020006A8*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 060011DE */
|
||||
IL_0180: /* 26 | */ pop
|
||||
.try
|
||||
{
|
||||
IL_0181: /* 12 | 16 */ ldloca.s V_22
|
||||
IL_0183: /* 7F | (04)001016 */ ldsflda valuetype '<CppImplementationDetails>'.$ArrayType$$$BY0BC@Q6AXXZ/*0200032C*/ modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) '??_7SCrtMemFile@@6B@' /* 04001016 */
|
||||
IL_0188: /* 55 | */ stind.i8
|
||||
IL_0189: /* DE | 0E */ leave.s IL_0199
|
||||
|
||||
} // end .try
|
||||
fault
|
||||
{
|
||||
IL_018b: /* FE06 | (06)0011E0 */ ldftn void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'SMemFile<SCrtAllocator>.{dtor}'(valuetype 'SMemFile<SCrtAllocator>'/*020006A8*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 060011E0 */
|
||||
IL_0191: /* 12 | 16 */ ldloca.s V_22
|
||||
IL_0193: /* 28 | (06)005C0F */ call void ___CxxCallUnwindDtor(method void *(void*),
|
||||
void*) /* 06005C0F */
|
||||
IL_0198: /* DC | */ endfinally
|
||||
} // end handler
|
||||
// HEX: 04 00 00 00 81 01 00 00 0A 00 00 00 8B 01 00 00 0E 00 00 00 73 00 00 01
|
||||
IL_0199: /* 00 | */ nop
|
||||
.try
|
||||
{
|
||||
IL_019a: /* 12 | 15 */ ldloca.s V_21
|
||||
IL_019c: /* 12 | 16 */ ldloca.s V_22
|
||||
IL_019e: /* 55 | */ stind.i8
|
||||
IL_019f: /* 17 | */ ldc.i4.1
|
||||
IL_01a0: /* 13 | 14 */ stloc.s V_20
|
||||
IL_01a2: /* 12 | 16 */ ldloca.s V_22
|
||||
IL_01a4: /* 12 | 14 */ ldloca.s V_20
|
||||
IL_01a6: /* 18 | */ ldc.i4.2
|
||||
IL_01a7: /* 6A | */ conv.i8
|
||||
IL_01a8: /* 28 | (06)000801 */ call void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'SMemFile<SCrtAllocator>.SaveEx'(valuetype 'SMemFile<SCrtAllocator>'/*020006A8*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/),
|
||||
void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)*,
|
||||
uint64) /* 06000801 */
|
||||
IL_01ad: /* 12 | 15 */ ldloca.s V_21
|
||||
IL_01af: /* 4C | */ ldind.i8
|
||||
IL_01b0: /* 12 | 17 */ ldloca.s V_23
|
||||
IL_01b2: /* 1E | */ ldc.i4.8
|
||||
IL_01b3: /* 6A | */ conv.i8
|
||||
IL_01b4: /* 28 | (06)000801 */ call void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'SMemFile<SCrtAllocator>.SaveEx'(valuetype 'SMemFile<SCrtAllocator>'/*020006A8*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/),
|
||||
void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)*,
|
||||
uint64) /* 06000801 */
|
||||
IL_01b9: /* 7E | (04)001B05 */ ldsfld int32** __unep@??$endstream@VSCrtMemFile@@@@$$FYAAEAV?$SByteStream@VSCrtMemFile@@@@AEAV0@@Z /* 04001B05 */
|
||||
IL_01be: /* 13 | 09 */ stloc.s V_9
|
||||
IL_01c0: /* 12 | 15 */ ldloca.s V_21
|
||||
IL_01c2: /* 11 | 09 */ ldloc.s V_9
|
||||
IL_01c4: /* 29 | 23080011 */ calli unmanaged cdecl valuetype 'SByteStream<SCrtMemFile>'/*02000551*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsImplicitlyDereferenced/*01000012*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/)(valuetype 'SByteStream<SCrtMemFile>'/*02000551*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsImplicitlyDereferenced/*01000012*/)) /*11000823*/
|
||||
IL_01c9: /* 26 | */ pop
|
||||
IL_01ca: /* 16 | */ ldc.i4.0
|
||||
IL_01cb: /* 13 | 08 */ stloc.s V_8
|
||||
IL_01cd: /* 12 | 13 */ ldloca.s V_19
|
||||
IL_01cf: /* 16 | */ ldc.i4.0
|
||||
IL_01d0: /* 6A | */ conv.i8
|
||||
IL_01d1: /* 55 | */ stind.i8
|
||||
IL_01d2: /* 12 | 13 */ ldloca.s V_19
|
||||
IL_01d4: /* 1E | */ ldc.i4.8
|
||||
IL_01d5: /* 58 | */ add
|
||||
IL_01d6: /* 16 | */ ldc.i4.0
|
||||
IL_01d7: /* 54 | */ stind.i4
|
||||
IL_01d8: /* 12 | 13 */ ldloca.s V_19
|
||||
IL_01da: /* 1F | 0C */ ldc.i4.s 12
|
||||
IL_01dc: /* 58 | */ add
|
||||
IL_01dd: /* 16 | */ ldc.i4.0
|
||||
IL_01de: /* 54 | */ stind.i4
|
||||
.try
|
||||
{
|
||||
IL_01df: /* 12 | 12 */ ldloca.s V_18
|
||||
IL_01e1: /* 16 | */ ldc.i4.0
|
||||
IL_01e2: /* 20 | 80000000 */ ldc.i4 0x80
|
||||
IL_01e7: /* 6A | */ conv.i8
|
||||
IL_01e8: /* FE12 | 04 */ unaligned. 4
|
||||
IL_01eb: /* FE18 | */ initblk
|
||||
IL_01ed: /* 12 | 11 */ ldloca.s V_17
|
||||
IL_01ef: /* 16 | */ ldc.i4.0
|
||||
IL_01f0: /* 20 | 80000000 */ ldc.i4 0x80
|
||||
IL_01f5: /* 6A | */ conv.i8
|
||||
IL_01f6: /* FE12 | 04 */ unaligned. 4
|
||||
IL_01f9: /* FE18 | */ initblk
|
||||
IL_01fb: /* 02 | */ ldarg.0
|
||||
IL_01fc: /* 7B | (04)00A086 */ ldfld bool ArchestrA.HistoryQuery/*02001EF9*/::optionAvailable /* 0400A086 */
|
||||
IL_0201: /* 16 | */ ldc.i4.0
|
||||
IL_0202: /* 33 | 07 */ bne.un.s IL_020b
|
||||
|
||||
IL_0204: /* 7F | (04)007BCA */ ldsflda valuetype '<CppImplementationDetails>'.$ArrayType$$$BY08$$CB_W/*02000151*/ modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) '??_C@_1BC@KNNFNJNI@?$AAN?$AAo?$AAO?$AAp?$AAt?$AAi?$AAo?$AAn@' /* 04007BCA */
|
||||
IL_0209: /* 2B | 02 */ br.s IL_020d
|
||||
|
||||
IL_020b: /* 12 | 1A */ ldloca.s V_26
|
||||
IL_020d: /* 13 | 07 */ stloc.s V_7
|
||||
IL_020f: /* 03 | */ ldarg.1
|
||||
IL_0210: /* 28 | (06)0061BB */ call instance valuetype [mscorlib/*23000001*/]System.DateTime/*01000086*/ ArchestrA.BaseQueryArgs/*02001E56*/::get_EndDateTime() /* 060061BB */
|
||||
IL_0215: /* 13 | 10 */ stloc.s V_16
|
||||
IL_0217: /* 12 | 10 */ ldloca.s V_16
|
||||
IL_0219: /* 28 | (0A)00040D */ call instance valuetype [mscorlib/*23000001*/]System.DateTime/*01000086*/ [mscorlib/*23000001*/]System.DateTime/*01000086*/::ToUniversalTime() /* 0A00040D */
|
||||
IL_021e: /* 13 | 0F */ stloc.s V_15
|
||||
IL_0220: /* 03 | */ ldarg.1
|
||||
IL_0221: /* 28 | (06)0061B9 */ call instance valuetype [mscorlib/*23000001*/]System.DateTime/*01000086*/ ArchestrA.BaseQueryArgs/*02001E56*/::get_StartDateTime() /* 060061B9 */
|
||||
IL_0226: /* 13 | 0E */ stloc.s V_14
|
||||
IL_0228: /* 12 | 0E */ ldloca.s V_14
|
||||
IL_022a: /* 28 | (0A)00040D */ call instance valuetype [mscorlib/*23000001*/]System.DateTime/*01000086*/ [mscorlib/*23000001*/]System.DateTime/*01000086*/::ToUniversalTime() /* 0A00040D */
|
||||
IL_022f: /* 13 | 0D */ stloc.s V_13
|
||||
IL_0231: /* 12 | 15 */ ldloca.s V_21
|
||||
IL_0233: /* 4C | */ ldind.i8
|
||||
IL_0234: /* 12 | 15 */ ldloca.s V_21
|
||||
IL_0236: /* 4C | */ ldind.i8
|
||||
IL_0237: /* 4C | */ ldind.i8
|
||||
IL_0238: /* 1F | 78 */ ldc.i4.s 120
|
||||
IL_023a: /* 6A | */ conv.i8
|
||||
IL_023b: /* 58 | */ add
|
||||
IL_023c: /* 4C | */ ldind.i8
|
||||
IL_023d: /* 29 | F6000011 */ calli unmanaged cdecl uint8 modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/)(native int) /*110000F6*/
|
||||
IL_0242: /* 13 | 06 */ stloc.s V_6
|
||||
IL_0244: /* 12 | 15 */ ldloca.s V_21
|
||||
IL_0246: /* 4C | */ ldind.i8
|
||||
IL_0247: /* 1E | */ ldc.i4.8
|
||||
IL_0248: /* 6A | */ conv.i8
|
||||
IL_0249: /* 58 | */ add
|
||||
IL_024a: /* 4A | */ ldind.i4
|
||||
IL_024b: /* 6E | */ conv.u8
|
||||
IL_024c: /* 13 | 05 */ stloc.s V_5
|
||||
IL_024e: /* 06 | */ ldloc.0
|
||||
IL_024f: /* 03 | */ ldarg.1
|
||||
IL_0250: /* 28 | (06)0061BD */ call instance valuetype ArchestrA.HistorianRetrievalMode/*02001E6D*/ ArchestrA.BaseQueryArgs/*02001E56*/::get_RetrievalMode() /* 060061BD */
|
||||
IL_0255: /* 16 | */ ldc.i4.0
|
||||
IL_0256: /* 16 | */ ldc.i4.0
|
||||
IL_0257: /* 03 | */ ldarg.1
|
||||
IL_0258: /* 28 | (06)0061B7 */ call instance class [System/*2300000D*/]System.Collections.Specialized.StringCollection/*01000126*/ ArchestrA.BaseQueryArgs/*02001E56*/::get_TagNames() /* 060061B7 */
|
||||
IL_025d: /* 6F | (0A)00041C */ callvirt instance int32 [System/*2300000D*/]System.Collections.Specialized.StringCollection/*01000126*/::get_Count() /* 0A00041C */
|
||||
IL_0262: /* 12 | 18 */ ldloca.s V_24
|
||||
IL_0264: /* 28 | (06)0057EA */ call char modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) stx.tsarray.get(valuetype stx.tsarray/*0200022B*/ modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 060057EA */
|
||||
IL_0269: /* 16 | */ ldc.i4.0
|
||||
IL_026a: /* 16 | */ ldc.i4.0
|
||||
IL_026b: /* 6A | */ conv.i8
|
||||
IL_026c: /* 12 | 0D */ ldloca.s V_13
|
||||
IL_026e: /* 28 | (0A)00040C */ call instance int64 [mscorlib/*23000001*/]System.DateTime/*01000086*/::ToFileTime() /* 0A00040C */
|
||||
IL_0273: /* 12 | 0F */ ldloca.s V_15
|
||||
IL_0275: /* 28 | (0A)00040C */ call instance int64 [mscorlib/*23000001*/]System.DateTime/*01000086*/::ToFileTime() /* 0A00040C */
|
||||
IL_027a: /* 03 | */ ldarg.1
|
||||
IL_027b: /* 28 | (06)0061BF */ call instance uint64 ArchestrA.BaseQueryArgs/*02001E56*/::get_Resolution() /* 060061BF */
|
||||
IL_0280: /* 76 | */ conv.r.un
|
||||
IL_0281: /* 6C | */ conv.r8
|
||||
IL_0282: /* 03 | */ ldarg.1
|
||||
IL_0283: /* 28 | (06)006247 */ call instance float32 ArchestrA.HistoryQueryArgs/*02001EF7*/::get_ValueDeadband() /* 06006247 */
|
||||
IL_0288: /* 03 | */ ldarg.1
|
||||
IL_0289: /* 28 | (06)006249 */ call instance uint32 ArchestrA.HistoryQueryArgs/*02001EF7*/::get_TimeDeadband() /* 06006249 */
|
||||
IL_028e: /* 7F | (04)004924 */ ldsflda valuetype '<CppImplementationDetails>'.$ArrayType$$$BY03$$CB_W/*02000183*/ modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) '??_C@_17JJKFGAAG@?$AAU?$AAT?$AAC@' /* 04004924 */
|
||||
IL_0293: /* 03 | */ ldarg.1
|
||||
IL_0294: /* 28 | (06)0061C1 */ call instance valuetype ArchestrA.HistorianVersionType/*02001E6E*/ ArchestrA.BaseQueryArgs/*02001E56*/::get_DataVersion() /* 060061C1 */
|
||||
IL_0299: /* 03 | */ ldarg.1
|
||||
IL_029a: /* 28 | (06)00624B */ call instance valuetype ArchestrA.HistorianInterpolationType/*02001E60*/ ArchestrA.HistoryQueryArgs/*02001EF7*/::get_InterpolationType() /* 0600624B */
|
||||
IL_029f: /* 03 | */ ldarg.1
|
||||
IL_02a0: /* 28 | (06)00624D */ call instance valuetype ArchestrA.HistorianTimestampRule/*02001F03*/ ArchestrA.HistoryQueryArgs/*02001EF7*/::get_TimeStampRule() /* 0600624D */
|
||||
IL_02a5: /* 03 | */ ldarg.1
|
||||
IL_02a6: /* 28 | (06)00624F */ call instance valuetype ArchestrA.HistorianQualityRule/*02001F04*/ ArchestrA.HistoryQueryArgs/*02001EF7*/::get_QualityRule() /* 0600624F */
|
||||
IL_02ab: /* 11 | 07 */ ldloc.s V_7
|
||||
IL_02ad: /* 12 | 12 */ ldloca.s V_18
|
||||
IL_02af: /* 1F | 40 */ ldc.i4.s 64
|
||||
IL_02b1: /* 12 | 11 */ ldloca.s V_17
|
||||
IL_02b3: /* 1F | 40 */ ldc.i4.s 64
|
||||
IL_02b5: /* 03 | */ ldarg.1
|
||||
IL_02b6: /* 28 | (06)006253 */ call instance valuetype ArchestrA.HistorianValueSelector/*02001F05*/ ArchestrA.HistoryQueryArgs/*02001EF7*/::get_ValueSelector() /* 06006253 */
|
||||
IL_02bb: /* 03 | */ ldarg.1
|
||||
IL_02bc: /* 28 | (06)006255 */ call instance valuetype ArchestrA.HistorianAggregationType/*02001F06*/ ArchestrA.HistoryQueryArgs/*02001EF7*/::get_AggregationType() /* 06006255 */
|
||||
IL_02c1: /* 11 | 05 */ ldloc.s V_5
|
||||
IL_02c3: /* 6D | */ conv.u4
|
||||
IL_02c4: /* 11 | 06 */ ldloc.s V_6
|
||||
IL_02c6: /* 12 | 19 */ ldloca.s V_25
|
||||
IL_02c8: /* 03 | */ ldarg.1
|
||||
IL_02c9: /* 28 | (06)006259 */ call instance uint16 ArchestrA.HistoryQueryArgs/*02001EF7*/::get_MaxStates() /* 06006259 */
|
||||
IL_02ce: /* 12 | 08 */ ldloca.s V_8
|
||||
IL_02d0: /* 12 | 13 */ ldloca.s V_19
|
||||
IL_02d2: /* 28 | (06)0055E4 */ call bool modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) HistorianClient.StartDataQuery(valuetype HistorianClient/*02001D42*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/),
|
||||
valuetype INSQL_QUERYTYPE/*0200013F*/,
|
||||
valuetype INSQL_QUERYFORMAT/*02000140*/,
|
||||
valuetype HISTORIAN_SUMMARYTYPE/*02000191*/,
|
||||
uint32 modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsLong/*0100000C*/),
|
||||
char modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)**,
|
||||
uint32 modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsLong/*0100000C*/),
|
||||
char modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)**,
|
||||
uint64,
|
||||
uint64,
|
||||
float64,
|
||||
float32,
|
||||
uint32,
|
||||
char modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)*,
|
||||
valuetype E_VERSIONTYPE/*02000133*/,
|
||||
valuetype E_INTERPOLATIONTYPE/*02000128*/,
|
||||
valuetype E_TIMESTAMPRULE/*02000129*/,
|
||||
valuetype E_QUALITYRULE/*0200012A*/,
|
||||
char modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)*,
|
||||
char*,
|
||||
uint16,
|
||||
char*,
|
||||
uint16,
|
||||
valuetype EValueSelector/*02000197*/,
|
||||
valuetype E_AGGREGATIONTYPE/*0200012B*/,
|
||||
uint32,
|
||||
uint8 modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)*,
|
||||
char modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)*,
|
||||
uint16,
|
||||
uint32 modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsLong/*0100000C*/)*,
|
||||
valuetype SError/*0200043D*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsImplicitlyDereferenced/*01000012*/)) /* 060055E4 */
|
||||
IL_02d7: /* 2D | 0D */ brtrue.s IL_02e6
|
||||
|
||||
IL_02d9: /* 04 | */ ldarg.2
|
||||
IL_02da: /* 12 | 13 */ ldloca.s V_19
|
||||
IL_02dc: /* 73 | (06)005F73 */ newobj instance void ArchestrA.HistorianAccessError/*02001E2E*/::.ctor(valuetype SError/*0200043D*/ modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsImplicitlyDereferenced/*01000012*/)) /* 06005F73 */
|
||||
IL_02e1: /* 51 | */ stind.ref
|
||||
IL_02e2: /* 16 | */ ldc.i4.0
|
||||
IL_02e3: /* 0B | */ stloc.1
|
||||
IL_02e4: /* DE | 3A */ leave.s IL_0320
|
||||
|
||||
IL_02e6: /* 02 | */ ldarg.0
|
||||
IL_02e7: /* 11 | 08 */ ldloc.s V_8
|
||||
IL_02e9: /* 7D | (04)009EFB */ stfld uint32 modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsLong/*0100000C*/) ArchestrA.BaseQuery/*02001E55*/::queryHandle /* 04009EFB */
|
||||
IL_02ee: /* 03 | */ ldarg.1
|
||||
IL_02ef: /* 02 | */ ldarg.0
|
||||
IL_02f0: /* 7B | (04)00A085 */ ldfld string ArchestrA.HistoryQuery/*02001EF9*/::dataSourceId /* 0400A085 */
|
||||
IL_02f5: /* 7D | (04)009F08 */ stfld string ArchestrA.BaseQueryArgs/*02001E56*/::dataSourceId /* 04009F08 */
|
||||
IL_02fa: /* 02 | */ ldarg.0
|
||||
IL_02fb: /* 7B | (04)00A087 */ ldfld class ArchestrA.HistoryQueryResult/*02001EF8*/ ArchestrA.HistoryQuery/*02001EF9*/::queryResult /* 0400A087 */
|
||||
IL_0300: /* 2D | 0C */ brtrue.s IL_030e
|
||||
|
||||
IL_0302: /* 02 | */ ldarg.0
|
||||
IL_0303: /* 03 | */ ldarg.1
|
||||
IL_0304: /* 73 | (06)00625C */ newobj instance void ArchestrA.HistoryQueryResult/*02001EF8*/::.ctor(class ArchestrA.HistoryQueryArgs/*02001EF7*/) /* 0600625C */
|
||||
IL_0309: /* 7D | (04)00A087 */ stfld class ArchestrA.HistoryQueryResult/*02001EF8*/ ArchestrA.HistoryQuery/*02001EF9*/::queryResult /* 0400A087 */
|
||||
IL_030e: /* 17 | */ ldc.i4.1
|
||||
IL_030f: /* 0B | */ stloc.1
|
||||
IL_0310: /* DE | 0E */ leave.s IL_0320
|
||||
|
||||
} // end .try
|
||||
fault
|
||||
{
|
||||
IL_0312: /* FE06 | (06)000159 */ ldftn void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'SError.{dtor}'(valuetype SError/*0200043D*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 06000159 */
|
||||
IL_0318: /* 12 | 13 */ ldloca.s V_19
|
||||
IL_031a: /* 28 | (06)005C0F */ call void ___CxxCallUnwindDtor(method void *(void*),
|
||||
void*) /* 06005C0F */
|
||||
IL_031f: /* DC | */ endfinally
|
||||
} // end handler
|
||||
// HEX: 04 00 00 00 DF 01 00 00 33 01 00 00 12 03 00 00 0E 00 00 00 73 00 00 01
|
||||
IL_0320: /* 12 | 13 */ ldloca.s V_19
|
||||
IL_0322: /* 28 | (06)000165 */ call void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) SError.ClearErrorDetail(valuetype SError/*0200043D*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 06000165 */
|
||||
IL_0327: /* DE | 0E */ leave.s IL_0337
|
||||
|
||||
} // end .try
|
||||
fault
|
||||
{
|
||||
IL_0329: /* FE06 | (06)000CFE */ ldftn void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'SCrtMemFile.{dtor}'(valuetype SCrtMemFile/*020004AE*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 06000CFE */
|
||||
IL_032f: /* 12 | 16 */ ldloca.s V_22
|
||||
IL_0331: /* 28 | (06)005C0F */ call void ___CxxCallUnwindDtor(method void *(void*),
|
||||
void*) /* 06005C0F */
|
||||
IL_0336: /* DC | */ endfinally
|
||||
} // end handler
|
||||
// HEX: 04 00 00 00 9A 01 00 00 8F 01 00 00 29 03 00 00 0E 00 00 00 73 00 00 01
|
||||
IL_0337: /* 12 | 16 */ ldloca.s V_22
|
||||
IL_0339: /* 7F | (04)0010BA */ ldsflda valuetype '<CppImplementationDetails>'.$ArrayType$$$BY0BC@Q6AXXZ/*0200032C*/ modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) '??_7?$SMemFile@VSCrtAllocator@@@@6B@' /* 040010BA */
|
||||
IL_033e: /* 55 | */ stind.i8
|
||||
.try
|
||||
{
|
||||
IL_033f: /* 12 | 16 */ ldloca.s V_22
|
||||
IL_0341: /* 28 | (06)0011E7 */ call void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'SMemFile<SCrtAllocator>.Free'(valuetype 'SMemFile<SCrtAllocator>'/*020006A8*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 060011E7 */
|
||||
IL_0346: /* DE | 0E */ leave.s IL_0356
|
||||
|
||||
} // end .try
|
||||
fault
|
||||
{
|
||||
IL_0348: /* FE06 | (06)00014C */ ldftn void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'SFile.{dtor}'(valuetype SFile/*0200022E*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 0600014C */
|
||||
IL_034e: /* 12 | 16 */ ldloca.s V_22
|
||||
IL_0350: /* 28 | (06)005C0F */ call void ___CxxCallUnwindDtor(method void *(void*),
|
||||
void*) /* 06005C0F */
|
||||
IL_0355: /* DC | */ endfinally
|
||||
} // end handler
|
||||
// HEX: 04 00 00 00 3F 03 00 00 09 00 00 00 48 03 00 00 0E 00 00 00 73 00 00 01
|
||||
IL_0356: /* 12 | 16 */ ldloca.s V_22
|
||||
IL_0358: /* 7F | (04)00037E */ ldsflda valuetype '<CppImplementationDetails>'.$ArrayType$$$BY0BC@Q6AXXZ/*0200032C*/ modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) '??_7SFile@@6B@' /* 0400037E */
|
||||
IL_035d: /* 55 | */ stind.i8
|
||||
IL_035e: /* DE | 0E */ leave.s IL_036e
|
||||
|
||||
} // end .try
|
||||
fault
|
||||
{
|
||||
IL_0360: /* FE06 | (06)000044 */ ldftn void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'QueryColumnSelector.{dtor}'(valuetype QueryColumnSelector/*02000239*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 06000044 */
|
||||
IL_0366: /* 12 | 17 */ ldloca.s V_23
|
||||
IL_0368: /* 28 | (06)005C0F */ call void ___CxxCallUnwindDtor(method void *(void*),
|
||||
void*) /* 06005C0F */
|
||||
IL_036d: /* DC | */ endfinally
|
||||
} // end handler
|
||||
// HEX: 04 00 00 00 70 01 00 00 F0 01 00 00 60 03 00 00 0E 00 00 00 73 00 00 01
|
||||
IL_036e: /* 12 | 17 */ ldloca.s V_23
|
||||
IL_0370: /* 28 | (06)000044 */ call void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'QueryColumnSelector.{dtor}'(valuetype QueryColumnSelector/*02000239*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 06000044 */
|
||||
IL_0375: /* DE | 0E */ leave.s IL_0385
|
||||
|
||||
} // end .try
|
||||
fault
|
||||
{
|
||||
IL_0377: /* FE06 | (06)0057E7 */ ldftn void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'stx.tsarray.{dtor}'(valuetype stx.tsarray/*0200022B*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 060057E7 */
|
||||
IL_037d: /* 12 | 18 */ ldloca.s V_24
|
||||
IL_037f: /* 28 | (06)005C0F */ call void ___CxxCallUnwindDtor(method void *(void*),
|
||||
void*) /* 06005C0F */
|
||||
IL_0384: /* DC | */ endfinally
|
||||
} // end handler
|
||||
// HEX: 04 00 00 00 51 01 00 00 26 02 00 00 77 03 00 00 0E 00 00 00 73 00 00 01
|
||||
IL_0385: /* 00 | */ nop
|
||||
.try
|
||||
{
|
||||
IL_0386: /* 12 | 18 */ ldloca.s V_24
|
||||
IL_0388: /* 28 | (06)005886 */ call void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'stx.clear_array_ptr_vector<wchar_t>'(valuetype std.'vector<wchar_t *,std::allocator<wchar_t *> >'/*02000245*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsImplicitlyDereferenced/*01000012*/)) /* 06005886 */
|
||||
IL_038d: /* DE | 0E */ leave.s IL_039d
|
||||
|
||||
} // end .try
|
||||
fault
|
||||
{
|
||||
IL_038f: /* FE06 | (06)00585A */ ldftn void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'std.vector<wchar_t *,std::allocator<wchar_t *> >.{dtor}'(valuetype std.'vector<wchar_t *,std::allocator<wchar_t *> >'/*02000245*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 0600585A */
|
||||
IL_0395: /* 12 | 18 */ ldloca.s V_24
|
||||
IL_0397: /* 28 | (06)005C0F */ call void ___CxxCallUnwindDtor(method void *(void*),
|
||||
void*) /* 06005C0F */
|
||||
IL_039c: /* DC | */ endfinally
|
||||
} // end handler
|
||||
// HEX: 04 00 00 00 86 03 00 00 09 00 00 00 8F 03 00 00 0E 00 00 00 73 00 00 01
|
||||
IL_039d: /* 12 | 18 */ ldloca.s V_24
|
||||
IL_039f: /* 28 | (06)005872 */ call void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'std.vector<wchar_t *,std::allocator<wchar_t *> >._Tidy'(valuetype std.'vector<wchar_t *,std::allocator<wchar_t *> >'/*02000245*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 06005872 */
|
||||
IL_03a4: /* DE | 0E */ leave.s IL_03b4
|
||||
|
||||
} // end .try
|
||||
fault
|
||||
{
|
||||
IL_03a6: /* FE06 | (06)000159 */ ldftn void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) 'SError.{dtor}'(valuetype SError/*0200043D*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 06000159 */
|
||||
IL_03ac: /* 12 | 1B */ ldloca.s V_27
|
||||
IL_03ae: /* 28 | (06)005C0F */ call void ___CxxCallUnwindDtor(method void *(void*),
|
||||
void*) /* 06005C0F */
|
||||
IL_03b3: /* DC | */ endfinally
|
||||
} // end handler
|
||||
// HEX: 04 00 00 00 2A 00 00 00 7C 03 00 00 A6 03 00 00 0E 00 00 00 73 00 00 01
|
||||
IL_03b4: /* 12 | 1B */ ldloca.s V_27
|
||||
IL_03b6: /* 28 | (06)000165 */ call void modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.CallConvCdecl/*0100000B*/) SError.ClearErrorDetail(valuetype SError/*0200043D*/* modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/) modopt([mscorlib/*23000001*/]System.Runtime.CompilerServices.IsConst/*0100000D*/)) /* 06000165 */
|
||||
IL_03bb: /* 07 | */ ldloc.1
|
||||
IL_03bc: /* 2A | */ ret
|
||||
} // end of method HistoryQuery::StartQuery
|
||||
|
||||
} // end of class ArchestrA.HistoryQuery
|
||||
|
||||
// *********** DISASSEMBLY COMPLETE ***********************
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"Source": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientManaged.dll",
|
||||
"Output": "C:\\Users\\dohertj2\\Desktop\\histsdk\\artifacts\\reverse-engineering\\instrumented-getnexteventrow\\aahClientManaged.dll",
|
||||
"InstrumentedMethod": "0x06005965",
|
||||
"InsertedAfterOffset": "0x005B",
|
||||
"LoggerMethod": "LogBuffer",
|
||||
"LoggedPointer": "arg.2 EventQueryResultRow*",
|
||||
"CapturedLength": 2048
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"Source": "C:\\Users\\dohertj2\\Desktop\\histsdk\\artifacts\\reverse-engineering\\instrumented-read-boundary\\aahClientManaged.startdataquery.dll",
|
||||
"Output": "C:\\Users\\dohertj2\\Desktop\\histsdk\\artifacts\\reverse-engineering\\instrumented-read-boundary\\aahClientManaged.instrumented.dll",
|
||||
"InstrumentedMethod": "0x0600588D",
|
||||
"InsertedAfterOffset": "0x005B",
|
||||
"LoggerMethods": [
|
||||
"LogUInt32",
|
||||
"LogBuffer"
|
||||
],
|
||||
"LoggedScalar": "arg.1 queryHandle",
|
||||
"LoggedPointer": "arg.2 DataQueryResultRow*",
|
||||
"CapturedLength": 512
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"Source": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientManaged.dll",
|
||||
"Output": "C:\\Users\\dohertj2\\Desktop\\histsdk\\artifacts\\reverse-engineering\\instrumented-query-handle-correlation\\aahClientManaged.open2-startdataquery.dll",
|
||||
"InstrumentedMethod": "0x0600574B",
|
||||
"RequestInsertedAfterOffset": "0x01C2",
|
||||
"HandleInsertedAfterOffset": "0x0206",
|
||||
"LoggerAssembly": "AVEVA.Historian.ReverseInstrumentation",
|
||||
"LoggerType": "AVEVA.Historian.ReverseInstrumentation.CaptureLogger",
|
||||
"LoggerMethods": [
|
||||
"LogBuffer",
|
||||
"LogUInt32"
|
||||
],
|
||||
"StreamVariable": "V_21",
|
||||
"ClientHandleCandidateVariable": "V_10",
|
||||
"UsesGetData": "0x0600100D",
|
||||
"UsesGetLength": "0x0600100C"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"Source": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientManaged.dll",
|
||||
"Output": "C:\\Users\\dohertj2\\Desktop\\histsdk\\artifacts\\reverse-engineering\\instrumented-starteventquery\\aahClientManaged.dll",
|
||||
"InstrumentedMethod": "0x0600574A",
|
||||
"InsertedAfterOffset": "0x0096",
|
||||
"LoggerMethod": "LogBuffer",
|
||||
"StreamVariable": "V_14",
|
||||
"UsesGetData": "0x0600100D",
|
||||
"UsesGetLength": "0x0600100C"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"Source": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientManaged.dll",
|
||||
"Output": "C:\\Users\\dohertj2\\Desktop\\histsdk\\artifacts\\reverse-engineering\\instrumented-starttagquery-response\\aahClientManaged.dll",
|
||||
"InstrumentedMethod": "0x06004A15",
|
||||
"InsertedAfterOffset": "0x02B5",
|
||||
"ResponseInsertedAfterOffset": "0x0311",
|
||||
"LoggerMethod": "LogBuffer",
|
||||
"ResponseLoggerMethod": "LogByteArray",
|
||||
"StreamVariable": "V_61",
|
||||
"ResponseVariable": "V_47",
|
||||
"UsesGetData": "0x0600100D",
|
||||
"UsesGetLength": "0x0600100C"
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"Source": "C:\\Users\\dohertj2\\Desktop\\histsdk\\artifacts\\reverse-engineering\\instrumented-wcf-read-boundary\\aahClientManaged.startdataquery.dll",
|
||||
"Output": "C:\\Users\\dohertj2\\Desktop\\histsdk\\artifacts\\reverse-engineering\\instrumented-wcf-read-boundary\\aahClientManaged.wcfreadquery.dll",
|
||||
"InstrumentedMethods": [
|
||||
"0x06004A0D",
|
||||
"0x06004A0E"
|
||||
],
|
||||
"StartQuery2InsertedAfterOffset": "0x0293",
|
||||
"GetNextQueryResultBuffer2InsertedAfterOffset": "0x0252",
|
||||
"LoggerMethods": [
|
||||
"LogUInt32",
|
||||
"LogByteArray"
|
||||
],
|
||||
"CapturedValues": [
|
||||
"StartQuery2 success/clientHandle/queryRequestType/requestSize/responseSize/responseBytes/queryHandle/errorSize/errorBytes",
|
||||
"GetNextQueryResultBuffer2 success/clientHandle/queryHandle/resultSize/resultBytes/errorSize/errorBytes"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"Scenario": "WCF StartLikeTagNameSearch / GetLikeTagnames",
|
||||
"CapturedUtc": "2026-05-02T16:21:00Z",
|
||||
"Server": "<redacted-local-dev-historian>",
|
||||
"Filter": "OtOpcUaParityTest%",
|
||||
"Open": {
|
||||
"HistoryEndpoint": "Hist-Integrated",
|
||||
"RetrievalEndpoint": "Retr",
|
||||
"Auth": "Integrated Windows",
|
||||
"Open2ConnectionMode": 1026
|
||||
},
|
||||
"StartLikeTagNameSearch": {
|
||||
"ReturnCode": 0,
|
||||
"TagType": 0,
|
||||
"IsNotLike": false
|
||||
},
|
||||
"GetLikeTagnames": {
|
||||
"ReturnCode": 0,
|
||||
"IsMore": false,
|
||||
"TagNameBufferSize": 66,
|
||||
"ByteCount": 66,
|
||||
"Sha256": "2d450a55f392aed0026e9a957fefa3b116aab6ec81912c5d824c6b9a1ff5a4a1",
|
||||
"Hex": [
|
||||
"01 00 00 00 1D 00 00 00 4F 00 74 00 4F 00 70 00",
|
||||
"63 00 55 00 61 00 50 00 61 00 72 00 69 00 74 00",
|
||||
"79 00 54 00 65 00 73 00 74 00 5F 00 30 00 30 00",
|
||||
"31 00 2E 00 43 00 6F 00 75 00 6E 00 74 00 65 00",
|
||||
"72 00"
|
||||
],
|
||||
"ObservedFields": [
|
||||
{
|
||||
"Offset": "0x0000",
|
||||
"Type": "uint32",
|
||||
"Name": "TagCount",
|
||||
"Value": 1
|
||||
},
|
||||
{
|
||||
"Offset": "0x0004",
|
||||
"Type": "uint32",
|
||||
"Name": "TagNameCharLength",
|
||||
"Value": 29
|
||||
},
|
||||
{
|
||||
"Offset": "0x0008",
|
||||
"Type": "UTF-16LE",
|
||||
"Name": "TagName",
|
||||
"Value": "OtOpcUaParityTest_001.Counter"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"ModuleName": "aahClientManaged.dll",
|
||||
"BaseAddress": 140722710380544,
|
||||
"ModuleMemorySize": 17166336,
|
||||
"FileName": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientManaged.dll"
|
||||
}
|
||||
{
|
||||
"Operation": "aahClientManaged.HistoryQuery.Integrated",
|
||||
"HostName": "localhost",
|
||||
"Port": 32568,
|
||||
"IntegratedSecurity": true,
|
||||
"TagNameProvided": true,
|
||||
"LookbackMinutes": 1440,
|
||||
"OpenSuccess": true,
|
||||
"OpenErrorType": "NoError",
|
||||
"OpenErrorCode": "Success",
|
||||
"OpenErrorDescription": "No error type set",
|
||||
"ConnectedToServer": true,
|
||||
"ConnectionPending": false,
|
||||
"ConnectionErrorOccurred": false,
|
||||
"ConnectionStatusErrorType": null,
|
||||
"ConnectionStatusErrorCode": null,
|
||||
"ConnectionStatusErrorDescription": null,
|
||||
"StartQuerySuccess": true,
|
||||
"StartQueryErrorType": "NoError",
|
||||
"StartQueryErrorCode": "Success",
|
||||
"StartQueryErrorDescription": "No error type set",
|
||||
"MoveTerminalDescription": null,
|
||||
"RowCount": 1,
|
||||
"Rows": [
|
||||
{
|
||||
"StartDateTime": "2026-05-01T13:25:07.3855841Z",
|
||||
"EndDateTime": "2026-05-01T13:25:07.3855841Z",
|
||||
"Quality": 133,
|
||||
"OpcQuality": 192,
|
||||
"QualityDetail": 248,
|
||||
"Value": 0,
|
||||
"StringValuePresent": true,
|
||||
"PercentGood": 100
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"ModuleName": "aahClientManaged.dll",
|
||||
"BaseAddress": 140722710380544,
|
||||
"ModuleMemorySize": 17166336,
|
||||
"FileName": "C:\\Users\\dohertj2\\Desktop\\histsdk\\current\\aahClientManaged.dll"
|
||||
}
|
||||
@@ -0,0 +1,823 @@
|
||||
# Managed Wrapper Findings
|
||||
|
||||
Source assembly: `current\aahClientManaged.dll`
|
||||
|
||||
Tooling used: `ilspycmd 10.0.0.8330`
|
||||
|
||||
## Confirmed Shape
|
||||
|
||||
`aahClientManaged.dll` is a mixed-mode C++/CLI wrapper. The public managed API is
|
||||
under the `ArchestrA` namespace, but query execution calls native
|
||||
`HistorianClient` methods through C++ pointers rather than plain P/Invoke
|
||||
methods.
|
||||
|
||||
`dumpbin /dependents` confirms the deployed wrapper does not import
|
||||
`aahClient.dll` or `aahClientCommon.dll`. It is a self-contained mixed-mode
|
||||
wrapper over system DLLs and the CLR (`mscoree.dll`), so the active wrapper path
|
||||
must be captured inside `aahClientManaged.dll` or at system/WCF boundaries.
|
||||
|
||||
The production read surface maps to these wrapper types:
|
||||
|
||||
- `ArchestrA.HistorianAccess`
|
||||
- `ArchestrA.HistorianConnectionArgs`
|
||||
- `ArchestrA.HistoryQueryArgs`
|
||||
- `ArchestrA.HistoryQuery`
|
||||
- `ArchestrA.HistoryQueryResult`
|
||||
- `ArchestrA.EventQueryArgs`
|
||||
- `ArchestrA.EventQuery`
|
||||
- `ArchestrA.HistorianEvent`
|
||||
|
||||
## Connection Facts
|
||||
|
||||
`HistorianConnectionArgs` defaults:
|
||||
|
||||
- `TcpPort = 32568`
|
||||
- `ServerName = "localhost"`
|
||||
- `ReadOnly = true`
|
||||
- `PacketTimeout = 1000`
|
||||
- `ConnectionType = Process`
|
||||
- `Compression = false`
|
||||
- `IntegratedSecurity = false`
|
||||
|
||||
`HistorianConnectionType` is a flags enum:
|
||||
|
||||
- `Process = 1`
|
||||
- `Event = 2`
|
||||
|
||||
The wrapper keeps separate client slots for process/history and event
|
||||
connections.
|
||||
|
||||
`HistorianAccess.OpenConnection` can return `true` while the native connection
|
||||
is still pending. Callers must poll `HistorianAccess.GetConnectionStatus` and
|
||||
wait for `ConnectedToServer = true` and `Pending = false` before starting
|
||||
queries. Starting `HistoryQuery.StartQuery` immediately after `OpenConnection`
|
||||
can return native `notConnected` (`242`).
|
||||
|
||||
## History Query Contract
|
||||
|
||||
`HistoryQuery.StartQuery` eventually calls native `HistorianClient.StartDataQuery`.
|
||||
It does not build or call `RetrievalServiceContract.StartQuery2` directly from
|
||||
managed C#. The managed wrapper converts `HistoryQueryArgs` into native
|
||||
strings, arrays, selector buffers, and enum values, then hands those to the
|
||||
native `HistorianClient` implementation. That native boundary is the next
|
||||
capture point for exact data-query request bytes.
|
||||
|
||||
Confirmed arguments include:
|
||||
|
||||
- Retrieval mode: cast from `ArchestrA.HistorianRetrievalMode`.
|
||||
- Query format: `0`.
|
||||
- Summary type: `0`.
|
||||
- Tag count and UTF-16 tag pointer array.
|
||||
- Start/end timestamps converted with `DateTime.ToUniversalTime().ToFileTime()`.
|
||||
- Resolution, value deadband, time deadband.
|
||||
- Time zone string: `UTC`.
|
||||
- Version type from `DataVersion`.
|
||||
- Interpolation, timestamp, quality, value selector, and aggregation enums.
|
||||
- Option and filter strings converted as UTF-16 buffers.
|
||||
- Selected query-column buffer.
|
||||
- Max states.
|
||||
- Output query handle.
|
||||
|
||||
Decompiled selected-column stream construction is:
|
||||
|
||||
- `ushort` value `1`
|
||||
- 8 bytes of `QueryColumnSelector` state after
|
||||
`QueryColumnSelector.SelectNonSummaryColumns`
|
||||
|
||||
Focused IL extraction of `DataQueryRequest.Save<SByteStream<SCrtMemFile>>`
|
||||
confirmed several request-buffer details used by the .NET 10 serializer probe:
|
||||
|
||||
- request packet version is `ushort 3` only when option text is exactly
|
||||
`NoOption`; otherwise it is `ushort 9` and the option string is serialized.
|
||||
- offset `300` is serialized as a packed `CQTIFlags` `ushort` before
|
||||
option/filter text, not the query-column selector flags. The low byte is
|
||||
interpolation (`None` is stored as `255`; `SystemDefault` `254` is normalized
|
||||
to `255`), bits `8..11` are `HistorianTimestampRule`, and bits `12..15` are
|
||||
`HistorianQualityRule`. Ordinary full reads therefore write `0x01FF`
|
||||
(`Interpolation=None`, `TimestampRule=End`, `QualityRule=Extended`).
|
||||
- the query-column selector is serialized later as `ushort 1` followed by the
|
||||
exact 8-byte selector state.
|
||||
- after the MDS and storage redundant endpoint blocks, the request writes the
|
||||
raw 8-byte resolution tick field again.
|
||||
- empty `CMetadataNamespace.Save` writes flag byte `1` and three empty
|
||||
`SaveScrambled` strings; each empty scrambled string is `ushort 1` followed
|
||||
by a single zero compressed-string marker byte.
|
||||
- default `AutoSummaryParameters.Save` writes `ushort 2`, two zero `int64`
|
||||
values, five empty compressed strings, and the trailing zero GUID.
|
||||
- `CValueSelector.Save`, `CStateCalcSelector.Save`, and `CQTIFlags.Save` each
|
||||
write a single `ushort` value.
|
||||
- `SRedundantEndpoint.Save` writes endpoint name and then endpoint entries as
|
||||
node-name and pipe-name strings; there is no numeric port field in this block.
|
||||
|
||||
The resulting byte count and pointer are passed to `StartDataQuery` as the
|
||||
selected query-column buffer arguments.
|
||||
|
||||
The decompiled call site passes the following high-level arguments to
|
||||
`HistorianClient.StartDataQuery`:
|
||||
|
||||
- client pointer from the process connection slot
|
||||
- retrieval mode as `INSQL_QUERYTYPE`
|
||||
- query format `0`
|
||||
- summary type `0`
|
||||
- tag count and native UTF-16 tag array
|
||||
- source count `0` and null source array
|
||||
- start/end as UTC FILETIME values
|
||||
- resolution, value deadband, and time deadband
|
||||
- literal timezone `UTC`
|
||||
- data version, interpolation type, timestamp rule, quality rule
|
||||
- option text, with `NoOption` substituted when the option is not available
|
||||
- value selector, aggregation type, selected-column byte count and buffer
|
||||
- filter text and max states
|
||||
- output query handle and native error structure
|
||||
|
||||
This explains the current managed WCF negative evidence: the reconstructed
|
||||
`DataQueryRequest.Save` buffer is only one downstream native serialization
|
||||
artifact, while the public wrapper path reaches that serializer through
|
||||
`HistorianClient.StartDataQuery`.
|
||||
|
||||
`BaseQueryArgs.ProcessQueryArgs` clears `Resolution` to `0` for `Full`, `Delta`,
|
||||
and `Slope` retrieval modes.
|
||||
|
||||
`HistoryQuery.MoveNext` calls native `HistorianClient.GetNextRow<DataQueryResultRow>`.
|
||||
|
||||
## Runtime Method Pointer Evidence
|
||||
|
||||
`tools\AVEVA.Historian.NativeTraceHarness` can now dump prepared CLR runtime
|
||||
method pointers with `--dump-method-pointers <filter>`. This is reverse-
|
||||
engineering-only evidence for hook targeting; it is not production SDK code.
|
||||
|
||||
Important artifacts:
|
||||
|
||||
- `runtime-method-pointers-startquery-latest.json`
|
||||
- `runtime-method-pointers-startdataquery-latest.json`
|
||||
- `runtime-method-pointers-getnextrow-latest.json`
|
||||
- `runtime-method-pointers-starteventquery-latest.json`
|
||||
|
||||
The dump must include `assembly.ManifestModule.GetMethods(...)` because many
|
||||
useful mixed-mode functions are global `<Module>` methods rather than ordinary
|
||||
managed type methods. Confirmed runtime-discoverable methods include:
|
||||
|
||||
- `<Module>.Query.StartDataQuery`
|
||||
- `<Module>.HistorianClient.StartDataQuery`
|
||||
- `<Module>.ClientApp.StartDataQuery`
|
||||
- `<Module>.CRetrievalConnectionWCF.StartQuery2`
|
||||
- `<Module>.Query.GetNextRow`
|
||||
- `<Module>.HistorianClient.GetNextRow<class DataQueryResultRow>`
|
||||
- `<Module>.Query.StartEventQuery`
|
||||
- `<Module>.HistorianClient.StartEventQuery`
|
||||
|
||||
The prepared function pointers are process-specific CLR/JIT entry addresses.
|
||||
They are outside the loaded `aahClientManaged.dll` image in the current runs
|
||||
(`FunctionPointerInModule = false`, `FunctionPointerRva = null`), so they must
|
||||
not be treated as stable DLL RVAs. They can still be useful if discovered inside
|
||||
the same target process immediately before attaching a hook, or if a CLR
|
||||
profiler/rewrite pass resolves the runtime target directly.
|
||||
|
||||
A same-process Frida pass using these absolute runtime pointers is also
|
||||
negative evidence so far. `Attach-NativeTraceHarnessRuntimePointerCapture.ps1`
|
||||
launched the native trace harness, wrote the runtime pointer snapshot before
|
||||
`HistoryQuery.StartQuery`, paused, generated a temporary Frida script from those
|
||||
exact addresses, and installed 37 hooks. The native direct history read still
|
||||
succeeded, but no hook `enter`/`leave` callbacks fired. This suggests
|
||||
`MethodHandle.GetFunctionPointer()` is not the callable edge used by the
|
||||
mixed-mode wrapper path in a way Frida can intercept directly.
|
||||
|
||||
## IL Instrumentation Evidence
|
||||
|
||||
Focused `ildasm` excerpts are stored as:
|
||||
|
||||
- `ildasm-historyquery-startquery-excerpt-latest.il`
|
||||
- `ildasm-historyquery-movenext-excerpt-latest.il`
|
||||
- `ildasm-classlist-filtered-latest.txt`
|
||||
|
||||
These excerpts confirm `ArchestrA.HistoryQuery.StartQuery` is IL with a normal
|
||||
metadata-token call to the mixed-mode target:
|
||||
|
||||
- call site: `IL_02d2`
|
||||
- target: `HistorianClient.StartDataQuery`
|
||||
- metadata token: `060055E4`
|
||||
|
||||
`ArchestrA.HistoryQuery.MoveNext` has the same shape for row retrieval:
|
||||
|
||||
- call site: `IL_0054`
|
||||
- target: `HistorianClient.GetNextRow<class DataQueryResultRow>`
|
||||
- metadata token: `0600588D`
|
||||
|
||||
This is now a proven instrumentation path. A dnlib `NativeWrite` copy of
|
||||
`aahClientManaged.dll` loads and runs in the native trace harness when placed in
|
||||
a disposable copied DLL folder. A reverse-only IL rewrite of
|
||||
`<Module>.Query.StartDataQuery` token `0600574B` inserted a logger immediately
|
||||
after `DataQueryRequest.Save<SByteStream<SCrtMemFile>>` and
|
||||
`endstream`. The instrumented wrapper completed a local direct read and emitted
|
||||
the serialized `StartDataQuery.Request` buffer before the native WCF call.
|
||||
|
||||
The read-boundary instrumentation now also logs the explicit
|
||||
`HistorianClient.GetNextRow<class DataQueryResultRow>` `arg.1` query handle
|
||||
before dumping the `arg.2` row memory. A combined local read captured these
|
||||
records in one session:
|
||||
|
||||
- `StartDataQuery.Request`: length `251`, SHA-256
|
||||
`543ea11af87607044067a0274b1da423cef2acbb7b4f4fab137af023a7153d7f`
|
||||
- `GetNextRow.QueryHandle`: value `1`
|
||||
- `GetNextRow.DataQueryResultRow`: length `512`, SHA-256
|
||||
`702f5248cf8319e3e02da33678ed97dfaa43666bddb88c42101d5290990a4198`
|
||||
|
||||
The harness snapshot from the same run shows `HistoryQuery.queryHandle = 1`,
|
||||
so the managed wrapper field, native `GetNextRow` argument, and row buffer are
|
||||
now correlated without relying on inferred state.
|
||||
|
||||
The next successful run instrumented the native WCF retrieval boundary itself.
|
||||
`CRetrievalConnectionWCF.StartQuery2` sent the same 251-byte request through
|
||||
`RetrievalServiceContract.IRetrievalServiceContract2.StartQuery2` with
|
||||
`clientHandle = 256524568` and `queryRequestType = 1`. The server returned a
|
||||
31-byte response buffer, SHA-256
|
||||
`4c062b5ce8181308f0f46bfd8c6088acb52e6ade94401651b7d3ccc8952edfb5`, and WCF
|
||||
query handle `2967`. `CRetrievalConnectionWCF.GetNextQueryResultBuffer2` then
|
||||
used `clientHandle = 256524568` and `queryHandle = 2967` and returned a
|
||||
570-byte result buffer, SHA-256
|
||||
`f4126e0610a4c63b3dff0e41e8d15e51d75fdbc736f3ec490e7c66d1bb31638d`.
|
||||
|
||||
This separates the two handles: `HistoryQuery.queryHandle = 1` is the
|
||||
client-side `HistorianClient` query table handle, while `/Retr` uses the server
|
||||
query handle returned from `StartQuery2`.
|
||||
|
||||
A later correlation run added scalar logging inside
|
||||
`<Module>.HistorianClient.OpenConnection` and `<Module>.Query.StartDataQuery`.
|
||||
`OpenConnection` wrote legacy native handle `2`, and `Query.StartDataQuery`
|
||||
read the same `*(HistorianClient + 8)` value immediately before the vtable call
|
||||
into the common retrieval layer. The WCF transport method still called
|
||||
`IRetrievalServiceContract2.StartQuery2` with a different transient retrieval
|
||||
client handle. That means the managed read blocker is not the public
|
||||
`HistoryQuery.queryHandle`, not the legacy native handle, and not the
|
||||
`DataQueryRequest` bytes; it is the session mapping maintained by the native
|
||||
common retrieval layer before the WCF contract call. The sanitized correlation
|
||||
summary is stored in `query-handle-correlation-latest.json`.
|
||||
|
||||
`aahClientCommon.CServerClient.GetHandle` returns `*(this + 2528)`, but an
|
||||
instrumented copy of that accessor emitted no records during the same successful
|
||||
history read path. A direct metadata-token reference scan also found no IL call
|
||||
sites for token `060017F9`. The handle translation is therefore either direct
|
||||
field access or a virtual/calli continuation below `CRetrieval.StartQuery2`, not
|
||||
this accessor.
|
||||
|
||||
Additional probes ruled out that assumed `CRetrieval` branch for the successful
|
||||
local WCF read path: instrumented copies of
|
||||
`aahClientCommon.CRetrieval.StartQuery2`,
|
||||
`aahClientCommon.CSrvRetrievalConnection.StartQuery`, and
|
||||
`CRetrievalConsoleClient.StartQuery` emitted no records while the WCF boundary
|
||||
hooks still fired. The active handoff is `aahClientCommon.CClientCommon.StartQuery`
|
||||
token `06002E86`.
|
||||
|
||||
`CClientCommon.StartQuery` performs the missing handle lookup immediately before
|
||||
calling the WCF retrieval method. The value returned by the `CClient` vtable
|
||||
call at IL offset `0x01A3` exactly matches the
|
||||
`CRetrievalConnectionWCF.StartQuery2` client handle. After the WCF call returns,
|
||||
the `queryHandle` pointer contains the same server query handle later passed to
|
||||
`GetNextQueryResultBuffer2`. This narrows the remaining session problem to
|
||||
reproducing or replacing the native `CClient` open/session state that produces
|
||||
the `/Retr` client handle, not rebuilding the data-query request envelope.
|
||||
|
||||
`CClientBase.OpenConnection` uses the same vtable offset `24` as a handle
|
||||
accessor. At the beginning of open it returns `0`; after the secondary open
|
||||
branch at IL offset `0x06D4` succeeds, the accessor returns the same transient
|
||||
handle consumed by `CClientCommon.StartQuery` and WCF `StartQuery2`. The primary
|
||||
open branch did not fire in the local integrated read capture. The next concrete
|
||||
reverse-engineering target is the secondary open vtable call and the WCF/native
|
||||
contract behind it.
|
||||
|
||||
That secondary branch is `CHistoryConnectionWCF.OpenConnection3`, which wraps
|
||||
`IHistoryServiceContract2.OpenConnection2`. The successful local read capture
|
||||
logged a 1346-byte OpenConnection3 request, a 42-byte response, and an empty
|
||||
error buffer. In that response, byte `0` is `0x03` and the transient `/Retr`
|
||||
client handle is UInt32 little-endian at offset `1`. Deserializing the 42-byte
|
||||
response initializes the vtable offset `24` handle. Raw request bytes include
|
||||
local identity/process metadata, so only hashes and redacted handle relationships
|
||||
are documented in
|
||||
`openconnection3-correlation-latest.json`.
|
||||
|
||||
The first captured full-history request for deterministic tag
|
||||
`OtOpcUaParityTest_001.Counter` is 251 bytes with SHA-256
|
||||
`3581ef3b42b59b46503d1aa0127fa60fe4b40943e419aeab99e47e4683888851`.
|
||||
The sanitized byte dump is stored in
|
||||
`startdataquery-request-buffer-latest.json`; raw generated binaries and runtime
|
||||
capture files stay under ignored `artifacts\reverse-engineering`.
|
||||
|
||||
This fixture corrected the managed serializer in three places:
|
||||
|
||||
- `BatchSize` is not serialized in `DataQueryRequest`.
|
||||
- A reserved `uint32 0` follows `SkipRows`.
|
||||
- `AutoSummaryParameters` serializes as version `1`, two zero `int64` values,
|
||||
five zero flag bytes, and a final `uint32 0`.
|
||||
|
||||
The production-side WCF request serializer now has a byte-for-byte test against
|
||||
this native buffer.
|
||||
|
||||
The same instrumentation captured a `TimeWeightedAverage` aggregate
|
||||
`StartDataQuery.Request` for a one-minute resolution window. It is also 251
|
||||
bytes; SHA-256 is
|
||||
`954874bf851bdea6333b8a8159f036e19b124b7a5febefb0cb9c9a8564b20981`, and the
|
||||
sanitized dump is stored in
|
||||
`startdataquery-timeweightedaverage-request-buffer-latest.json`.
|
||||
|
||||
Confirmed aggregate differences versus full-history:
|
||||
|
||||
- request query type at offset `0x02` is `5`
|
||||
- first resolution field at offset `0x1E` is `double 600000000.0`
|
||||
- later resolution field at offset `0xD0` is `int64 6000000000000`
|
||||
- `BatchSize = 3` from `HistoryQueryArgs` is still not serialized in the
|
||||
`DataQueryRequest` buffer
|
||||
|
||||
The managed serializer now has a second byte-for-byte fixture test for this
|
||||
aggregate request.
|
||||
|
||||
An `Interpolated` request with the same one-minute resolution also serializes
|
||||
to 251 bytes. SHA-256 is
|
||||
`fc3a2fcc28d1926d2bd1de477e306cb0930e80a3327be6309b6e834e2951ca26`, and the
|
||||
sanitized dump is stored in
|
||||
`startdataquery-interpolated-request-buffer-latest.json`.
|
||||
|
||||
Confirmed interpolated request details:
|
||||
|
||||
- request query type at offset `0x02` is `3`
|
||||
- first resolution field at offset `0x1E` is `double 600000000.0`
|
||||
- later resolution field at offset `0xD0` is `int64 6000000000000`
|
||||
- the rest of the default filter, metadata namespace, endpoint, and
|
||||
auto-summary tail match the full-history and aggregate fixtures
|
||||
|
||||
The managed serializer now has byte-for-byte fixture coverage for full history,
|
||||
time-weighted aggregate, and interpolated data requests.
|
||||
|
||||
A second IL rewrite instrumented
|
||||
`<Module>.HistorianClient.GetNextRow<class DataQueryResultRow>` token
|
||||
`0600588D` immediately after the call to
|
||||
`Query.GetNextQueryResultRow<class DataQueryResultRow>` token `060058AF`.
|
||||
The successful one-row local read emitted a 512-byte snapshot of the native
|
||||
`DataQueryResultRow*` output structure. The sanitized first-pass dump is stored
|
||||
in `getnextrow-dataqueryresultrow-memory-latest.json`; the artifact hash is
|
||||
`2c2cb06988187c1bd7793a52a71f33599542a69d5e83885c583de8bf3df5d43b`.
|
||||
|
||||
Confirmed basic row-memory offsets for this full-history sample:
|
||||
|
||||
- offset `0x00`: `uint32` tag key `238`
|
||||
- offset `0x28`: FILETIME UTC start timestamp
|
||||
`2026-05-01T14:26:51.1956318Z`
|
||||
- offset `0x30`: `uint32` quality `133`
|
||||
- offset `0x34`: `uint32` quality detail `248`
|
||||
- offset `0x38`: `uint32` OPC quality `192`
|
||||
- offset `0x80`: `double` percent good `100`
|
||||
|
||||
The managed `HistoryQueryResult` reflection snapshot from the same run maps
|
||||
these fields to tag name `OtOpcUaParityTest_001.Counter`, value `0`, quality
|
||||
`133`, OPC quality `192`, quality detail `248`, and percent good `100`.
|
||||
|
||||
For `TimeWeightedAverage`, `GetNextRow` emits a different row-memory layout for
|
||||
time bounds. The sanitized summary is in
|
||||
`getnextrow-timeweightedaverage-memory-latest.json`.
|
||||
|
||||
Confirmed aggregate row offsets from the two returned rows:
|
||||
|
||||
- offset `0x00`: `uint32` tag key `238`
|
||||
- offset `0x28`: managed `EndDateTime`
|
||||
- offset `0x150`: managed `StartDateTime`
|
||||
- offset `0x30`: `uint32` quality
|
||||
- offset `0x34`: `uint32` quality detail
|
||||
- offset `0x38`: `uint32` OPC quality
|
||||
- offset `0x80`: `double` percent good
|
||||
|
||||
The third logged row snapshot duplicated the second row after the managed
|
||||
enumerator reached native result code `30` (`No more data`), so row-result
|
||||
instrumentation should correlate captures with the managed `MoveNext` return
|
||||
status before treating every logged struct as a logical row.
|
||||
|
||||
`Interpolated` row memory follows the same time-bound layout in the captured
|
||||
fixture. The sanitized summary is in
|
||||
`getnextrow-interpolated-memory-latest.json`.
|
||||
|
||||
- offset `0x00`: `uint32` tag key `238`
|
||||
- offset `0x28`: managed `EndDateTime`
|
||||
- offset `0x150`: managed `StartDateTime`
|
||||
- offset `0x30`: `uint32` quality `0`
|
||||
- offset `0x34`: `uint32` quality detail `248`
|
||||
- offset `0x38`: `uint32` OPC quality `192`
|
||||
- offset `0x80`: `double` percent good `100`
|
||||
|
||||
The second logged interpolated row snapshot duplicated the first after
|
||||
`No more data`, matching the aggregate instrumentation behavior.
|
||||
|
||||
Integrated-auth native harness evidence (`tools\AVEVA.Historian.NativeTraceHarness`,
|
||||
latest JSON artifact
|
||||
`docs\reverse-engineering\native-trace-harness-integrated-read-latest.json`)
|
||||
confirms these runtime state transitions for
|
||||
`OtOpcUaParityTest_001.Counter`:
|
||||
|
||||
- `HistorianAccess.OpenConnection` succeeds and sets
|
||||
`clientHandlerArray[0] = 1` for the process connection slot.
|
||||
- `HistoryQuery` starts with `queryHandle = 0`, `retrievalMode = Cyclic`,
|
||||
`dataVersion = Original`, and no result object.
|
||||
- `HistoryQueryArgs` for the read uses `RetrievalMode = Full`,
|
||||
`DataVersion = Latest`, `BatchSize = 1`, `QualityRule = Extended`,
|
||||
`TimeStampRule = End`, `InterpolationType = None`, `Filter = NoFilter`,
|
||||
`ValueSelector = Auto`, and `AggregationType = Total`.
|
||||
- `HistoryQuery.StartQuery` succeeds, normalizes `dataSourceId` from `null` to
|
||||
empty string, allocates a `HistoryQueryResult`, and assigns
|
||||
`queryHandle = 1`.
|
||||
- First `MoveNext` returns one row with tag key `238`, value `0`,
|
||||
quality `133`, OPC quality `192`, quality detail `248`, and
|
||||
percent good `100`.
|
||||
|
||||
Later local runs show a distinction between local direct history reads and the
|
||||
WCF history path:
|
||||
|
||||
- `--direct-connection` succeeds for Galaxy-discovered historized tags such as
|
||||
`TestMachine_001.TestHistoryValue`, returning one row with value `0`, quality
|
||||
`133`, OPC quality `192`, and quality detail `248`.
|
||||
- non-direct local history reads currently open and connect successfully but
|
||||
throw `SEHException` inside native `DataQueryResponse.Load` during
|
||||
`HistoryQuery.StartQuery`; the hardened harness now reports this as
|
||||
`StartQueryException` instead of crashing.
|
||||
- event queries still succeed over the local non-direct path, so the Historian
|
||||
service is reachable and the failure is specific to data query response
|
||||
handling on the local WCF history path.
|
||||
|
||||
The harness accepts `--retrieval-mode`, `--start-utc`, `--end-utc`, and
|
||||
`--resolution-ticks` so scenarios can be repeated with fixed UTC windows. Latest
|
||||
native wrapper evidence artifacts:
|
||||
|
||||
- `native-trace-harness-full-latest.json`: `Full`, one raw row.
|
||||
- `native-trace-harness-cyclic-latest.json`: `Cyclic`, 60-second resolution,
|
||||
two rows.
|
||||
- `native-trace-harness-interpolated-latest.json`: `Interpolated`, 60-second
|
||||
resolution, one row.
|
||||
- `native-trace-harness-timeweightedaverage-latest.json`:
|
||||
`TimeWeightedAverage`, 60-second resolution, two rows.
|
||||
|
||||
`HistoryQueryResult` allocates a native `DataQueryResultRow` of 544 bytes.
|
||||
Confirmed offsets used by the managed wrapper:
|
||||
|
||||
- `0`: tag key (`uint`)
|
||||
- `4`: data type discriminator (`int`)
|
||||
- `8`: tag name (`std::wstring`)
|
||||
- `40`: end timestamp (`FILETIME`)
|
||||
- `48`: quality (`ushort` read through `int`)
|
||||
- `52`: quality detail (`uint`)
|
||||
- `56`: OPC quality (`ushort` read through `int`)
|
||||
- `72`: string value (`std::wstring`)
|
||||
- `104`: numeric value (`double`)
|
||||
- `128`: percent good (`double`)
|
||||
- `336`: start timestamp (`FILETIME`)
|
||||
- `400`: interpolation/timestamp/quality packed flags (`ushort`)
|
||||
- `416`: source tag (`std::wstring`)
|
||||
- `448`: source server (`std::wstring`)
|
||||
- `488`: actual resolution in FILETIME ticks
|
||||
|
||||
## Enum Values Mirrored Into The .NET 10 Scaffold
|
||||
|
||||
`HistorianRetrievalMode`:
|
||||
|
||||
- `Cyclic = 0`
|
||||
- `Delta = 1`
|
||||
- `Full = 2`
|
||||
- `Interpolated = 3`
|
||||
- `BestFit = 4`
|
||||
- `TimeWeightedAverage = 5`
|
||||
- `MinimumWithTime = 6`
|
||||
- `MaximumWithTime = 7`
|
||||
- `Integral = 8`
|
||||
- `Slope = 9`
|
||||
- `Counter = 10`
|
||||
- `ValueState = 11`
|
||||
- `RoundTrip = 12`
|
||||
- `StartBound = 13`
|
||||
- `EndBound = 14`
|
||||
|
||||
Other confirmed enums:
|
||||
|
||||
- `HistorianInterpolationType`: `StairStep = 0`, `Linear = 1`,
|
||||
`SystemDefault = 254`, `None = 255`
|
||||
- `HistorianTimestampRule`: `Start = 0`, `End = 1`, `None = 2`
|
||||
- `HistorianQualityRule`: `Extended = 0`, `Good = 1`, `None = 2`,
|
||||
`Optimistic = 3`
|
||||
- `HistorianValueSelector`: `Auto = 1`, `First = 2`, `Last = 3`,
|
||||
`Integral = 4`, `StdDev = 5`, `Minimum = 6`, `Maximum = 7`,
|
||||
`Average = 8`
|
||||
- `HistorianAggregationType`: `Minimum = 0`, `Maximum = 1`, `Average = 2`,
|
||||
`Total = 3`, `Percent = 4`, `MinContained = 5`, `MaxContained = 6`,
|
||||
`TotalContained = 7`, `AverageContained = 8`, `PercentContained = 9`
|
||||
|
||||
## Retrieval Metadata Contract
|
||||
|
||||
Decompiled WCF retrieval contract signatures in `aahClientManaged.dll` match
|
||||
the .NET 10 scaffold for the scalar and byte-buffer metadata calls:
|
||||
|
||||
- `GetTagTypeFromName(uint clientHandle, string tagName, out uint tagType)`
|
||||
- `IsOriginalAllowed(uint clientHandle, out bool isAllowed)`
|
||||
- `IsManualTag(uint clientHandle, string tagName, out bool isManual)`
|
||||
- `GetTagInfoFromName(uint clientHandle, string tagName,
|
||||
out uint tagMetadataByteCnt, out byte[] tagMetadata)`
|
||||
- `GetTagInfosFromId(uint handle, uint tagIdsSize, byte[] tagIds,
|
||||
ref uint sequence, out uint tagInfosSize, out byte[] tagInfos)`
|
||||
- `GetTagInfosFromName(uint handle, uint tagNamesSize, byte[] tagNames,
|
||||
ref uint sequence, out uint tagInfosSize, out byte[] tagInfos)`
|
||||
|
||||
Remote managed evidence against `10.100.0.48:32568` confirms the integrated
|
||||
session handle works for scalar retrieval calls. For
|
||||
`OtOpcUaParityTest_001.Counter`, `GetTagTypeFromName` returns type `1`,
|
||||
`IsManualTag` returns `false`, and `GetTagInfoFromName` returns `238` with no
|
||||
metadata bytes. `GetTgByNm` and `GetTg` buffer probes currently return the same
|
||||
`238` and no output bytes for all tried encodings. That keeps exact metadata
|
||||
buffer construction unresolved.
|
||||
|
||||
`ArchestrA.TagQuery.StartQuery` is a separate tag browse/query path. It calls
|
||||
`HistorianClient.StartTagQuery` with a UTF-16 tag-filter pointer, an output
|
||||
query handle, an output tag count, and `SError*`. The WCF continuation in
|
||||
`CRetrievalConnectionWCF.StartTagQuery` serializes a request buffer before
|
||||
calling `IRetrievalServiceContract3.StartTagQuery(handle, byte[], out byte[],
|
||||
out byte[])`.
|
||||
|
||||
IL instrumentation of `CRetrievalConnectionWCF.StartTagQuery` token `06004A15`
|
||||
captured the exact WCF request buffer for deterministic OData filter
|
||||
`TagName eq 'OtOpcUaParityTest_001.Counter'`. The request is 92 bytes with
|
||||
SHA-256 `af1dbcdd3eb0ad91a18882c22252aa74aff82998e96a39b63415ab4792a962ac`;
|
||||
sanitized field notes are stored in `starttagquery-request-buffer-latest.json`.
|
||||
|
||||
Confirmed tag-query request fields:
|
||||
|
||||
- offset `0x00`: `ushort` marker `26449` (`0x6751`)
|
||||
- offset `0x02`: `ushort` version `1`
|
||||
- offset `0x04`: `uint32` filter character length
|
||||
- offset `0x08`: UTF-16LE filter text without a trailing null
|
||||
|
||||
The same instrumentation also captures the successful WCF response byte array.
|
||||
For the current local run the response is 8 bytes with SHA-256
|
||||
`db49223a2cf9616171322e5325816a7a579582ebdce91c2f89df8df7aa8aac01`.
|
||||
|
||||
Confirmed start-tag-query response fields:
|
||||
|
||||
- offset `0x00`: `uint32` query handle
|
||||
- offset `0x04`: `uint32` tag count
|
||||
|
||||
The local native tag query succeeds with that OData filter and returns
|
||||
`TagCount = 1`, tag name
|
||||
`OtOpcUaParityTest_001.Counter`, and metadata summary `TagKey = 238`,
|
||||
`TagDataType = 4`, `TagStorageType = 3`, `EngineeringUnit = None`. Plain tag
|
||||
name filters reach the server but fail with native failure code `1`, while
|
||||
wildcard filters fail as invalid OData/WWFilter syntax. Response buffers and
|
||||
the native `CTagMetadata` vector layout for `GetTagInfo` still need byte-level
|
||||
instrumentation.
|
||||
|
||||
`TagQuery.GetTagNames` calls `HistorianClient.GetTagNames`, while
|
||||
`TagQuery.GetTagInfo` calls `HistorianClient.GetTagInfos` and then
|
||||
`HistorianTag.LoadFromTagMetadata` for each 224-byte `CTagMetadata` entry in
|
||||
the returned native vector. The separate wildcard-style browse path is not
|
||||
`TagQuery`; method inventory shows it as
|
||||
`HistorianClient.StartLikeTagNameSearch` / `GetLikeTagnames` with WCF
|
||||
continuations `CRetrievalConnectionWCF.StartLikeTagNameSearch` /
|
||||
`GetLikeTagnames`.
|
||||
|
||||
IL instrumentation of `aahClientCommon.CClientCommon.GetTagInfos` token
|
||||
`06002EC9` captured the pre-deserialization response stream used by
|
||||
`TagQuery.GetTagInfo`. For the deterministic tag
|
||||
`OtOpcUaParityTest_001.Counter`, the stream is 106 bytes with SHA-256
|
||||
`77b2bf720d8888f08a1499a8162e706c2cef567a1f6d74d7e92efe0cd3e3e34b`;
|
||||
sanitized details are stored in `tagquery-gettaginfo-response-latest.json`.
|
||||
|
||||
Confirmed `GetTagInfo` response stream fields for the current fixture:
|
||||
|
||||
- offset `0x0000`: `uint32` tag count
|
||||
- offset `0x0004`: 4-byte native data-type descriptor; `CTagUtil.GetDataValueType`
|
||||
maps this fixture to public `HistorianDataType = 4`
|
||||
- offset `0x0008`: type GUID
|
||||
- offset `0x0018`: `uint32` tag key
|
||||
- offset `0x001C`: compact ASCII tag name: marker `0x09`, `uint16` byte length,
|
||||
then bytes
|
||||
- offset `0x003C`: compact ASCII metadata provider, observed as `MDAS`
|
||||
- offset `0x0043`: native tag class byte
|
||||
- offset `0x0044`: storage type byte
|
||||
- offset `0x0045`: deadband type byte
|
||||
- offset `0x0046`: interpolation type byte
|
||||
|
||||
The same instrumentation captured the native `std::vector<CTagMetadata>` after
|
||||
`Load<CTagMetadata,SByteStream<SCrtMemFile>>`; the vector has 224-byte elements.
|
||||
`HistorianTag.LoadFromTagMetadata` reads tag key from vector offset `0x0030`,
|
||||
tag name from `0x0038`, description from `0x0058`, storage type from `0x00C1`,
|
||||
deadband type from `0x00C2`, and inactive status from vector offset `0x0034`.
|
||||
|
||||
The wildcard browse path is confirmed separately through managed WCF calls to
|
||||
`Retr.StartLikeTagNameSearch` and `Retr.GetLikeTagnames`. With integrated
|
||||
Windows `Open2` and filter `OtOpcUaParityTest%`, `StartLikeTagNameSearch`
|
||||
returns `0`, and `GetLikeTagnames` returns one 66-byte buffer with SHA-256
|
||||
`2d450a55f392aed0026e9a957fefa3b116aab6ec81912c5d824c6b9a1ff5a4a1`.
|
||||
The buffer layout for the one-tag fixture is `uint32 count`, then for each tag
|
||||
`uint32 UTF-16 character length` and UTF-16LE tag name bytes. Sanitized details
|
||||
are stored in `like-tag-browse-response-latest.json`.
|
||||
|
||||
## Event Query Contract
|
||||
|
||||
`EventQuery.StartQuery` calls native `HistorianClient.StartEventQuery`.
|
||||
|
||||
Confirmed arguments include:
|
||||
|
||||
- Start/end timestamps converted to FILETIME.
|
||||
- Event count.
|
||||
- Skip count.
|
||||
- Event order as `ushort`.
|
||||
- Filter block pointer.
|
||||
- Time zone string: `UTC`.
|
||||
- Output query handle.
|
||||
|
||||
The decompiled wrapper passes event query type value `1` into
|
||||
`HistorianClient.StartEventQuery` for ordinary event reads. This is distinct
|
||||
from the WCF retrieval `queryRequestType`: `Query.StartEventQuery` stores
|
||||
`ushort 3` immediately before calling
|
||||
`CRetrievalConnectionWCF.StartEventQuery`, so the WCF operation must use
|
||||
`queryRequestType = 3`.
|
||||
|
||||
`EventQueryRequest.Save<SByteStream<SCrtMemFile>>` now has a byte-level field
|
||||
order from `ildasm`:
|
||||
|
||||
- constant request version `ushort 5`
|
||||
- start and end FILETIME values from the embedded `TIMERANGE`
|
||||
- `eventCount` as `uint32`
|
||||
- `skipCount` as `uint32`
|
||||
- `eventOrder` as `uint16`
|
||||
- `queryType` as `uint16`
|
||||
- `EventQueryFilters.Save`
|
||||
- result buffer size as `uint32`; native construction passes `0x10000`
|
||||
- timezone `std::wstring`; ordinary reads pass `UTC`
|
||||
- `CMetadataNamespace.Save`
|
||||
- `EventQueryFilters.SaveSelect`
|
||||
|
||||
`EventQueryFilters.Save` writes `ushort 0`, a `uint32` filter count, each
|
||||
filter, a continuation flag byte, and only writes continuation FILETIME/GUID
|
||||
when that flag is non-zero. Empty event reads therefore serialize the filter
|
||||
block as `00 00 00 00 00 00 00`. `SaveSelect` writes a `uint32` selected
|
||||
property count followed by compressed strings; default event reads write count
|
||||
zero.
|
||||
|
||||
`EventQuery` allocates `EventQueryFilters` as a 72-byte native object. It rejects
|
||||
filters on `EventTime`, limits filter count to 500, and converts filter property
|
||||
names and values to UTF-16 strings.
|
||||
|
||||
`EventQuery.MoveNext` calls `HistorianClient.GetNextRow<EventQueryResultRow>` and
|
||||
then `HistorianEvent.CreateHistorianEvent`.
|
||||
|
||||
Integrated-auth native harness event evidence
|
||||
(`native-trace-harness-event-latest.json`) confirms:
|
||||
|
||||
- Opening with `HistorianConnectionType = Event` succeeds and reaches
|
||||
`ConnectedToServer = true`.
|
||||
- `HistorianAccessUtil.SetConnectionMode(Event, integratedSecurity: true)`
|
||||
produces Open2 connection mode `0x501` (`1281`). The process read-only
|
||||
integrated mode is `0x402` (`1026`).
|
||||
- Native `HistorianAccess.OpenConnection` creates the event connection at
|
||||
`ConnectionIndex.Event` and then calls `CreateDefaultEventTag`.
|
||||
`CreateDefaultEventTag` builds a synthetic `HistorianTag` named
|
||||
`CM_EVENT`, sets description `AnE Event`, engineering unit `NONE`, data type
|
||||
`10`, and calls `AddTagInternal`; the native
|
||||
access snapshot then has `clientHandlerArray = [0, 1]` and
|
||||
`eventTagHandle = 10000000`.
|
||||
- `EventQueryArgs` uses UTC `StartDateTime` / `EndDateTime`, `QueryType =
|
||||
Events`, `EventOrder = Ascending`, and `EventCount` from `--max-rows`.
|
||||
- `EventQuery.StartQuery` succeeds with native `Success`.
|
||||
- A seven-day local-dev window returned three sanitized event rows; raw event
|
||||
IDs and opaque event source details are not written by the harness.
|
||||
- A managed WCF `StartEventQuery` probe using this reconstructed version-5
|
||||
empty-filter request and `queryRequestType = 3` reaches
|
||||
`/Retr.StartEventQuery` but returns `false` with no native error buffer. This
|
||||
remains true for process-mode Open2 (`1026`) and event-mode Open2 (`1281`),
|
||||
and for the returned Open2 handle, the native `ClientApp` event slot handle
|
||||
`1`, and the observed event tag handle `10000000`.
|
||||
- `CRetrievalConnectionWCF.StartEventQuery` has a server-interface-version
|
||||
branch: interface versions `<= 2` call `/Retr.StartQuery2`; newer versions
|
||||
call `/Retr.StartEventQuery`. The managed probe now tries both operations
|
||||
with the same reconstructed request. On the local 2020 server, both operation
|
||||
paths still return `false` with no native error buffer, so the mismatch is
|
||||
likely connection/session state rather than this dispatch branch.
|
||||
- Because native event open performs `CreateDefaultEventTag` before event query
|
||||
start, the next gap is likely the `HistorianClient.AddHistorianTag` /
|
||||
`AddTagInternal` setup for `CM_EVENT`, not the basic event request field
|
||||
order or WCF contract signature.
|
||||
- Follow-up decompile of `aahClientCommon.CClient.RegisterTag` shows this part
|
||||
is client-local: it calls `RegisterRealtimeTag`, inserts the tag id into
|
||||
local sets, marks the cached `CTagInfo` as registered, and flips
|
||||
synchronization flags. There is still a server-visible registration path
|
||||
elsewhere (`IHistoryServiceContract.RTag` / storage `RTag`), but
|
||||
`CreateDefaultEventTag` does not directly prove its byte payload.
|
||||
- The server-visible `RTag2` WCF edge is now partially mapped. Decompiled
|
||||
`CHistoryConnectionWCF.RegisterTags` converts a native `_GUID Handle` to a
|
||||
string, calls `IHistoryServiceContract2.RegisterTags2` (`RTag2`), and passes a
|
||||
byte buffer serialized as `uint32 count` followed by `count` 16-byte `_GUID`
|
||||
values. The local managed probe `wcf-register-event-tag` tried empty,
|
||||
zero-GUID, and event-handle-shaped GUID vectors with Open2-derived handle
|
||||
candidates. All failed before event query start could succeed: first-16
|
||||
handle candidates returned native error `51`, while the bytes 4-19 .NET GUID
|
||||
candidate reached the server but returned native error `1`. This makes simple
|
||||
`RTag2` replay unlikely to be the missing event setup by itself; the richer
|
||||
`AddHistorianTag`/`CTagMetadata` path remains the lead.
|
||||
- `HistorianClient.ConvertEventTagToTagMetadata` now has a concrete event-tag
|
||||
metadata map from IL/native data:
|
||||
- synthetic tag name: `CM_EVENT`
|
||||
- description from `CreateDefaultEventTag`: `AnE Event`
|
||||
- event tag id: `353b8145-5df0-4d46-a253-871aef49b321`
|
||||
- common ArchestrA event type id:
|
||||
`5f59ae42-3bb6-4760-91a5-ab0be01f2f27`
|
||||
- ArchestrA event type id:
|
||||
`f3ef1a17-fd27-4c3c-84cf-bac55c0e47de`
|
||||
- converted `CDataType` byte: `5`
|
||||
- storage type passed to `CTagMetadata.Initialize`: `2`
|
||||
- `CTagMetadata.Save<SByteStream<SCrtMemFile>>` writes a one-byte serialization
|
||||
version, a two-byte optional-field mask, the `CDataType` byte, the 16-byte tag
|
||||
id, and compressed strings for present string fields. Short ASCII UTF-16
|
||||
strings use the compact form `09 <length> 00 <ASCII bytes>`, so `CM_EVENT`
|
||||
serializes as `09 08 00 43 4d 5f 45 56 45 4e 54`.
|
||||
- A direct managed replay of this approximate event metadata through
|
||||
`IHistoryServiceContract.AddTags` (`AddT`) is negative evidence:
|
||||
`wcf-add-event-tag` opened `/Hist-Integrated`, tried both a raw
|
||||
`CTagMetadata` payload and a vector-count-prefixed payload, and both returned
|
||||
`AddReturnCode = 4` with no output buffer. The subsequent
|
||||
`StartEventQuery` still returned `false`. This means the missing native event
|
||||
setup is not reproduced by the current `AddT` approximation.
|
||||
- A fake WCF capture server on an alternate port exposed `/Hist`,
|
||||
`/Hist-Integrated`, and `/Retr`, but the native event harness still reached
|
||||
the real local Historian and the fake server saw no calls. The
|
||||
`HistorianConnectionArgs.TcpPort` field does not redirect this native WCF
|
||||
path sufficiently for server-side capture.
|
||||
- The expanded Frida event add-tag pass hooked the candidate MethodDef RVAs
|
||||
before `OpenConnection` and the native event query still succeeded, but no
|
||||
enter/leave callbacks fired. MethodDef RVAs remain insufficient hook targets
|
||||
for this mixed-mode wrapper; use CLR method rewriting/profiling or lower-level
|
||||
transport/API capture next.
|
||||
- IL instrumentation of `<Module>.Query.StartEventQuery` token `0600574A`
|
||||
now captures the exact native `EventQueryRequest` buffer immediately after
|
||||
`EventQueryRequest.Save<SByteStream<SCrtMemFile>>` and `endstream`. A local
|
||||
seven-day event query succeeded and returned three rows while logging a
|
||||
65-byte request. SHA-256 is
|
||||
`6b955b02087047a3199a8c74f3eee85c3b49aaa29b05de12eff2dd536f2da0d5`, and
|
||||
the sanitized dump is stored in `starteventquery-request-buffer-latest.json`.
|
||||
The managed event query serializer now has a byte-for-byte test against this
|
||||
native fixture.
|
||||
- A matching IL rewrite of
|
||||
`<Module>.HistorianClient.GetNextRow<class EventQueryResultRow>` token
|
||||
`06005965` captures native `EventQueryResultRow*` memory immediately after
|
||||
`Query.GetNextEventQueryResultRow<class EventQueryResultRow>` returns. The
|
||||
successful local seven-day event query emitted three 2048-byte raw snapshots
|
||||
under ignored `artifacts\reverse-engineering`; the sanitized summary is
|
||||
stored in `getnexteventrow-memory-latest.json`.
|
||||
|
||||
Confirmed first-pass event row evidence:
|
||||
|
||||
- offset `0x18`: managed `HistorianEvent.EventTime` as FILETIME UTC for all
|
||||
three rows
|
||||
- `ReceivedTime` was not present as a direct FILETIME value in the captured
|
||||
2048-byte native struct snapshot
|
||||
- managed event type was `User.Write.Secured` for all three rows, but the raw
|
||||
struct contains pointer-like fields and no safely decoded inline event-type
|
||||
string yet
|
||||
|
||||
This keeps event result parsing unresolved, but it proves the IL rewrite path
|
||||
can capture both event request bytes and native event row memory without adding
|
||||
production dependencies.
|
||||
|
||||
## Tag Query Session Evidence
|
||||
|
||||
`CRetrievalConnectionWCF.StartTagQuery` does not carry the tag filter in the
|
||||
latest successful WCF call. Combined IL instrumentation of native
|
||||
`OpenConnection` plus tag-query start captured a successful local tag metadata
|
||||
query where the WCF `StartTagQuery` request was only:
|
||||
|
||||
- marker/version bytes: `51 67 01 00`
|
||||
- SHA-256:
|
||||
`17956e4fbe53d5edc0f9170203b013432e4afcc0591c795a10522a98d9fce926`
|
||||
- response bytes: `0C 00 00 00 01 00 00 00`
|
||||
- parsed response: query handle `12`, tag count `1`
|
||||
|
||||
The tag filter `TagName eq 'OtOpcUaParityTest_001.Counter'` was already
|
||||
processed before this WCF request. The native WCF handle string is an uppercase
|
||||
GUID generated for the native retrieval session; it is not the numeric Open2
|
||||
handle, the Open2 storage session id, the first 16 Open2 bytes, or the full
|
||||
Open2 output. Managed replay of both the older 92-byte filter-shaped candidate
|
||||
and the latest 4-byte header-only request with all Open2-derived handle
|
||||
candidates returned native errors `51` or `1`.
|
||||
|
||||
Conclusion: public metadata should not be wired through `StartTagQuery`.
|
||||
`BrowseTagNamesAsync` can stay on the proven `StartLikeTagNameSearch` /
|
||||
`GetLikeTagnames` path. `GetTagMetadataAsync` now uses the direct
|
||||
`GetTagInfoFromName` WCF path, which returned a 98-byte metadata record for the
|
||||
deterministic parity tag. More guessed `StartTagQuery` envelopes are not the
|
||||
useful next target; the missing evidence is the native session registration or
|
||||
the earlier metadata-layer call that binds the filter to the retrieval GUID.
|
||||
|
||||
## Immediate Unknowns
|
||||
|
||||
These still require native ABI inspection and packet captures:
|
||||
|
||||
- Session handshake frame.
|
||||
- Authentication frame.
|
||||
- Query frame envelope and length/correlation fields.
|
||||
- Native `StartDataQuery` message type identifier.
|
||||
- Native `StartEventQuery` message type identifier.
|
||||
- `GetNextRow` request/response frame shape.
|
||||
- Error frame layout.
|
||||
|
||||
See `native-exports.md` for the first PE export-table pass over
|
||||
`aahClient.dll`.
|
||||
@@ -0,0 +1,267 @@
|
||||
0x06002E89 0x236C24 <Module>.aahClientCommon.CClientCommon.StartEventQuery
|
||||
0x06002E8A 0x236E4C <Module>.aahClientCommon.CClientCommon.GetNextEventQueryResultBuffer
|
||||
0x06002E8B 0x237054 <Module>.aahClientCommon.CClientCommon.EndEventQuery
|
||||
0x0600495A 0x35B654 <Module>.CRetrievalConnectionCloud.StartEventQuery
|
||||
0x0600495B 0x35C370 <Module>.CRetrievalConnectionCloud.GetNextEventQueryResultBuffer
|
||||
0x0600495C 0x3577B8 <Module>.CRetrievalConnectionCloud.EndEventQuery
|
||||
0x060049B7 0x36312C <Module>.CRetrievalConnectionDirect.StartEventQuery
|
||||
0x060049B8 0x3638DC <Module>.CRetrievalConnectionDirect.GetNextEventQueryResultBuffer
|
||||
0x060049B9 0x361CC0 <Module>.CRetrievalConnectionDirect.EndEventQuery
|
||||
0x06004A10 0x370324 <Module>.CRetrievalConnectionWCF.StartEventQuery
|
||||
0x06004A11 0x370F94 <Module>.CRetrievalConnectionWCF.GetNextEventQueryResultBuffer
|
||||
0x06004A12 0x36BE90 <Module>.CRetrievalConnectionWCF.EndEventQuery
|
||||
0x06005397 0x4044B0 <Module>.EventQueryCondition.{dtor}
|
||||
0x06005398 0x40523C <Module>.EventQueryFilters.{ctor}
|
||||
0x06005399 0x404B4C <Module>.EventQueryFilter.{dtor}
|
||||
0x060053FA 0x4010C0 <Module>.ClientApp.EndEventQuery
|
||||
0x06005406 0x4015A4 <Module>.ClientApp.StartEventQuery
|
||||
0x06005432 0x3FEF5C <Module>.std._Vector_const_iterator<std::_Vector_val<std::_Simple_types<EventQueryFilter> > >.!=
|
||||
0x06005433 0x3FE2C0 <Module>.std._Vector_const_iterator<std::_Vector_val<std::_Simple_types<EventQueryFilter> > >.++
|
||||
0x06005434 0x3FD5D0 <Module>.std._Vector_const_iterator<std::_Vector_val<std::_Simple_types<EventQueryFilter> > >.*
|
||||
0x06005435 0x3FE2DC <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >.end
|
||||
0x06005436 0x3FE2F4 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >.begin
|
||||
0x06005437 0x404E8C <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >.clear
|
||||
0x06005438 0x405228 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >.push_back
|
||||
0x06005439 0x4051E8 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >.emplace_back<class EventQueryFilter const &>
|
||||
0x0600543A 0x404C50 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Emplace_back_with_unused_capacity<class EventQueryFilter const &>
|
||||
0x0600543B 0x404F7C <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >.{dtor}
|
||||
0x0600543C 0x404FC4 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >.{ctor}
|
||||
0x0600543D 0x3FEF74 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >.{ctor}
|
||||
0x0600543E 0x404A9C <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >.{dtor}
|
||||
0x06005449 0x404F90 <Module>.std._Tidy_guard<std::vector<EventQueryFilter,std::allocator<EventQueryFilter> > >.{dtor}
|
||||
0x06005460 0x3FE3E4 <Module>.std._Vector_const_iterator<std::_Vector_val<std::_Simple_types<EventQueryFilter> > >.==
|
||||
0x06005461 0x3FD680 <Module>.std._Vector_const_iterator<std::_Vector_val<std::_Simple_types<EventQueryFilter> > >.++
|
||||
0x06005462 0x3FD698 <Module>.std._Vector_const_iterator<std::_Vector_val<std::_Simple_types<EventQueryFilter> > >.{ctor}
|
||||
0x06005463 0x3FE3F8 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Getal
|
||||
0x06005464 0x3FE408 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Getal
|
||||
0x06005465 0x3FD6AC <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Orphan_range
|
||||
0x06005466 0x404EC0 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Tidy
|
||||
0x06005467 0x3FFD2C <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Buy_raw
|
||||
0x06005468 0x404CCC <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Destroy
|
||||
0x06005469 0x3FD6BC <Module>.std._Default_allocator_traits<std::allocator<EventQueryFilter> >.select_on_container_copy_construction
|
||||
0x0600546A 0x3FE418 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Getal
|
||||
0x0600546B 0x4049AC <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Tidy
|
||||
0x06005482 0x3FD734 <Module>.std._Vector_const_iterator<std::_Vector_val<std::_Simple_types<EventQueryFilter> > >._Compat
|
||||
0x06005483 0x3FD744 <Module>.std._Compressed_pair<std::allocator<EventQueryFilter>,std::_Vector_val<std::_Simple_types<EventQueryFilter> >,1>._Get_first
|
||||
0x06005484 0x3FD754 <Module>.std._Compressed_pair<std::allocator<EventQueryFilter>,std::_Vector_val<std::_Simple_types<EventQueryFilter> >,1>._Get_first
|
||||
0x06005485 0x3FF164 <Module>.std.allocator<EventQueryFilter>.allocate
|
||||
0x06005486 0x3FE4F8 <Module>.std.allocator<EventQueryFilter>.deallocate
|
||||
0x06005487 0x3FD764 <Module>.std._Compressed_pair<std::allocator<EventQueryCondition>,std::_Vector_val<std::_Simple_types<EventQueryCondition> >,1>._Get_first
|
||||
0x06005488 0x404914 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Destroy
|
||||
0x06005489 0x3FE528 <Module>.std.allocator<EventQueryCondition>.deallocate
|
||||
0x060054A7 0x3FD848 <Module>.std.addressof<class std::_Vector_val<struct std::_Simple_types<class EventQueryFilter> > const >
|
||||
0x060054A8 0x3FD858 <Module>.std.forward<class EventQueryFilter const &>
|
||||
0x060054A9 0x3FD868 <Module>.std._Unfancy<class EventQueryFilter>
|
||||
0x060054AA 0x404BCC <Module>.std._Default_allocator_traits<std::allocator<EventQueryFilter> >.construct<class EventQueryFilter,class EventQueryFilter const &>
|
||||
0x060054AB 0x405048 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Emplace_reallocate<class EventQueryFilter const &>
|
||||
0x060054AC 0x3FE63C <Module>.std._Compressed_pair<std::allocator<EventQueryFilter>,std::_Vector_val<std::_Simple_types<EventQueryFilter> >,1>.{ctor}<class std::allocator<class EventQueryFilter> >
|
||||
0x060054AD 0x404F34 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Ucopy<class EventQueryFilter *>
|
||||
0x060054AE 0x3FE660 <Module>.std._Compressed_pair<std::allocator<EventQueryFilter>,std::_Vector_val<std::_Simple_types<EventQueryFilter> >,1>.{ctor}<>
|
||||
0x060054AF 0x3FD878 <Module>.std._Unfancy<class EventQueryCondition>
|
||||
0x060054B7 0x404C7C <Module>.std._Destroy_range<class std::allocator<class EventQueryFilter> >
|
||||
0x060054BF 0x404780 <Module>.std._Destroy_range<class std::allocator<class EventQueryCondition> >
|
||||
0x060054C1 0x404B60 <Module>.EventQueryFilter.{ctor}
|
||||
0x060054C2 0x4045A0 <Module>.EventQueryCondition.{ctor}
|
||||
0x060054E6 0x3FDA44 <Module>.std._Vector_val<std::_Simple_types<EventQueryFilter> >.{ctor}
|
||||
0x060054E7 0x3FDA68 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Xlength
|
||||
0x060054E8 0x404CF0 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Change_array
|
||||
0x060054E9 0x3FF5B0 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Calculate_growth
|
||||
0x060054EA 0x404FAC <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Umove_if_noexcept
|
||||
0x060054EB 0x404F4C <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Umove
|
||||
0x060054EC 0x3FE9AC <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >.max_size
|
||||
0x060054ED 0x3FDA80 <Module>.std.allocator<EventQueryFilter>.{ctor}
|
||||
0x060054EE 0x3FDA90 <Module>.std._Vector_val<std::_Simple_types<EventQueryCondition> >.{ctor}
|
||||
0x060054EF 0x404AB0 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >.{ctor}
|
||||
0x060054F0 0x3FE9C4 <Module>.std.allocator<EventQueryCondition>.allocate
|
||||
0x060054F2 0x404A80 <Module>.std._Tidy_guard<std::vector<EventQueryCondition,std::allocator<EventQueryCondition> > >.{dtor}
|
||||
0x06005503 0x404F64 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Umove_if_noexcept1
|
||||
0x06005504 0x3FDBB0 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >.capacity
|
||||
0x06005505 0x3FDBCC <Module>.std._Default_allocator_traits<std::allocator<EventQueryFilter> >.max_size
|
||||
0x06005506 0x3FEAE4 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Getal
|
||||
0x06005507 0x3FEAF4 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Buy_raw
|
||||
0x06005508 0x3FDBE4 <Module>.std._Default_allocator_traits<std::allocator<EventQueryCondition> >.select_on_container_copy_construction
|
||||
0x0600550D 0x3FDC54 <Module>.std._Compressed_pair<std::allocator<EventQueryCondition>,std::_Vector_val<std::_Simple_types<EventQueryCondition> >,1>._Get_first
|
||||
0x06005515 0x3FDCE0 <Module>.std.forward<class std::allocator<class EventQueryFilter> >
|
||||
0x06005516 0x404D6C <Module>.std._Uninitialized_copy<class EventQueryFilter *,class std::allocator<class EventQueryFilter> >
|
||||
0x06005517 0x3FDCF0 <Module>.std._Get_unwrapped<class EventQueryFilter * const &>
|
||||
0x0600551C 0x404BE4 <Module>.std._Default_allocator_traits<std::allocator<EventQueryFilter> >.destroy<class EventQueryFilter>
|
||||
0x0600551F 0x4046E8 <Module>.std._Default_allocator_traits<std::allocator<EventQueryCondition> >.destroy<class EventQueryCondition>
|
||||
0x06005526 0x404DFC <Module>.std._Uninitialized_move<class EventQueryFilter *,class std::allocator<class EventQueryFilter> >
|
||||
0x06005527 0x3FDDA4 <Module>.std._Get_unwrapped<class EventQueryCondition * const &>
|
||||
0x06005528 0x3FEB34 <Module>.std._Compressed_pair<std::allocator<EventQueryCondition>,std::_Vector_val<std::_Simple_types<EventQueryCondition> >,1>.{ctor}<class std::allocator<class EventQueryCondition> >
|
||||
0x06005529 0x404994 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Ucopy<class EventQueryCondition *>
|
||||
0x0600552C 0x404B78 <Module>.EventQueryFilter.__delDtor
|
||||
0x0600552D 0x404650 <Module>.EventQueryCondition.__delDtor
|
||||
0x0600552F 0x3FDDB4 <Module>.std._Uninitialized_backout_al<std::allocator<EventQueryCondition> >._Release
|
||||
0x06005530 0x404800 <Module>.std._Uninitialized_backout_al<std::allocator<EventQueryCondition> >.{dtor}
|
||||
0x06005531 0x3FDDCC <Module>.std._Uninitialized_backout_al<std::allocator<EventQueryCondition> >.{ctor}
|
||||
0x06005535 0x3FDE24 <Module>.std._Uninitialized_backout_al<std::allocator<EventQueryFilter> >._Release
|
||||
0x06005536 0x404CA0 <Module>.std._Uninitialized_backout_al<std::allocator<EventQueryFilter> >.{dtor}
|
||||
0x06005537 0x3FDE3C <Module>.std._Uninitialized_backout_al<std::allocator<EventQueryFilter> >.{ctor}
|
||||
0x0600553F 0x404BF8 <Module>.std._Uninitialized_backout_al<std::allocator<EventQueryFilter> >._Emplace_back<class EventQueryFilter &>
|
||||
0x06005542 0x3FDEB8 <Module>.std.move<class EventQueryFilter &>
|
||||
0x06005543 0x404C24 <Module>.std._Uninitialized_backout_al<std::allocator<EventQueryFilter> >._Emplace_back<class EventQueryFilter>
|
||||
0x06005544 0x3FDEC8 <Module>.std.forward<class std::allocator<class EventQueryCondition> >
|
||||
0x06005545 0x404888 <Module>.std._Uninitialized_copy<class EventQueryCondition *,class std::allocator<class EventQueryCondition> >
|
||||
0x06005566 0x3FE020 <Module>.std.forward<class EventQueryFilter &>
|
||||
0x06005567 0x404B9C <Module>.std._Default_allocator_traits<std::allocator<EventQueryFilter> >.construct<class EventQueryFilter,class EventQueryFilter &>
|
||||
0x0600556A 0x3FE040 <Module>.std.forward<class EventQueryFilter>
|
||||
0x0600556B 0x404BB4 <Module>.std._Default_allocator_traits<std::allocator<EventQueryFilter> >.construct<class EventQueryFilter,class EventQueryFilter>
|
||||
0x0600556C 0x404758 <Module>.std._Uninitialized_backout_al<std::allocator<EventQueryCondition> >._Emplace_back<class EventQueryCondition &>
|
||||
0x06005574 0x404B34 <Module>.EventQueryFilter.{ctor}
|
||||
0x06005575 0x3FF850 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >.{ctor}
|
||||
0x06005576 0x3FED10 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Move_construct
|
||||
0x06005577 0x3FE094 <Module>.std._Vector_val<std::_Simple_types<EventQueryCondition> >._Take_contents
|
||||
0x06005578 0x3FE0D0 <Module>.std.forward<class EventQueryCondition &>
|
||||
0x06005579 0x4046D0 <Module>.std._Default_allocator_traits<std::allocator<EventQueryCondition> >.construct<class EventQueryCondition,class EventQueryCondition &>
|
||||
0x06005583 0x3FE160 <Module>.std.move<class std::allocator<class EventQueryCondition> &>
|
||||
0x060055E2 0x41811C <Module>.HistorianClient.StartEventQuery
|
||||
0x060055E3 0x418084 <Module>.EventQueryFilters.{dtor}
|
||||
0x060055E6 0x408970 <Module>.HistorianClient.EndEventQuery
|
||||
0x06005703 0x41A8B4 <Module>.EventQueryResultBuffer.{ctor}
|
||||
0x06005704 0x41A328 <Module>.EventQueryResultBuffer.{dtor}
|
||||
0x06005705 0x41A338 <Module>.EventQueryResultBuffer.SetClientVersion
|
||||
0x06005706 0x41A348 <Module>.EventQueryResultBuffer.GetItemCount
|
||||
0x06005707 0x41A76C <Module>.EventQueryResultBuffer.Reset
|
||||
0x06005708 0x41A35C <Module>.EventQueryResultBuffer.Header.Reset
|
||||
0x06005709 0x41D750 <Module>.EventQueryFilters.{ctor}
|
||||
0x06005718 0x41D918 <Module>.EventQueryFilters.=
|
||||
0x06005719 0x41D964 <Module>.EventQueryRequest.{ctor}
|
||||
0x0600571A 0x41D7F4 <Module>.EventQueryRequest.{dtor}
|
||||
0x0600574A 0x41DB4C <Module>.Query.StartEventQuery
|
||||
0x0600574E 0x41B08C <Module>.Query.EndEventQuery
|
||||
0x06005750 0x41A410 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >.size
|
||||
0x06005751 0x41D8F8 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >.=
|
||||
0x06005752 0x41A8DC <Module>.std._Vector_const_iterator<std::_Vector_val<std::_Simple_types<EventQueryCondition> > >.!=
|
||||
0x06005753 0x41A42C <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >.size
|
||||
0x06005755 0x41D8DC <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Copy_assign
|
||||
0x06005756 0x41A790 <Module>.std._Vector_const_iterator<std::_Vector_val<std::_Simple_types<EventQueryCondition> > >.==
|
||||
0x06005757 0x41A448 <Module>.std._Vector_const_iterator<std::_Vector_val<std::_Simple_types<EventQueryCondition> > >.++
|
||||
0x06005758 0x41A460 <Module>.std._Vector_const_iterator<std::_Vector_val<std::_Simple_types<EventQueryCondition> > >.{ctor}
|
||||
0x0600575A 0x41A474 <Module>.std._Vector_const_iterator<std::_Vector_val<std::_Simple_types<EventQueryCondition> > >._Compat
|
||||
0x0600575E 0x41D48C <Module>.EventQueryRequest.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06005765 0x41B3E0 <Module>.EventQueryResultBuffer.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06005766 0x41A494 <Module>.std.addressof<class std::vector<class EventQueryFilter,class std::allocator<class EventQueryFilter> > const >
|
||||
0x06005767 0x41A4A4 <Module>.std._Pocca<class std::allocator<class EventQueryFilter> >
|
||||
0x06005768 0x41D738 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >.assign<class EventQueryFilter *,0>
|
||||
0x06005769 0x41A4B4 <Module>.std._Get_unwrapped<class EventQueryFilter * &>
|
||||
0x0600576C 0x41A4E4 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Xlength
|
||||
0x0600576D 0x41A9B0 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Calculate_growth
|
||||
0x0600576E 0x41A8F4 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >.max_size
|
||||
0x06005773 0x41A514 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >.capacity
|
||||
0x06005774 0x41A530 <Module>.std._Default_allocator_traits<std::allocator<EventQueryCondition> >.max_size
|
||||
0x06005777 0x41D38C <Module>.EventQueryFilters.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06005778 0x41BA28 <Module>.EventQueryFilters.SaveSelect<class SByteStream<class SCrtMemFile> >
|
||||
0x06005783 0x41B398 <Module>.EventQueryResultBuffer.ReadHeader<class SByteStream<class SCrtMemFile> >
|
||||
0x06005784 0x41A58C <Module>.std._Adl_verify_range<class EventQueryFilter *,class EventQueryFilter *>
|
||||
0x06005785 0x41D64C <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Assign_range<class EventQueryFilter *>
|
||||
0x06005786 0x41D588 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >._Clear_and_reserve_geometric
|
||||
0x06005787 0x41A59C <Module>.std.distance<class EventQueryCondition *>
|
||||
0x06005788 0x41CF84 <Module>.EventQueryFilter.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x0600578D 0x41B188 <Module>.EventQueryResultBuffer.Header.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x0600578E 0x41A5B0 <Module>.std.distance<class EventQueryFilter *>
|
||||
0x0600578F 0x41A7CC <Module>.std.next<class EventQueryFilter *>
|
||||
0x06005790 0x41D620 <Module>.std._Copy_unchecked<class EventQueryFilter *,class EventQueryFilter *>
|
||||
0x06005791 0x41D570 <Module>.EventQueryFilter.=
|
||||
0x06005792 0x41A5C4 <Module>.std._Vector_const_iterator<std::_Vector_val<std::_Simple_types<EventQueryCondition> > >.*
|
||||
0x06005793 0x41A7E0 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >.end
|
||||
0x06005794 0x41A7F8 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >.begin
|
||||
0x06005795 0x41D550 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >.=
|
||||
0x06005796 0x41D470 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Copy_assign
|
||||
0x06005797 0x41C554 <Module>.EventQueryCondition.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06005798 0x41A5D4 <Module>.std.advance<class EventQueryFilter *,__int64>
|
||||
0x06005799 0x41A5EC <Module>.std.addressof<class std::_Vector_val<struct std::_Simple_types<class EventQueryCondition> > const >
|
||||
0x0600579A 0x41A5FC <Module>.std.addressof<class std::vector<class EventQueryCondition,class std::allocator<class EventQueryCondition> > const >
|
||||
0x0600579B 0x41A60C <Module>.std._Pocca<class std::allocator<class EventQueryCondition> >
|
||||
0x0600579C 0x41D374 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >.assign<class EventQueryCondition *,0>
|
||||
0x0600579D 0x41A61C <Module>.std._Get_unwrapped<class EventQueryCondition * &>
|
||||
0x060057A8 0x41A690 <Module>.std._Adl_verify_range<class EventQueryCondition *,class EventQueryCondition *>
|
||||
0x060057A9 0x41D200 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Assign_range<class EventQueryCondition *>
|
||||
0x060057AB 0x41D0CC <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Clear_and_reserve_geometric
|
||||
0x060057AC 0x41A84C <Module>.std.next<class EventQueryCondition *>
|
||||
0x060057AD 0x41D1C4 <Module>.std._Copy_unchecked<class EventQueryCondition *,class EventQueryCondition *>
|
||||
0x060057AE 0x41D0A4 <Module>.EventQueryCondition.=
|
||||
0x060057B1 0x41A6B0 <Module>.std.advance<class EventQueryCondition *,__int64>
|
||||
0x06005946 0x430F34 <Module>.EventQueryCondition.{ctor}
|
||||
0x06005947 0x431088 <Module>.EventQueryCondition.AddConditionValue
|
||||
0x06005948 0x430110 <Module>.EventQueryCondition.GetPropertyName
|
||||
0x06005949 0x431648 <Module>.EventQueryFilter.AddFilterCondition
|
||||
0x0600594A 0x42FFB4 <Module>.EventQueryFilters.GetFiltersCount
|
||||
0x0600594B 0x431C84 <Module>.EventQueryFilters.AddEventFilter
|
||||
0x0600594C 0x431894 <Module>.EventQueryFilters.AddEventFilterCondition
|
||||
0x0600594D 0x431434 <Module>.EventQueryFilter.{ctor}
|
||||
0x0600594E 0x42FB4C <Module>.EventQueryResultBuffer.GetErrorCode
|
||||
0x06005950 0x4306D0 <Module>.EventQueryResultRow.{ctor}
|
||||
0x06005951 0x430684 <Module>.EventQueryResultRow.{dtor}
|
||||
0x06005952 0x42FE44 <Module>.std.vector<EventQueryFilter,std::allocator<EventQueryFilter> >.[]
|
||||
0x06005953 0x42FFD8 <Module>.std._Vector_iterator<std::_Vector_val<std::_Simple_types<EventQueryCondition> > >.++
|
||||
0x06005954 0x42FFF4 <Module>.std._Vector_iterator<std::_Vector_val<std::_Simple_types<EventQueryCondition> > >.->
|
||||
0x06005955 0x42FE5C <Module>.std._Const_cast<class EventQueryCondition const >
|
||||
0x06005956 0x43009C <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >.end
|
||||
0x06005957 0x4300B4 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >.begin
|
||||
0x06005958 0x431634 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >.push_back
|
||||
0x06005959 0x4315F8 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >.emplace_back<class EventQueryCondition const &>
|
||||
0x0600595A 0x431270 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Emplace_back_with_unused_capacity<class EventQueryCondition const &>
|
||||
0x0600595B 0x4300C8 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >.{ctor}
|
||||
0x06005960 0x430004 <Module>.std._Vector_iterator<std::_Vector_val<std::_Simple_types<EventQueryCondition> > >.{ctor}
|
||||
0x06005961 0x42FE6C <Module>.std._Vector_const_iterator<std::_Vector_val<std::_Simple_types<EventQueryCondition> > >.->
|
||||
0x06005962 0x42FE7C <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Orphan_range
|
||||
0x06005964 0x430A3C <Module>.EventQueryResultBuffer.GetNextRow<class SByteStream<class SCrtMemFile> >
|
||||
0x06005965 0x430E10 <Module>.HistorianClient.GetNextRow<class EventQueryResultRow>
|
||||
0x06005966 0x42FE9C <Module>.std.addressof<class std::_Vector_val<struct std::_Simple_types<class EventQueryCondition> > >
|
||||
0x06005967 0x42FEAC <Module>.std.forward<class EventQueryCondition const &>
|
||||
0x06005968 0x430EB8 <Module>.std._Default_allocator_traits<std::allocator<EventQueryCondition> >.construct<class EventQueryCondition,class EventQueryCondition const &>
|
||||
0x06005969 0x431458 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Emplace_reallocate<class EventQueryCondition const &>
|
||||
0x0600596A 0x430018 <Module>.std._Compressed_pair<std::allocator<EventQueryCondition>,std::_Vector_val<std::_Simple_types<EventQueryCondition> >,1>.{ctor}<>
|
||||
0x0600596F 0x431298 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Change_array
|
||||
0x06005970 0x43141C <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Umove_if_noexcept
|
||||
0x06005971 0x4313EC <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Umove
|
||||
0x06005972 0x42FECC <Module>.std.allocator<EventQueryCondition>.{ctor}
|
||||
0x06005977 0x431404 <Module>.std.vector<EventQueryCondition,std::allocator<EventQueryCondition> >._Umove_if_noexcept1
|
||||
0x06005979 0x430874 <Module>.EventQueryResultRow.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x0600597A 0x430CF0 <Module>.Query.GetNextQueryResultRow<class EventQueryResultRow>
|
||||
0x0600597B 0x431374 <Module>.std._Uninitialized_move<class EventQueryCondition *,class std::allocator<class EventQueryCondition> >
|
||||
0x0600597D 0x42FEEC <Module>.std.move<class EventQueryCondition &>
|
||||
0x0600597E 0x430ED0 <Module>.std._Uninitialized_backout_al<std::allocator<EventQueryCondition> >._Emplace_back<class EventQueryCondition>
|
||||
0x06005982 0x42FF48 <Module>.std.forward<class EventQueryCondition>
|
||||
0x06005983 0x430D5C <Module>.std._Default_allocator_traits<std::allocator<EventQueryCondition> >.construct<class EventQueryCondition,class EventQueryCondition>
|
||||
0x06005986 0x430AA0 <Module>.EventQueryCondition.{ctor}
|
||||
0x06005F21 0x0 RetrievalServiceContract.IRetrievalServiceContract4.StartEventQuery
|
||||
0x06005F22 0x0 RetrievalServiceContract.IRetrievalServiceContract4.GetNextEventQueryResultBuffer
|
||||
0x06005F23 0x0 RetrievalServiceContract.IRetrievalServiceContract4.EndEventQuery
|
||||
0x06005F65 0x4181D8 EventQueryFilters.<MarshalCopy>
|
||||
0x06005F66 0x4180D0 EventQueryFilters.<MarshalDestroy>
|
||||
0x060061A8 0x43FB78 ArchestrA.HistorianAccess.CreateEventQuery
|
||||
0x06006225 0x4301C0 ArchestrA.EventQueryArgsBase.ProcessQueryArgs
|
||||
0x06006226 0x42FB60 ArchestrA.EventQueryArgsBase.get_StartDateTime
|
||||
0x06006227 0x42FB78 ArchestrA.EventQueryArgsBase.set_StartDateTime
|
||||
0x06006228 0x42FBBC ArchestrA.EventQueryArgsBase.get_EndDateTime
|
||||
0x06006229 0x42FBD4 ArchestrA.EventQueryArgsBase.set_EndDateTime
|
||||
0x0600622A 0x42FC3C ArchestrA.EventQueryArgsBase.get_DurationHours
|
||||
0x0600622B 0x42FC50 ArchestrA.EventQueryArgsBase.set_DurationHours
|
||||
0x0600622C 0x42FCB8 ArchestrA.EventQueryArgsBase..ctor
|
||||
0x0600622D 0x42FC64 ArchestrA.EventQueryArgsBase..ctor
|
||||
0x0600622E 0x42FD34 ArchestrA.EventQueryArgs.get_EventCount
|
||||
0x0600622F 0x42FD48 ArchestrA.EventQueryArgs.set_EventCount
|
||||
0x06006230 0x42FD5C ArchestrA.EventQueryArgs.get_EventOrder
|
||||
0x06006231 0x42FD70 ArchestrA.EventQueryArgs.set_EventOrder
|
||||
0x06006232 0x42FD84 ArchestrA.EventQueryArgs.get_QueryType
|
||||
0x06006233 0x42FD98 ArchestrA.EventQueryArgs.set_QueryType
|
||||
0x06006234 0x42FDAC ArchestrA.EventQueryArgs.get_SkipCount
|
||||
0x06006235 0x42FDC0 ArchestrA.EventQueryArgs.set_SkipCount
|
||||
0x06006236 0x42FE00 ArchestrA.EventQueryArgs..ctor
|
||||
0x06006237 0x42FDD4 ArchestrA.EventQueryArgs..ctor
|
||||
0x06006238 0x43024C ArchestrA.EventQuery.ValidateFilterParameters
|
||||
0x06006239 0x430480 ArchestrA.EventQuery.ContinueQuery
|
||||
0x0600623A 0x431C18 ArchestrA.EventQuery..ctor
|
||||
0x0600623B 0x430530 ArchestrA.EventQuery.~EventQuery
|
||||
0x0600623C 0x430344 ArchestrA.EventQuery.!EventQuery
|
||||
0x0600623D 0x42FE30 ArchestrA.EventQuery.get_QueryResult
|
||||
0x0600623E 0x43035C ArchestrA.EventQuery.StartQuery
|
||||
0x0600623F 0x431970 ArchestrA.EventQuery.AddEventFilterCondition
|
||||
0x06006240 0x431DB0 ArchestrA.EventQuery.AddEventFilter
|
||||
0x06006241 0x4310E8 ArchestrA.EventQuery.MoveNext
|
||||
0x06006242 0x4302B4 ArchestrA.EventQuery.EndQuery
|
||||
0x06006243 0x430568 ArchestrA.EventQuery.Dispose
|
||||
0x06006244 0x430610 ArchestrA.EventQuery.Dispose
|
||||
0x06006245 0x4305BC ArchestrA.EventQuery.Finalize
|
||||
@@ -0,0 +1,416 @@
|
||||
0x060005A5 0x5AA58 <Module>.SByteStream<SCrtMemFile>.Load
|
||||
0x060005A6 0x55AA0 <Module>.SByteStream<SCrtMemFile>.Save
|
||||
0x060005A7 0x55C48 <Module>.SByteStream<SCrtMemFile>.Save
|
||||
0x060005A8 0x5A2B4 <Module>.SByteStream<SCrtMemFile>.Save
|
||||
0x06000836 0x55C10 <Module>.operator<<<class SCrtMemFile,unsigned long>
|
||||
0x06000837 0x55CBC <Module>.operator>><class SCrtMemFile,unsigned long>
|
||||
0x0600083A 0x59EBC <Module>.SaveCompressed<class SByteStream<class SCrtMemFile> >
|
||||
0x0600083B 0x55D5C <Module>.SByteStream<SCrtMemFile>.Load<unsigned char>
|
||||
0x0600083C 0x5A320 <Module>.LoadCompressed<class SByteStream<class SCrtMemFile> >
|
||||
0x0600099B 0x55D78 <Module>.SByteStream<SCrtMemFile>.Load
|
||||
0x0600099C 0x5AA88 <Module>.SByteStream<SCrtMemFile>.Load
|
||||
0x0600099D 0x55CEC <Module>.SByteStream<SCrtMemFile>.Load
|
||||
0x0600099E 0x5AA70 <Module>.SByteStream<SCrtMemFile>.Load
|
||||
0x06000A1C 0x55C2C <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06000A28 0x55CD4 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06000CFB 0x68B04 <Module>.SCrtMemFile.{ctor}
|
||||
0x06000CFC 0xEA0DC <Module>.SCrtMemFile.Initialize
|
||||
0x06000CFD 0x11558C <Module>.SCrtMemFile.__vecDelDtor
|
||||
0x06000CFE 0x68B4C <Module>.SCrtMemFile.{dtor}
|
||||
0x06000E20 0x690E0 <Module>.SExternallyLocked<SCrtMemFile,SProtectCriticalSection<CStorageEngineConsoleClient::Client> >.{dtor}
|
||||
0x06000E46 0x6935C <Module>.SExternallyLocked<SCrtMemFile,SProtectCriticalSection<ProtectCSDefault> >.{dtor}
|
||||
0x06000F80 0x5F8C4 <Module>.SExternallyLocked<SCrtMemFile,SProtectCriticalSection<ProtectCSDefault> >.Get
|
||||
0x06000F81 0x5F8D4 <Module>.SExternallyLocked<SCrtMemFile,SProtectCriticalSection<ProtectCSDefault> >.Get
|
||||
0x06000F82 0x6978C <Module>.SExternallyLocked<SCrtMemFile,SProtectCriticalSection<ProtectCSDefault> >.{ctor}
|
||||
0x06000F91 0x5F974 <Module>.SExternallyLocked<SCrtMemFile,SProtectCriticalSection<CStorageEngineConsoleClient::Client> >.Get
|
||||
0x06000F92 0x5F984 <Module>.SExternallyLocked<SCrtMemFile,SProtectCriticalSection<CStorageEngineConsoleClient::Client> >.Get
|
||||
0x06000F93 0x697D4 <Module>.SExternallyLocked<SCrtMemFile,SProtectCriticalSection<CStorageEngineConsoleClient::Client> >.{ctor}
|
||||
0x0600100A 0x5FDC4 <Module>.SByteStream<SCrtMemFile>.<<
|
||||
0x0600100B 0x5FDDC <Module>.SByteStream<SCrtMemFile>.SetLengthAsPosition
|
||||
0x0600100C 0x64FE8 <Module>.SByteStream<SCrtMemFile>.GetLength
|
||||
0x0600100D 0x5FDF8 <Module>.SByteStream<SCrtMemFile>.GetData
|
||||
0x0600100E 0x64FFC <Module>.SByteStream<SCrtMemFile>.SetPosition
|
||||
0x0600100F 0x65014 <Module>.SByteStream<SCrtMemFile>.{ctor}
|
||||
0x06001010 0x5FE14 <Module>.SByteStream<SCrtMemFile>.{ctor}
|
||||
0x060011F3 0x1044DC <Module>.CTagMetadata.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06001205 0xE8848 <Module>.operator>><class SCrtMemFile>
|
||||
0x06001206 0x83894 <Module>.operator>><class SCrtMemFile>
|
||||
0x06001207 0xF6AD4 <Module>.operator<<<class SCrtMemFile>
|
||||
0x06001208 0xF6AEC <Module>.operator<<<class SCrtMemFile>
|
||||
0x06001209 0xEC0C4 <Module>.operator<<<class SCrtMemFile,struct _GUID>
|
||||
0x0600120A 0x60F48 <Module>.endstream<class SCrtMemFile>
|
||||
0x0600120B 0xF6B04 <Module>.STransactPipeClient2.ConnectSendReceive<class SCrtMemFile>
|
||||
0x0600120C 0xF6C6C <Module>.operator<<<class SCrtMemFile,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > >
|
||||
0x0600120D 0xF6C84 <Module>.operator>><class SCrtMemFile,class SError>
|
||||
0x0600120E 0xF6C9C <Module>.operator<<<class SCrtMemFile,unsigned char>
|
||||
0x0600120F 0xEC0E0 <Module>.operator>><class SCrtMemFile,class std::vector<struct _GUID,class std::allocator<struct _GUID> > >
|
||||
0x06001217 0xF716C <Module>.operator<<<class SCrtMemFile,class std::vector<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class std::allocator<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > > > >
|
||||
0x06001218 0xF7184 <Module>.operator<<<class SCrtMemFile,class std::vector<struct _GUID,class std::allocator<struct _GUID> > >
|
||||
0x06001391 0xE8F78 <Module>.SByteStream<SCrtMemFile>.Save
|
||||
0x06001392 0xE8F90 <Module>.SByteStream<SCrtMemFile>.Save
|
||||
0x060013E6 0xEC8CC <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060013E7 0xECB2C <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060013E8 0xECB50 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060013E9 0x62124 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060013EA 0xECB70 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060013EB 0xECBF4 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060013EC 0xECD8C <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060013ED 0xE8FA8 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060013EE 0xECDE0 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060013EF 0xECDFC <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060013F0 0xFD7C4 <Module>.CTagMetadataBase.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060013F4 0xECE18 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06001401 0x84030 <Module>.CConsoleResponseHeader.Load<class SCrtMemFile>
|
||||
0x06001402 0x7E2CC <Module>.SWeakLinkHeader.Load<class SCrtMemFile>
|
||||
0x06001403 0xECE2C <Module>.CConsoleCommandHeader.Save<class SCrtMemFile>
|
||||
0x06001404 0xECE44 <Module>.SWeakLinkHeader.Save<class SCrtMemFile>
|
||||
0x06001405 0xECEA8 <Module>.STransactPipeClient2.SendReceive<class SCrtMemFile>
|
||||
0x06001406 0xE8FC0 <Module>.Load<struct _GUID,class SByteStream<class SCrtMemFile> >
|
||||
0x06001407 0xE900C <Module>.operator>><class SCrtMemFile,struct _GUID>
|
||||
0x06001408 0x105BF8 <Module>.operator<<<class SCrtMemFile,class std::vector<class CTagMetadataImage,class std::allocator<class CTagMetadataImage> > >
|
||||
0x06001409 0x10E268 <Module>.operator>><class SCrtMemFile,class std::vector<class CTagCreationStatus,class std::allocator<class CTagCreationStatus> > >
|
||||
0x0600140A 0xFD7F0 <Module>.operator>><class SCrtMemFile,class std::vector<class CTagMetadataImage,class std::allocator<class CTagMetadataImage> > >
|
||||
0x0600140B 0xFD808 <Module>.operator>><class SCrtMemFile,class std::vector<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class std::allocator<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > > > >
|
||||
0x0600140C 0x7E318 <Module>.LoadVectorSize<class SByteStream<class SCrtMemFile> >
|
||||
0x0600140D 0xED294 <Module>.Save<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class SByteStream<class SCrtMemFile> >
|
||||
0x0600140E 0xED2DC <Module>.SaveScrambled<class SByteStream<class SCrtMemFile> >
|
||||
0x0600140F 0xED478 <Module>.Save<struct _GUID,class SByteStream<class SCrtMemFile> >
|
||||
0x06001410 0xFD820 <Module>.operator<<<class SCrtMemFile,class CMetadataNamespace>
|
||||
0x06001411 0xF75D4 <Module>.STransactPipeClient2.ConnectSendReceive<class SCrtMemFile>
|
||||
0x06001419 0xF7630 <Module>.operator>><class SCrtMemFile,class std::vector<class CDataType,class std::allocator<class CDataType> > >
|
||||
0x060014F0 0xE9494 <Module>.SByteStream<SCrtMemFile>.Save
|
||||
0x060014F1 0xE94AC <Module>.SByteStream<SCrtMemFile>.Save
|
||||
0x06001523 0xF8DD4 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06001524 0xF8DE8 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06001525 0xE7BFC <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06001526 0xE7CCC <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06001527 0x7E82C <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06001531 0xE956C <Module>.SError.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x0600153F 0xE7CFC <Module>.LoadVectorItem<struct _GUID,class SByteStream<class SCrtMemFile> >
|
||||
0x06001540 0xFFA40 <Module>.Save<class CTagMetadataImage,class SByteStream<class SCrtMemFile> >
|
||||
0x06001541 0x10C52C <Module>.Load<class CTagCreationStatus,class SByteStream<class SCrtMemFile> >
|
||||
0x06001542 0xF8E04 <Module>.Load<class CTagMetadataImage,class SByteStream<class SCrtMemFile> >
|
||||
0x06001543 0xF8E90 <Module>.Load<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class SByteStream<class SCrtMemFile> >
|
||||
0x06001545 0xEE008 <Module>.Load<class CDataType,class SByteStream<class SCrtMemFile> >
|
||||
0x060015DA 0x7EAC4 <Module>.SByteStream<SCrtMemFile>.Load
|
||||
0x060015F9 0xF9F30 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060015FD 0xEE33C <Module>.CMetadataNamespace.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060015FE 0xEE4B8 <Module>.CDataType.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06001601 0xE7DE8 <Module>.SErrorDetail.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06001609 0x106DF4 <Module>.LoadVectorItem<class CTagCreationStatus,class SByteStream<class SCrtMemFile> >
|
||||
0x0600160A 0xEE4D4 <Module>.LoadVectorItem<class CTagMetadataImage,class SByteStream<class SCrtMemFile> >
|
||||
0x0600160B 0xE7F88 <Module>.LoadVectorItem<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class SByteStream<class SCrtMemFile> >
|
||||
0x0600160C 0xEA050 <Module>.LoadVectorItem<class CDataType,class SByteStream<class SCrtMemFile> >
|
||||
0x06001646 0xEA094 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06001647 0xFFA88 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06001648 0xE8140 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x0600164C 0xEE4E8 <Module>.CTagMetadataImage.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x0600164F 0x7EB28 <Module>.SByteStream<SCrtMemFile>.Load<unsigned short>
|
||||
0x0600166C 0xE816C <Module>.CTagMetadataImage.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x0600166D 0xF9F44 <Module>.CTagCreationStatus.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x0600166E 0x7EB74 <Module>.CDataType.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x060017B5 0x11AD84 <Module>.SCrtMemFile.{ctor}
|
||||
0x06001814 0x11A3C0 <Module>.SByteStream<SCrtMemFile>.GetLengthFromCurrentPosition
|
||||
0x06001815 0x11A1E0 <Module>.SByteStream<SCrtMemFile>.GetDataFromCurrentPosition
|
||||
0x06001816 0x11A3E0 <Module>.SByteStream<SCrtMemFile>.GetPosition
|
||||
0x060018D2 0x120F58 <Module>.operator<<<class SCrtMemFile>
|
||||
0x060018D8 0x120B7C <Module>.operator>><class SCrtMemFile,unsigned short>
|
||||
0x060018D9 0x120CB0 <Module>.operator>><class SCrtMemFile,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > >
|
||||
0x060018DA 0x120B94 <Module>.operator>><class SCrtMemFile,unsigned __int64>
|
||||
0x060018E9 0x11F268 <Module>.std.map<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > >.{dtor}
|
||||
0x060018EA 0x11F27C <Module>.std.map<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > >.[]
|
||||
0x060018EB 0x11F298 <Module>.std.map<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > >.{ctor}
|
||||
0x060018EC 0x11EDC8 <Module>.std._Tree<std::_Tmap_traits<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> >,0> >.{dtor}
|
||||
0x060018FB 0x11D644 <Module>.std._Tree<std::_Tmap_traits<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> >,0> >._Get_scary
|
||||
0x060018FC 0x11D654 <Module>.std._Tree<std::_Tmap_traits<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> >,0> >._Getal
|
||||
0x060018FD 0x11EDDC <Module>.std._Tree<std::_Tmap_traits<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> >,0> >.{ctor}
|
||||
0x06001904 0x11CBD8 <Module>.std._Compressed_pair<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> >,std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > >,1>._Get_first
|
||||
0x06001905 0x11E7E8 <Module>.std._Tree<std::_Tmap_traits<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> >,0> >._Alloc_sentinel_and_proxy
|
||||
0x0600190E 0x120CE0 <Module>.CConsoleResponseHeader.Save<class SCrtMemFile>
|
||||
0x0600190F 0x1209F8 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06001912 0x11EE00 <Module>.std.map<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > >._Try_emplace<unsigned short const &>
|
||||
0x06001913 0x11E81C <Module>.std._Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > >._Erase_head<class std::allocator<struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> > >
|
||||
0x06001916 0x11CCDC <Module>.std.addressof<class std::_Tree_val<struct std::_Tree_simple_types<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)> > > >
|
||||
0x06001917 0x11DCE8 <Module>.std._Compressed_pair<std::less<unsigned short>,std::_Compressed_pair<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> >,std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > >,1>,1>.{ctor}<struct std::less<unsigned short> const &,struct std::_Zero_then_variadic_args_t>
|
||||
0x06001919 0x11DD0C <Module>.std._Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *>._Buyheadnode<class std::allocator<struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> > >
|
||||
0x0600191F 0x11E844 <Module>.std._Tree_temp_node<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> > >.{dtor}
|
||||
0x06001920 0x11D688 <Module>.std._Alloc_construct_ptr<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> > >._Release
|
||||
0x06001921 0x11DD6C <Module>.std._Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > > >.->
|
||||
0x06001922 0x11D6A4 <Module>.std._Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > > >.!=
|
||||
0x06001927 0x11D6BC <Module>.std._Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > >._Insert_node
|
||||
0x06001928 0x11E858 <Module>.std._Tree<std::_Tmap_traits<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> >,0> >._Check_grow_by_1
|
||||
0x06001929 0x11E87C <Module>.std._Tree<std::_Tmap_traits<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> >,0> >.find
|
||||
0x0600192A 0x11E894 <Module>.std._Tree<std::_Tmap_traits<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> >,0> >.end
|
||||
0x0600192B 0x11D858 <Module>.std.allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> >.allocate
|
||||
0x0600192D 0x11DD80 <Module>.std._Tree_temp_node_alloc<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> > >.{dtor}
|
||||
0x0600192E 0x11DD94 <Module>.std._Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > > >.{ctor}
|
||||
0x0600192F 0x11D8A0 <Module>.std._Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > > >.{ctor}
|
||||
0x06001930 0x11D8B4 <Module>.std.pointer_traits<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> *>.pointer_to
|
||||
0x06001931 0x11D8C4 <Module>.std._Alloc_construct_ptr<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> > >.{dtor}
|
||||
0x06001932 0x11D8E8 <Module>.std._Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > > >.*
|
||||
0x06001933 0x11CDB4 <Module>.std._Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > > >.==
|
||||
0x06001934 0x11CDC8 <Module>.std._Tree_unchecked_const_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > >,std::_Iterator_base0>.{ctor}
|
||||
0x06001935 0x11CDDC <Module>.std._Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > >._Rrotate
|
||||
0x06001936 0x11CE4C <Module>.std._Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > >._Lrotate
|
||||
0x06001937 0x11DDA8 <Module>.std._Tree<std::_Tmap_traits<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> >,0> >.max_size
|
||||
0x06001938 0x11CEB4 <Module>.std._Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > > >.*
|
||||
0x06001939 0x11D8FC <Module>.std._Tree<std::_Tmap_traits<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> >,0> >._Getal
|
||||
0x0600193A 0x11CEC8 <Module>.std._Default_allocator_traits<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> > >.max_size
|
||||
0x0600193B 0x11CEE0 <Module>.std.allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> >.deallocate
|
||||
0x0600193C 0x11CF10 <Module>.std._Compressed_pair<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> >,std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > >,1>._Get_first
|
||||
0x0600193D 0x120D0C <Module>.operator>><class SCrtMemFile>
|
||||
0x06001945 0x11D93C <Module>.std._Compressed_pair<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> >,std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > >,1>.{ctor}<>
|
||||
0x06001947 0x11DFC0 <Module>.std._Tree<std::_Tmap_traits<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> >,0> >._Find_lower_bound<unsigned short>
|
||||
0x06001948 0x11E02C <Module>.std._Tree<std::_Tmap_traits<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> >,0> >._Lower_bound_duplicate<unsigned short>
|
||||
0x06001949 0x11D958 <Module>.std.pair<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> *,bool>.{ctor}<struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> * const &,bool,0>
|
||||
0x0600194A 0x11E8A8 <Module>.std._Tree_temp_node<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> > >.{ctor}<struct std::piecewise_construct_t const &,class std::tuple<unsigned short const &>,class std::tuple<> >
|
||||
0x0600194B 0x11D974 <Module>.std.pair<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> *,bool>.{ctor}<struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> *,bool,0>
|
||||
0x0600194C 0x11E058 <Module>.std._Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > >._Erase_tree<class std::allocator<struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> > >
|
||||
0x0600194D 0x11D990 <Module>.std._Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *>._Freenode0<class std::allocator<struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> > >
|
||||
0x06001950 0x11D9AC <Module>.std._Construct_in_place<struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> *,struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> * const &>
|
||||
0x06001953 0x11CFA4 <Module>.std._Destroy_in_place<struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> *>
|
||||
0x06001954 0x11CFB4 <Module>.std.addressof<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)> >
|
||||
0x06001955 0x11CFC4 <Module>.std._Default_allocator_traits<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> > >.destroy<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)> >
|
||||
0x06001956 0x11CFD4 <Module>.std.exchange<struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> *,std::nullptr_t>
|
||||
0x06001957 0x11E098 <Module>.std._Tree<std::_Tmap_traits<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> >,0> >._Find<unsigned short>
|
||||
0x0600195F 0x11E150 <Module>.std._Tree_temp_node_alloc<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> > >.{ctor}
|
||||
0x06001960 0x11D034 <Module>.std._Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > >.{ctor}
|
||||
0x06001961 0x11D9C0 <Module>.std._Tree<std::_Tmap_traits<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> >,0> >._Get_scary
|
||||
0x06001962 0x11D9D0 <Module>.std._Tree<std::_Tmap_traits<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> >,0> >._Getcomp
|
||||
0x06001963 0x11D050 <Module>.std._Default_allocator_traits<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> > >.deallocate
|
||||
0x06001964 0x11D080 <Module>.std.allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> >.{ctor}
|
||||
0x06001969 0x11D9E0 <Module>.std._Alloc_construct_ptr<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> > >._Allocate
|
||||
0x0600196A 0x11D090 <Module>.std._Alloc_construct_ptr<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> > >.{ctor}
|
||||
0x0600196B 0x11D0A8 <Module>.std._Compressed_pair<std::less<unsigned short>,std::_Compressed_pair<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> >,std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> > >,1>,1>._Get_first
|
||||
0x0600196E 0x120C98 <Module>.CConsoleCommandHeader.Load<class SCrtMemFile>
|
||||
0x0600196F 0x11D0B8 <Module>.std._Tmap_traits<unsigned short,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &),std::less<unsigned short>,std::allocator<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)> >,0>._Kfn<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>
|
||||
0x06001970 0x11D0C8 <Module>.std.forward<struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> * const &>
|
||||
0x06001971 0x11E1A4 <Module>.std._Default_allocator_traits<std::allocator<std::_Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *> > >.construct<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,struct std::piecewise_construct_t const &,class std::tuple<unsigned short const &>,class std::tuple<> >
|
||||
0x06001972 0x11DA04 <Module>.std._Construct_in_place<struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> *,struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> * &>
|
||||
0x06001973 0x11D0D8 <Module>.std.forward<struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> *>
|
||||
0x06001974 0x11D0E8 <Module>.std.exchange<struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> *,struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> * &>
|
||||
0x06001975 0x11DA18 <Module>.std._Tree_node<std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>,void *>._Freenode<class std::allocator<struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> > >
|
||||
0x06001978 0x11D10C <Module>.std.addressof<struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> *>
|
||||
0x0600197C 0x11D12C <Module>.std.addressof<class std::_Tree_val<struct std::_Tree_simple_types<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)> > > const >
|
||||
0x06001986 0x120ACC <Module>.SWeakLinkHeader.{ctor}<class SCrtMemFile>
|
||||
0x06001987 0x11DAE4 <Module>.std.pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>.{ctor}<unsigned short const &>
|
||||
0x06001988 0x11D1B4 <Module>.std.forward<struct std::_Tree_node<struct std::pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(class SByteStream<class SCrtMemFile> &,class CConsoleResponseHeader &,class SByteStream<class SCrtMemFile> &)>,void *> * &>
|
||||
0x0600198F 0x11D204 <Module>.std.pair<unsigned short const ,void (__cdecl aahClientCommon::CHCAPPipeServer::*)(SByteStream<SCrtMemFile> &,CConsoleResponseHeader &,SByteStream<SCrtMemFile> &)>.{ctor}<class std::tuple<unsigned short const &>,class std::tuple<>,0>
|
||||
0x06001A68 0x12683C <Module>.SCrtMemFile.{ctor}
|
||||
0x06001B0B 0x126DC4 <Module>.operator<<<class SCrtMemFile,unsigned __int64>
|
||||
0x06001B11 0x12A2D4 <Module>.aahClientCommon.CSrvEventRetrievalConnection.StartQuery<class SByteStream<class SReadBufferMemFile>,class SByteStream<class SCrtMemFile> >
|
||||
0x06001B12 0x12A54C <Module>.aahClientCommon.CSrvEventRetrievalConnection.GetNextQueryResultBuffer<class SByteStream<class SCrtMemFile> >
|
||||
0x06001B5D 0x1266AC <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06001CE1 0x130CB4 <Module>.startstream<class SCrtMemFile>
|
||||
0x06001CEA 0x132D50 <Module>.operator<<<class SCrtMemFile,struct TIMERANGE>
|
||||
0x06001CF7 0x133D08 <Module>.operator<<<class SCrtMemFile,class std::vector<enum CTagCreationStatus::value,class std::allocator<enum CTagCreationStatus::value> > >
|
||||
0x06001CF8 0x133D20 <Module>.operator<<<class SCrtMemFile,class std::vector<unsigned __int64,class std::allocator<unsigned __int64> > >
|
||||
0x06001CF9 0x132D78 <Module>.operator<<<class SCrtMemFile,class std::vector<unsigned long,class std::allocator<unsigned long> > >
|
||||
0x06001CFB 0x133D38 <Module>.Save<class CTagCreationStatus,class SByteStream<class SCrtMemFile> >
|
||||
0x06001D66 0x132FA0 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06001D6B 0x1322A0 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06001D72 0x1383A4 <Module>.operator>><class SCrtMemFile,class std::vector<unsigned __int64,class std::allocator<unsigned __int64> > >
|
||||
0x06001D74 0x131268 <Module>.TIMERANGE.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06001D79 0x133088 <Module>.Save<enum CTagCreationStatus::value,class SByteStream<class SCrtMemFile> >
|
||||
0x06001D7A 0x1330D8 <Module>.Save<unsigned __int64,class SByteStream<class SCrtMemFile> >
|
||||
0x06001D7B 0x1322C4 <Module>.Save<unsigned long,class SByteStream<class SCrtMemFile> >
|
||||
0x06001DD1 0x132508 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06001DD3 0x132524 <Module>.CTagCreationStatus.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06001DDD 0x135D78 <Module>.Load<unsigned __int64,class SByteStream<class SCrtMemFile> >
|
||||
0x06001E0B 0x1303B8 <Module>.operator<<<class SCrtMemFile,class SError>
|
||||
0x06001E11 0x130434 <Module>.LoadVectorItem<unsigned __int64,class SByteStream<class SCrtMemFile> >
|
||||
0x06002092 0x14B88C <Module>.SByteStream<SCrtMemFile>.SkipBytes
|
||||
0x06002128 0x14E0E4 <Module>.operator<<<class SCrtMemFile,unsigned short>
|
||||
0x06002129 0x15E9FC <Module>.Load<class CSnapshotInfo,class SByteStream<class SCrtMemFile> >
|
||||
0x0600212E 0x14FF00 <Module>.operator<<<class SCrtMemFile,bool>
|
||||
0x06002139 0x14FF54 <Module>.operator<<<class SCrtMemFile,class std::vector<class SError,class std::allocator<class SError> > >
|
||||
0x060021DC 0x1573DC <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060021DF 0x14E8BC <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060021E1 0x14E8E0 <Module>.operator<<<class SCrtMemFile,class std::vector<struct std::pair<struct _GUID,struct _GUID>,class std::allocator<struct std::pair<struct _GUID,struct _GUID> > > >
|
||||
0x060021E2 0x15EFFC <Module>.operator>><class SCrtMemFile,class std::vector<enum CTagCreationStatus::value,class std::allocator<enum CTagCreationStatus::value> > >
|
||||
0x060021E3 0x1724B0 <Module>.operator>><class SCrtMemFile,class std::vector<class CHistoryBlockInfo,class std::allocator<class CHistoryBlockInfo> > >
|
||||
0x060021E4 0x1502B0 <Module>.LoadVectorItem<class CSnapshotInfo,class SByteStream<class SCrtMemFile> >
|
||||
0x060021E5 0x16935C <Module>.operator>><class SCrtMemFile,class CSnapshotJobStatus>
|
||||
0x060021EC 0x14E9FC <Module>.Save<class SError,class SByteStream<class SCrtMemFile> >
|
||||
0x0600223B 0x14D448 <Module>.SByteStream<SCrtMemFile>.Save
|
||||
0x06002265 0x14EBC8 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06002266 0x16459C <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06002267 0x15063C <Module>.CSnapshotInfo.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06002269 0x14D4E0 <Module>.Save<struct std::pair<struct _GUID,struct _GUID>,class SByteStream<class SCrtMemFile> >
|
||||
0x0600226A 0x157528 <Module>.Load<enum CTagCreationStatus::value,class SByteStream<class SCrtMemFile> >
|
||||
0x0600226B 0x16FECC <Module>.Load<class CHistoryBlockInfo,class SByteStream<class SCrtMemFile> >
|
||||
0x060022B8 0x14C83C <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060022BA 0x14D6FC <Module>.CSnapshotInfo.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x060022BB 0x15F150 <Module>.CSnapshotJobStatus.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x060022BC 0x14EEC4 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060022BD 0x14B13C <Module>.SByteStream<SCrtMemFile>.Load<unsigned long>
|
||||
0x060022BE 0x14C864 <Module>.LoadVectorItem<enum CTagCreationStatus::value,class SByteStream<class SCrtMemFile> >
|
||||
0x060022BF 0x1575B4 <Module>.LoadVectorItem<class CHistoryBlockInfo,class SByteStream<class SCrtMemFile> >
|
||||
0x060022D7 0x150A3C <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x060022D8 0x14B278 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x060022D9 0x14C914 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x060022DB 0x14C938 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x060022DC 0x14B294 <Module>.SByteStream<SCrtMemFile>.Load<struct _GUID>
|
||||
0x060022DD 0x14B2B0 <Module>.SByteStream<SCrtMemFile>.Load<unsigned __int64>
|
||||
0x060022DE 0x14D800 <Module>.SOriginalFileNumber.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060022E8 0x14F1B0 <Module>.CHistoryBlockInfo.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x060022E9 0x14B328 <Module>.TIMERANGE.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x060022EB 0x14B34C <Module>.SOriginalFileNumber.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x060023B5 0x186BD8 <Module>.operator<<<class SCrtMemFile,class CTagMetadata>
|
||||
0x060023CD 0x1842A4 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060023CE 0x18944C <Module>.operator<<<class SCrtMemFile,class std::vector<class CTagExtendedPropertyGroup,class std::allocator<class CTagExtendedPropertyGroup> > >
|
||||
0x060023CF 0x189464 <Module>.operator>><class SCrtMemFile,class std::vector<class CTagExtendedPropertyGroup,class std::allocator<class CTagExtendedPropertyGroup> > >
|
||||
0x060023D0 0x183394 <Module>.operator<<<class SCrtMemFile,class std::vector<struct std::pair<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > >,class std::allocator<struct std::pair<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > > > > >
|
||||
0x060023D4 0x183460 <Module>.operator<<<class SCrtMemFile,class std::vector<struct std::pair<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,struct _GUID>,class std::allocator<struct std::pair<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,struct _GUID> > > >
|
||||
0x060023D5 0x183478 <Module>.operator>><class SCrtMemFile,class std::vector<struct std::pair<struct _GUID,struct _GUID>,class std::allocator<struct std::pair<struct _GUID,struct _GUID> > > >
|
||||
0x060023DB 0x1892C0 <Module>.Save<class CTagExtendedPropertyGroup,class SByteStream<class SCrtMemFile> >
|
||||
0x060023DC 0x189324 <Module>.Load<class CTagExtendedPropertyGroup,class SByteStream<class SCrtMemFile> >
|
||||
0x060023DD 0x1831C8 <Module>.Save<struct std::pair<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > >,class SByteStream<class SCrtMemFile> >
|
||||
0x060023DF 0x18321C <Module>.Save<struct std::pair<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,struct _GUID>,class SByteStream<class SCrtMemFile> >
|
||||
0x060023E0 0x183274 <Module>.Load<struct std::pair<struct _GUID,struct _GUID>,class SByteStream<class SCrtMemFile> >
|
||||
0x060023FB 0x188DB4 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060023FC 0x1830F0 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060023FD 0x1832D8 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x060023FE 0x188DE4 <Module>.LoadVectorItem<class CTagExtendedPropertyGroup,class SByteStream<class SCrtMemFile> >
|
||||
0x060023FF 0x183114 <Module>.Save<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class SByteStream<class SCrtMemFile> >
|
||||
0x06002400 0x183134 <Module>.LoadVectorItem<struct std::pair<struct _GUID,struct _GUID>,class SByteStream<class SCrtMemFile> >
|
||||
0x06002404 0x188D70 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06002405 0x18301C <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06002406 0x188D84 <Module>.CTagExtendedPropertyGroup.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06002407 0x18315C <Module>.CRetVariant.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06002408 0x188D14 <Module>.CTagExtendedPropertyGroup.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06002409 0x188D58 <Module>.operator<<<class SCrtMemFile,class std::vector<class CTagExtendedProperty,class std::allocator<class CTagExtendedProperty> > >
|
||||
0x0600240A 0x183044 <Module>.CDataChunk.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x0600240B 0x187AE0 <Module>.operator>><class SCrtMemFile,class std::vector<class CTagExtendedProperty,class std::allocator<class CTagExtendedProperty> > >
|
||||
0x0600240C 0x187AF8 <Module>.Save<class CTagExtendedProperty,class SByteStream<class SCrtMemFile> >
|
||||
0x06002414 0x186BF0 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06002415 0x186C04 <Module>.Load<class CTagExtendedProperty,class SByteStream<class SCrtMemFile> >
|
||||
0x06002417 0x1843B4 <Module>.CTagExtendedProperty.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06002418 0x1843F4 <Module>.LoadVectorItem<class CTagExtendedProperty,class SByteStream<class SCrtMemFile> >
|
||||
0x06002419 0x183490 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x0600241A 0x1834A4 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x0600241B 0x1832EC <Module>.CRetVariant.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x0600241C 0x18331C <Module>.CTagExtendedProperty.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x0600241D 0x183188 <Module>.CDataChunk.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060024DD 0x18C374 <Module>.operator>><class SCrtMemFile,bool>
|
||||
0x060024E1 0x191FF8 <Module>.aahClientCommon.CSrvRetrievalConnection.StartQuery<class SByteStream<class SReadBufferMemFile>,class SByteStream<class SCrtMemFile> >
|
||||
0x060024E2 0x191304 <Module>.aahClientCommon.CSrvRetrievalConnection.GetNextQueryResultBuffer<class SByteStream<class SCrtMemFile> >
|
||||
0x06002526 0x18BFB8 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06002527 0x190B94 <Module>.CRetrievalConsoleClient.StartQuery<class SByteStream<class SReadBufferMemFile>,class SByteStream<class SCrtMemFile> >
|
||||
0x06002528 0x190E60 <Module>.CRetrievalConsoleClient.GetNextQueryResultBuffer<class SByteStream<class SCrtMemFile> >
|
||||
0x06002542 0x18B190 <Module>.SByteStream<SCrtMemFile>.Load
|
||||
0x0600277A 0x1A4BB8 <Module>.operator<<<class SCrtMemFile,class CTagExtendedPropertyGroup>
|
||||
0x0600277B 0x19FA6C <Module>.operator<<<class SCrtMemFile,class CHistoryBlockInfo>
|
||||
0x060027FF 0x19F388 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06002860 0x19E9A4 <Module>.CHistoryBlockInfo.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06002A20 0x202098 <Module>.SaveAsShortString<class SByteStream<class SCrtMemFile> >
|
||||
0x06002A22 0x2020EC <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06002A23 0x2080B0 <Module>.operator>><class SCrtMemFile,class std::vector<class CRetVariant,class std::allocator<class CRetVariant> > >
|
||||
0x06002A3D 0x204178 <Module>.operator<<<class SCrtMemFile,class SComHistorianError>
|
||||
0x06002A3E 0x207FF4 <Module>.Load<class CRetVariant,class SByteStream<class SCrtMemFile> >
|
||||
0x06002A5A 0x2025B8 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06002A5B 0x2041F8 <Module>.LoadVectorItem<class CRetVariant,class SByteStream<class SCrtMemFile> >
|
||||
0x06002A69 0x20224C <Module>.SByteStream<SCrtMemFile>.Save
|
||||
0x06002A6A 0x202268 <Module>.SComHistorianError.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060031B7 0x25D494 <Module>.operator>><class SCrtMemFile,class CMetadataNamespace>
|
||||
0x060031BF 0x277630 <Module>.operator>><class SCrtMemFile,class std::vector<class SShardEndpoint,class std::allocator<class SShardEndpoint> > >
|
||||
0x060031D2 0x2616D8 <Module>.DataQueryRequest.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x060031E5 0x273F9C <Module>.operator>><class SCrtMemFile,class std::vector<class CTagMetadata,class std::allocator<class CTagMetadata> > >
|
||||
0x060032DB 0x242D7C <Module>.SByteStream<SCrtMemFile>.Load
|
||||
0x060032DC 0x242D94 <Module>.SByteStream<SCrtMemFile>.Load
|
||||
0x06003340 0x256C0C <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06003348 0x274FF4 <Module>.Load<class SShardEndpoint,class SByteStream<class SCrtMemFile> >
|
||||
0x06003352 0x242E98 <Module>.CQTIFlags.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06003353 0x242EB0 <Module>.CValueSelector.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06003354 0x242ECC <Module>.CStateCalcSelector.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06003355 0x24C84C <Module>.QueryColumnSelector.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06003356 0x24FFC4 <Module>.CMetadataNamespace.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06003357 0x25D808 <Module>.SRedundantEndpoint.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06003358 0x24C870 <Module>.AutoSummaryParameters.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06003370 0x26FAA8 <Module>.Load<class CTagMetadata,class SByteStream<class SCrtMemFile> >
|
||||
0x06003458 0x26C190 <Module>.LoadVectorItem<class SShardEndpoint,class SByteStream<class SCrtMemFile> >
|
||||
0x0600345E 0x24CA6C <Module>.LoadScrambled<class SByteStream<class SCrtMemFile> >
|
||||
0x0600345F 0x24CAE8 <Module>.SEndpoint.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x0600346D 0x26D264 <Module>.LoadVectorItem<class CTagMetadata,class SByteStream<class SCrtMemFile> >
|
||||
0x060034F6 0x26C1A4 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x060034F7 0x261D40 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x0600352A 0x261D54 <Module>.CTagMetadata.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x0600352B 0x25DB58 <Module>.SShardEndpoint.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06003534 0x24CC6C <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06003535 0x24CEF8 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06003536 0x24318C <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06003537 0x213484 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06003538 0x256CE4 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06003539 0x24CF1C <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x0600353B 0x2431A8 <Module>.CTagMetadata.LoadCommonFlags<class SByteStream<class SCrtMemFile> >
|
||||
0x0600353C 0x24D0C8 <Module>.CTagMetadataBase.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06003F18 0x2DB4B8 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06003F3B 0x2DB2D4 <Module>.SError.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06003F4E 0x2DB04C <Module>.SErrorDetail.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06004065 0x2ED79C <Module>.SByteStream<SCrtMemFile>.Load
|
||||
0x06004069 0x2ED7B4 <Module>.operator>><class SCrtMemFile,unsigned char>
|
||||
0x0600406A 0x303BA0 <Module>.operator<<<class SCrtMemFile,class std::vector<class CTimeDataChunk,class std::allocator<class CTimeDataChunk> > >
|
||||
0x0600407E 0x2EE7B0 <Module>.operator<<<class SCrtMemFile,struct std::pair<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > > >
|
||||
0x06004091 0x2EACE4 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06004092 0x2F2E30 <Module>.Save<class CTimeDataChunk,class SByteStream<class SCrtMemFile> >
|
||||
0x0600409F 0x2EFD88 <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060040A4 0x2EE7D0 <Module>.CTimeDataChunk.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06004499 0x326E90 <Module>.operator>><class SCrtMemFile,class std::vector<unsigned long,class std::allocator<unsigned long> > >
|
||||
0x0600449F 0x33E0F8 <Module>.operator>><class SCrtMemFile,class std::vector<class SError,class std::allocator<class SError> > >
|
||||
0x06004656 0x325B44 <Module>.Load<unsigned long,class SByteStream<class SCrtMemFile> >
|
||||
0x0600465B 0x338568 <Module>.Load<class SError,class SByteStream<class SCrtMemFile> >
|
||||
0x06004764 0x323C68 <Module>.LoadVectorItem<unsigned long,class SByteStream<class SCrtMemFile> >
|
||||
0x0600476A 0x32A6A0 <Module>.LoadVectorItem<class SError,class SByteStream<class SCrtMemFile> >
|
||||
0x06004968 0x35F2B4 <Module>.operator<<<class SCrtMemFile,class std::vector<class CTagMetadata,class std::allocator<class CTagMetadata> > >
|
||||
0x0600496A 0x35E1EC <Module>.Save<class CTagMetadata,class SByteStream<class SCrtMemFile> >
|
||||
0x06004A36 0x37C85C <Module>.operator<<<class SCrtMemFile,struct std::pair<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,struct _GUID> >
|
||||
0x06004C9D 0x3A5524 <Module>.operator>><class SCrtMemFile,class std::vector<class CStoreVtq,class std::allocator<class CStoreVtq> > >
|
||||
0x06004C9E 0x39FF08 <Module>.operator<<<class SCrtMemFile,class CModType>
|
||||
0x06004CB4 0x39D6DC <Module>.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06004CB5 0x3A3190 <Module>.Load<class CStoreVtq,class SByteStream<class SCrtMemFile> >
|
||||
0x06004CBF 0x39D5F8 <Module>.CModType.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06004CC0 0x39FF24 <Module>.LoadVectorItem<class CStoreVtq,class SByteStream<class SCrtMemFile> >
|
||||
0x06004CCC 0x39D6F8 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06004CD0 0x39D614 <Module>.CStoreVtq.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06004CD1 0x39CAA8 <Module>.CTimeDataChunk.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06004CD2 0x39ADB0 <Module>.CModType.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06004CD3 0x39ADC8 <Module>.CModFlags.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06004E5A 0x3B7FF0 <Module>.SByteStream<SCrtMemFile>.IsEndOfStream
|
||||
0x06004F16 0x3DBD9C <Module>.operator<<<class SCrtMemFile,struct std::pair<struct _GUID,struct _GUID> >
|
||||
0x0600575E 0x41D48C <Module>.EventQueryRequest.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06005760 0x41C73C <Module>.DataQueryRequest.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06005761 0x41B850 <Module>.DataQueryResponse.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06005762 0x41B9D8 <Module>.BlockQueryRequest.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06005763 0x41B3C0 <Module>.DataQueryResultBuffer.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06005764 0x41B358 <Module>.BlockQueryResultBuffer.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06005765 0x41B3E0 <Module>.EventQueryResultBuffer.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06005772 0x41B408 <Module>.SByteStream<SCrtMemFile>.Save
|
||||
0x06005777 0x41D38C <Module>.EventQueryFilters.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06005778 0x41BA28 <Module>.EventQueryFilters.SaveSelect<class SByteStream<class SCrtMemFile> >
|
||||
0x06005779 0x41B420 <Module>.CQTIFlags.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x0600577A 0x41B43C <Module>.CValueSelector.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x0600577B 0x41B45C <Module>.CStateCalcSelector.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x0600577C 0x41B8D8 <Module>.QueryColumnSelector.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x0600577D 0x41C4C4 <Module>.SRedundantEndpoint.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x0600577E 0x41BA74 <Module>.SRedundantEndpoint.Save<class SByteStream<class SCrtMemFile> >.<lambda_43956a982af5dd1e02c4afd37dfc6933>.()
|
||||
0x0600577F 0x41A578 <Module>.SRedundantEndpoint.Save<class SByteStream<class SCrtMemFile> >.<lambda_43956a982af5dd1e02c4afd37dfc6933>.{ctor}
|
||||
0x06005780 0x41B8FC <Module>.AutoSummaryParameters.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06005781 0x41B378 <Module>.DataQueryResultBuffer.ReadHeader<class SByteStream<class SCrtMemFile> >
|
||||
0x06005782 0x41B128 <Module>.BlockQueryResultBuffer.Header.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06005783 0x41B398 <Module>.EventQueryResultBuffer.ReadHeader<class SByteStream<class SCrtMemFile> >
|
||||
0x06005788 0x41CF84 <Module>.EventQueryFilter.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06005789 0x41B478 <Module>.QueryContinuationIndex.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x0600578A 0x41B99C <Module>.SEndpoint.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x0600578C 0x41B154 <Module>.DataQueryResultBuffer.Header.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x0600578D 0x41B188 <Module>.EventQueryResultBuffer.Header.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06005797 0x41C554 <Module>.EventQueryCondition.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x060057A7 0x41BADC <Module>.QueryConditionValue.Save<class SByteStream<class SCrtMemFile> >
|
||||
0x06005889 0x42F6F8 <Module>.DataQueryResultBuffer.GetNextRow<class SByteStream<class SCrtMemFile> >
|
||||
0x060058AC 0x42C0E4 <Module>.DataQueryResultRow.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x060058B5 0x42817C <Module>.SByteStream<SCrtMemFile>.Load
|
||||
0x060058B8 0x42BCE8 <Module>.DataQueryResultRow.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x060058B9 0x42B590 <Module>.Load<class CSliceByStateInfo,class SByteStream<class SCrtMemFile> >
|
||||
0x060058C8 0x42A6F8 <Module>.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x060058DB 0x429AD0 <Module>.CSliceByStateInfo.Load<class SByteStream<class SCrtMemFile> >
|
||||
0x06005964 0x430A3C <Module>.EventQueryResultBuffer.GetNextRow<class SByteStream<class SCrtMemFile> >
|
||||
0x06005979 0x430874 <Module>.EventQueryResultRow.Load<class SByteStream<class SCrtMemFile> >
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"Operation":"NativeTraceHarness.IntegratedRead","Scenario":"event","ServerName":"10.100.0.35","DirectConnection":false,"ProxyServer":null,"TagName":"OtOpcUaParityTest_001.Counter","LookbackMinutes":1440,"RetrievalMode":"Full","ResolutionTicks":0,"StartUtc":"2024-01-01T00:00:00.0000000Z","EndUtc":"2024-01-01T00:01:00.0000000Z","OpenSuccess":true,"OpenErrorType":"NoError","OpenErrorCode":"Success","OpenErrorDescription":"No error type set","ConnectedToServer":false,"Pending":false,"ErrorOccurred":false,"StartQuerySuccess":false,"StartQueryErrorType":null,"StartQueryErrorCode":null,"StartQueryErrorDescription":null,"StartQueryException":null,"MoveTerminalDescription":null,"RowCount":0,"Rows":[],"Snapshots":{"ConnectionArgs":{"field:tcpPort":33268,"field:serverName":"10.100.0.35","field:readOnly":true,"field:bandwidthLimit":0,"field:compression":false,"field:packetTimeout":1000,"field:storeForwardPath":"","field:storeForwardFreeDiskSpace":125,"field:minStoreForwardDuration":30,"field:bufferMemory":8,"field:connectionType":"Event","field:details":"","field:consoleAccess":false,"field:metadataNamespace":null,"field:directConnection":false,"field:proxyServer":"","field:futureTimeThreshold":0,"field:futureTimeThresholdSpecified":false,"property:ProxyServer":"","property:BufferMemory":8,"property:MinStoreForwardDuration":30,"property:StoreForwardFreeDiskSpace":125,"property:StoreForwardPath":"","property:PacketTimeout":1000,"property:Compression":false,"property:BandwidthLimit":0,"property:ConsoleAccess":false,"property:ReadOnly":true,"property:Details":"","property:ServerName":"10.100.0.35","property:TcpPort":33268,"property:ConnectionType":"Event","property:FutureTimeThreshold":0,"property:DirectConnection":false,"property:MetaDataNamespace":null},"AccessAfterOpen":{"field:clientHandlerArray":[0,1],"field:ptrClientArray":"\u003cunreadable:NotSupportedException\u003e","field:connectionType":"Event","field:eventTagHandle":10000000}},"TracePath":"C:\\Users\\dohertj2\\Desktop\\histsdk\\docs\\reverse-engineering\\native-wcf-message-log.svclog","TraceExists":false,"TraceBytes":0}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,110 @@
|
||||
# Native Export Findings
|
||||
|
||||
Source binaries:
|
||||
|
||||
- `current\aahClient.dll`
|
||||
- `current\aahClientCommon.dll`
|
||||
- `current\aahClientManaged.dll`
|
||||
|
||||
`dumpbin` was not available on PATH, so the PE export table was read directly.
|
||||
|
||||
## Export Counts
|
||||
|
||||
- `aahClient.dll`: 99 exports
|
||||
- `aahClientCommon.dll`: 2 exports
|
||||
- `aahClientManaged.dll`: 0 exports
|
||||
|
||||
Current DLL hashes are recorded in `capture-manifest.json`.
|
||||
|
||||
The x86 and x64 `aahClient.dll` builds both expose 99 exports. The undecorated
|
||||
`mdas_*` names are stable across architectures; decorated C++ names differ only
|
||||
by pointer/reference decoration.
|
||||
|
||||
This confirms `aahClientManaged.dll` is a managed/C++-CLI wrapper with no native
|
||||
export surface of its own. The useful native ABI is in `aahClient.dll` and
|
||||
`aahClientCommon.dll`.
|
||||
|
||||
## Relevant Query Exports
|
||||
|
||||
The exports below are the first ABI anchors for reproducing the native client
|
||||
behavior in managed C#:
|
||||
|
||||
```text
|
||||
mdas_StartDataRetrievalQuery
|
||||
mdas_GetNextDataQueryResult
|
||||
mdas_StartEventDataRetrievalQuery
|
||||
mdas_GetNextEventDataQueryResult
|
||||
mdas_StartBlockRetrievalQuery
|
||||
mdas_GetNextBlockQueryResult
|
||||
mdas_EndQuery
|
||||
mdas_GetSystemParameter
|
||||
mdas_GetRuntimeParameter
|
||||
mdas_SetConnectionParameter
|
||||
mdas_ConfigureParameter
|
||||
mdas_SetParameter
|
||||
mdas_GetSFParameter
|
||||
mdas_SetSFParameter
|
||||
```
|
||||
|
||||
`aahClient.dll` also exports decorated C++ names for newer structures:
|
||||
|
||||
```text
|
||||
?mdas_AddHistorianValue2@@YAHKPEAUHISTORIAN_VALUE2@@PEAUHISTORIAN_ERROR@@@Z
|
||||
?mdas_GetNextEventDataQueryResult@@YAHKKPEAVEventQueryResultRow@@PEAUHISTORIAN_ERROR@@@Z
|
||||
?mdas_StartEventDataRetrievalQuery@@YAHK_K0IIGGAEAVEventQueryFilters@@PEB_WPEAKPEAUHISTORIAN_ERROR@@@Z
|
||||
```
|
||||
|
||||
## Client Common Exports
|
||||
|
||||
`aahClientCommon.dll` exposes only:
|
||||
|
||||
```text
|
||||
?CreateClientCommon@@YAPEAVIClientCommon@@PEA_W@Z
|
||||
?DeleteClientCommon@@YAXPEAVIClientCommon@@@Z
|
||||
```
|
||||
|
||||
That suggests `aahClientCommon.dll` owns the higher-level client object used by
|
||||
the C++/CLI wrapper, while `aahClient.dll` exposes the procedural MDAS query ABI.
|
||||
|
||||
## Wrapper Load Evidence
|
||||
|
||||
The `mdas_*` exports remain useful ABI anchors, but they are not yet proven to
|
||||
be on the active `aahClientManaged.dll` wrapper path.
|
||||
|
||||
Two local integrated read probes are negative evidence for that path:
|
||||
|
||||
- `dumpbin /dependents current\aahClientManaged.dll` shows no dependency on
|
||||
`aahClient.dll` or `aahClientCommon.dll`. The mixed-mode wrapper imports
|
||||
system DLLs such as `WS2_32.dll`, `Secur32.dll`, `RPCRT4.dll`, `NETAPI32.dll`,
|
||||
`CRYPT32.dll`, and `mscoree.dll`.
|
||||
- `Test-AahClientManagedReadIntegrated.ps1 -DumpLoadedModules` lists only
|
||||
`aahClientManaged.dll` among the AVEVA/current DLLs during a successful
|
||||
wrapper read. It does not show `aahClient.dll` or `aahClientCommon.dll` loaded
|
||||
as separate modules.
|
||||
- `Attach-NativeTraceHarnessAahClientExportCapture.ps1` attached before
|
||||
`aahClientManaged.dll` load and attempted to hook interesting exports from
|
||||
`aahClient.dll`. The same native direct history read succeeded, but the Frida
|
||||
capture never observed `aahClient.dll` being loaded and installed no export
|
||||
hooks.
|
||||
|
||||
This does not make the exported `mdas_*` ABI irrelevant; it may still be a
|
||||
separate supported native client surface. It does mean the current C++/CLI
|
||||
wrapper evidence target remains inside `aahClientManaged.dll` or a lower system
|
||||
boundary, not `aahClient.dll` exports.
|
||||
|
||||
Follow-up system-boundary Frida passes also failed to catch the active wrapper
|
||||
transport through exported user-mode APIs. Even when a Debian relay connection
|
||||
was owned by the harness PID, hooks on exported Winsock calls, `WSAIoctl`,
|
||||
`mswsock` extension exports, and `NtDeviceIoControlFile` produced no call
|
||||
callbacks before the server-side security reset. Treat these exports as useful
|
||||
static/native SDK evidence, not as the active wrapper capture route.
|
||||
|
||||
## Next ABI Tasks
|
||||
|
||||
- Demangle the decorated exports to recover exact signatures.
|
||||
- Compare x86 and x64 export tables for drift.
|
||||
- Capture call arguments for `mdas_StartDataRetrievalQuery`,
|
||||
`mdas_GetNextDataQueryResult`, `mdas_StartEventDataRetrievalQuery`, and
|
||||
`mdas_EndQuery`.
|
||||
- Correlate the ABI calls with packet captures to map exported function calls to
|
||||
wire frames.
|
||||
@@ -0,0 +1,50 @@
|
||||
# Native Open Capture Server
|
||||
|
||||
`tools\AVEVA.Historian.WcfCaptureServer` is a reverse-engineering-only WCF
|
||||
server that hosts:
|
||||
|
||||
```text
|
||||
net.tcp://localhost:33268/Hist
|
||||
```
|
||||
|
||||
It implements the decompiled `HistoryServiceContract.IHistoryServiceContract`
|
||||
shape and logs `OpenConnection`/`Open2` argument metadata as JSON. Credential
|
||||
and opaque input buffers are not printed; the tool records lengths and SHA-256
|
||||
hashes only. This tool is not referenced by the production SDK.
|
||||
|
||||
## Current result
|
||||
|
||||
The server builds and listens successfully:
|
||||
|
||||
```powershell
|
||||
dotnet build tools\AVEVA.Historian.WcfCaptureServer\AVEVA.Historian.WcfCaptureServer.csproj
|
||||
tools\AVEVA.Historian.WcfCaptureServer\bin\Debug\net481\AVEVA.Historian.WcfCaptureServer.exe 33268
|
||||
```
|
||||
|
||||
Calling `ArchestrA.HistorianAccess.OpenConnection` with `TcpPort = 33268`
|
||||
against `localhost` returned success from the native wrapper but did not hit the
|
||||
capture server. A follow-up with `TcpPort = 1` also connected successfully to
|
||||
the real local Historian, proving the wrapper ignores `TcpPort` for the local
|
||||
machine path. Calling `127.0.0.1:33268` did not connect.
|
||||
|
||||
Current interpretation: the public wrapper detects `localhost` as a local server
|
||||
name and uses the installed local Historian endpoint rather than the requested
|
||||
test port. The local mock server cannot intercept `Open2` without redirecting
|
||||
or stopping the real local endpoint, which is outside the safe automated path.
|
||||
|
||||
## Useful follow-up
|
||||
|
||||
To use this capture server, the native wrapper must be made to treat the target
|
||||
as remote while routing traffic to this machine on the real Historian port, or
|
||||
the lower-level native client export must be called directly. The most useful
|
||||
targets are:
|
||||
|
||||
- `CHistoryConnectionWCF::OpenConnection3`
|
||||
- `CClientInfo::SerializeOpenConnectionInParams3`
|
||||
- `CClientInfo::EncryptWithClientKey`
|
||||
- `CClientInfo::GetPwdString`
|
||||
|
||||
Frida is installed on this machine and can attach to the native PowerShell
|
||||
process, but `aahClientManaged.dll` does not expose native symbols. The next
|
||||
step is address discovery for those internal functions, then Frida hooks for
|
||||
the serialized input buffer.
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"Operation":"NativeTraceHarness.IntegratedRead","Scenario":"tag","ServerName":"localhost","DirectConnection":true,"ProxyServer":null,"TagName":"OtOpcUaParityTest_001.Counter","LookbackMinutes":1440,"RetrievalMode":"Full","ResolutionTicks":0,"StartUtc":"2026-05-01T15:16:25.0729007Z","EndUtc":"2026-05-02T15:16:25.0729007Z","OpenSuccess":true,"OpenErrorType":"NoError","OpenErrorCode":"Success","OpenErrorDescription":"No error type set","ConnectedToServer":true,"Pending":false,"ErrorOccurred":false,"StartQuerySuccess":true,"StartQueryErrorType":"NoError","StartQueryErrorCode":"Success","StartQueryErrorDescription":"No error type set","StartQueryException":null,"MoveTerminalDescription":null,"RowCount":2,"Rows":[{"Kind":"TagNames","Success":false,"ErrorDescription":"Not initialized","Names":null},{"Kind":"TagInfo","Success":false,"ErrorDescription":"Not initialized","Tags":[]}],"Snapshots":{"ConnectionArgs":{"field:tcpPort":32568,"field:serverName":"localhost","field:readOnly":true,"field:bandwidthLimit":0,"field:compression":false,"field:packetTimeout":1000,"field:storeForwardPath":"","field:storeForwardFreeDiskSpace":125,"field:minStoreForwardDuration":30,"field:bufferMemory":8,"field:connectionType":"Process","field:details":"","field:consoleAccess":false,"field:metadataNamespace":null,"field:directConnection":true,"field:proxyServer":"","field:futureTimeThreshold":0,"field:futureTimeThresholdSpecified":false,"property:ProxyServer":"","property:BufferMemory":8,"property:MinStoreForwardDuration":30,"property:StoreForwardFreeDiskSpace":125,"property:StoreForwardPath":"","property:PacketTimeout":1000,"property:Compression":false,"property:BandwidthLimit":0,"property:ConsoleAccess":false,"property:ReadOnly":true,"property:Details":"","property:ServerName":"localhost","property:TcpPort":32568,"property:ConnectionType":"Process","property:FutureTimeThreshold":0,"property:DirectConnection":true,"property:MetaDataNamespace":null},"AccessAfterOpen":{"field:clientHandlerArray":[1,0],"field:ptrClientArray":"\u003cunreadable:NotSupportedException\u003e","field:connectionType":"Process","field:eventTagHandle":0},"TagQueryAfterCreate":{"field:_historianClient":"\u003cSystem.Reflection.Pointer\u003e","field:_tagQueryArgs":"\u003cArchestrA.TagQueryArgs\u003e","field:_queryHandle":0,"field:_tagCount":0,"field:queryHandle":0,"field:retrievalMode":"Cyclic","field:dataVersion":"Original","field:resolution":0,"property:TagCount":0,"property:QueryHandle":0,"property:QueryArgs":"\u003cArchestrA.TagQueryArgs\u003e"},"TagQueryArgsBeforeStart":{"field:filter":"OtOpcUaParityTest_001.Counter","field:cacheTagInfo":true,"field:retrieveTagExtendedPropertyInfo":false,"property:RetrieveTagExtendedPropertyInfo":false,"property:CacheTagInfo":true,"property:TagFilter":"OtOpcUaParityTest_001.Counter"},"TagQueryAfterStart":{"field:_historianClient":"\u003cSystem.Reflection.Pointer\u003e","field:_tagQueryArgs":"\u003cArchestrA.TagQueryArgs\u003e","field:_queryHandle":0,"field:_tagCount":0,"field:queryHandle":0,"field:retrievalMode":"Cyclic","field:dataVersion":"Original","field:resolution":0,"property:TagCount":0,"property:QueryHandle":0,"property:QueryArgs":"\u003cArchestrA.TagQueryArgs\u003e"},"TagQueryArgsAfterStart":{"field:filter":"OtOpcUaParityTest_001.Counter","field:cacheTagInfo":true,"field:retrieveTagExtendedPropertyInfo":false,"property:TagFilter":"OtOpcUaParityTest_001.Counter","property:CacheTagInfo":true,"property:RetrieveTagExtendedPropertyInfo":false}},"TracePath":"C:\\Users\\dohertj2\\Desktop\\histsdk\\docs\\reverse-engineering\\native-wcf-message-log.svclog","TraceExists":false,"TraceBytes":0}
|
||||
@@ -0,0 +1 @@
|
||||
{"Operation":"NativeTraceHarness.IntegratedRead","Scenario":"tag","ServerName":"localhost","DirectConnection":true,"ProxyServer":null,"TagName":"*","LookbackMinutes":1440,"RetrievalMode":"Full","ResolutionTicks":0,"StartUtc":"2026-05-01T15:16:50.6040918Z","EndUtc":"2026-05-02T15:16:50.6040918Z","OpenSuccess":true,"OpenErrorType":"NoError","OpenErrorCode":"Success","OpenErrorDescription":"No error type set","ConnectedToServer":true,"Pending":false,"ErrorOccurred":false,"StartQuerySuccess":true,"StartQueryErrorType":"NoError","StartQueryErrorCode":"Success","StartQueryErrorDescription":"No error type set","StartQueryException":null,"MoveTerminalDescription":null,"RowCount":2,"Rows":[{"Kind":"TagNames","Success":false,"ErrorDescription":"Not initialized","Names":null},{"Kind":"TagInfo","Success":false,"ErrorDescription":"Not initialized","Tags":[]}],"Snapshots":{"ConnectionArgs":{"field:tcpPort":32568,"field:serverName":"localhost","field:readOnly":true,"field:bandwidthLimit":0,"field:compression":false,"field:packetTimeout":1000,"field:storeForwardPath":"","field:storeForwardFreeDiskSpace":125,"field:minStoreForwardDuration":30,"field:bufferMemory":8,"field:connectionType":"Process","field:details":"","field:consoleAccess":false,"field:metadataNamespace":null,"field:directConnection":true,"field:proxyServer":"","field:futureTimeThreshold":0,"field:futureTimeThresholdSpecified":false,"property:ProxyServer":"","property:BufferMemory":8,"property:MinStoreForwardDuration":30,"property:StoreForwardFreeDiskSpace":125,"property:StoreForwardPath":"","property:PacketTimeout":1000,"property:Compression":false,"property:BandwidthLimit":0,"property:ConsoleAccess":false,"property:ReadOnly":true,"property:Details":"","property:ServerName":"localhost","property:TcpPort":32568,"property:ConnectionType":"Process","property:FutureTimeThreshold":0,"property:DirectConnection":true,"property:MetaDataNamespace":null},"AccessAfterOpen":{"field:clientHandlerArray":[1,0],"field:ptrClientArray":"\u003cunreadable:NotSupportedException\u003e","field:connectionType":"Process","field:eventTagHandle":0},"TagQueryAfterCreate":{"field:_historianClient":"\u003cSystem.Reflection.Pointer\u003e","field:_tagQueryArgs":"\u003cArchestrA.TagQueryArgs\u003e","field:_queryHandle":0,"field:_tagCount":0,"field:queryHandle":0,"field:retrievalMode":"Cyclic","field:dataVersion":"Original","field:resolution":0,"property:TagCount":0,"property:QueryHandle":0,"property:QueryArgs":"\u003cArchestrA.TagQueryArgs\u003e"},"TagQueryArgsBeforeStart":{"field:filter":"*","field:cacheTagInfo":true,"field:retrieveTagExtendedPropertyInfo":false,"property:RetrieveTagExtendedPropertyInfo":false,"property:CacheTagInfo":true,"property:TagFilter":"*"},"TagQueryAfterStart":{"field:_historianClient":"\u003cSystem.Reflection.Pointer\u003e","field:_tagQueryArgs":"\u003cArchestrA.TagQueryArgs\u003e","field:_queryHandle":0,"field:_tagCount":0,"field:queryHandle":0,"field:retrievalMode":"Cyclic","field:dataVersion":"Original","field:resolution":0,"property:TagCount":0,"property:QueryHandle":0,"property:QueryArgs":"\u003cArchestrA.TagQueryArgs\u003e"},"TagQueryArgsAfterStart":{"field:filter":"*","field:cacheTagInfo":true,"field:retrieveTagExtendedPropertyInfo":false,"property:TagFilter":"*","property:CacheTagInfo":true,"property:RetrieveTagExtendedPropertyInfo":false}},"TracePath":"C:\\Users\\dohertj2\\Desktop\\histsdk\\docs\\reverse-engineering\\native-wcf-message-log.svclog","TraceExists":false,"TraceBytes":0}
|
||||
@@ -0,0 +1 @@
|
||||
{"Operation":"NativeTraceHarness.IntegratedRead","Scenario":"tag","ServerName":"localhost","DirectConnection":false,"ProxyServer":null,"TagName":"OtOpcUaParityTest_001.Counter","LookbackMinutes":1440,"RetrievalMode":"Full","ResolutionTicks":0,"StartUtc":"2026-05-01T15:16:25.1339097Z","EndUtc":"2026-05-02T15:16:25.1339097Z","OpenSuccess":true,"OpenErrorType":"NoError","OpenErrorCode":"Success","OpenErrorDescription":"No error type set","ConnectedToServer":true,"Pending":false,"ErrorOccurred":false,"StartQuerySuccess":false,"StartQueryErrorType":"CustomError","StartQueryErrorCode":"Failure","StartQueryErrorDescription":"error = 1 (Failure) \\\\.\\pipe\\aahMetadataServer\\console, component = aahClientAccessPoint::CMdServer::StartTagQuery::StartActiveTagnamesQuery, caused by = {error = 1 (Failure)}","StartQueryException":null,"MoveTerminalDescription":null,"RowCount":0,"Rows":[],"Snapshots":{"ConnectionArgs":{"field:tcpPort":32568,"field:serverName":"localhost","field:readOnly":true,"field:bandwidthLimit":0,"field:compression":false,"field:packetTimeout":1000,"field:storeForwardPath":"","field:storeForwardFreeDiskSpace":125,"field:minStoreForwardDuration":30,"field:bufferMemory":8,"field:connectionType":"Process","field:details":"","field:consoleAccess":false,"field:metadataNamespace":null,"field:directConnection":false,"field:proxyServer":"","field:futureTimeThreshold":0,"field:futureTimeThresholdSpecified":false,"property:ProxyServer":"","property:BufferMemory":8,"property:MinStoreForwardDuration":30,"property:StoreForwardFreeDiskSpace":125,"property:StoreForwardPath":"","property:PacketTimeout":1000,"property:Compression":false,"property:BandwidthLimit":0,"property:ConsoleAccess":false,"property:ReadOnly":true,"property:Details":"","property:ServerName":"localhost","property:TcpPort":32568,"property:ConnectionType":"Process","property:FutureTimeThreshold":0,"property:DirectConnection":false,"property:MetaDataNamespace":null},"AccessAfterOpen":{"field:clientHandlerArray":[1,0],"field:ptrClientArray":"\u003cunreadable:NotSupportedException\u003e","field:connectionType":"Process","field:eventTagHandle":0},"TagQueryAfterCreate":{"field:_historianClient":"\u003cSystem.Reflection.Pointer\u003e","field:_tagQueryArgs":"\u003cArchestrA.TagQueryArgs\u003e","field:_queryHandle":0,"field:_tagCount":0,"field:queryHandle":0,"field:retrievalMode":"Cyclic","field:dataVersion":"Original","field:resolution":0,"property:TagCount":0,"property:QueryHandle":0,"property:QueryArgs":"\u003cArchestrA.TagQueryArgs\u003e"},"TagQueryArgsBeforeStart":{"field:filter":"OtOpcUaParityTest_001.Counter","field:cacheTagInfo":true,"field:retrieveTagExtendedPropertyInfo":false,"property:RetrieveTagExtendedPropertyInfo":false,"property:CacheTagInfo":true,"property:TagFilter":"OtOpcUaParityTest_001.Counter"},"TagQueryAfterStart":{"field:_historianClient":"\u003cSystem.Reflection.Pointer\u003e","field:_tagQueryArgs":"\u003cArchestrA.TagQueryArgs\u003e","field:_queryHandle":0,"field:_tagCount":0,"field:queryHandle":0,"field:retrievalMode":"Cyclic","field:dataVersion":"Original","field:resolution":0,"property:TagCount":0,"property:QueryHandle":0,"property:QueryArgs":"\u003cArchestrA.TagQueryArgs\u003e"},"TagQueryArgsAfterStart":{"field:filter":"OtOpcUaParityTest_001.Counter","field:cacheTagInfo":true,"field:retrieveTagExtendedPropertyInfo":false,"property:TagFilter":"OtOpcUaParityTest_001.Counter","property:CacheTagInfo":true,"property:RetrieveTagExtendedPropertyInfo":false}},"TracePath":"C:\\Users\\dohertj2\\Desktop\\histsdk\\docs\\reverse-engineering\\native-wcf-message-log.svclog","TraceExists":false,"TraceBytes":0}
|
||||
@@ -0,0 +1 @@
|
||||
{"Operation":"NativeTraceHarness.IntegratedRead","Scenario":"tag","ServerName":"localhost","DirectConnection":false,"ProxyServer":null,"TagName":"TagName eq \u0027TestMachine_001.TestHistoryValue\u0027","LookbackMinutes":1440,"RetrievalMode":"Full","ResolutionTicks":0,"StartUtc":"2026-05-01T15:17:10.3943293Z","EndUtc":"2026-05-02T15:17:10.3943293Z","OpenSuccess":true,"OpenErrorType":"NoError","OpenErrorCode":"Success","OpenErrorDescription":"No error type set","ConnectedToServer":true,"Pending":false,"ErrorOccurred":false,"StartQuerySuccess":true,"StartQueryErrorType":"NoError","StartQueryErrorCode":"Success","StartQueryErrorDescription":"No error type set","StartQueryException":null,"MoveTerminalDescription":null,"RowCount":2,"Rows":[{"Kind":"TagNames","Success":true,"ErrorDescription":"No error type set","Names":["TestMachine_001.TestHistoryValue"]},{"Kind":"TagInfo","Success":true,"ErrorDescription":"No error type set","Tags":[]}],"Snapshots":{"ConnectionArgs":{"field:tcpPort":32568,"field:serverName":"localhost","field:readOnly":true,"field:bandwidthLimit":0,"field:compression":false,"field:packetTimeout":1000,"field:storeForwardPath":"","field:storeForwardFreeDiskSpace":125,"field:minStoreForwardDuration":30,"field:bufferMemory":8,"field:connectionType":"Process","field:details":"","field:consoleAccess":false,"field:metadataNamespace":null,"field:directConnection":false,"field:proxyServer":"","field:futureTimeThreshold":0,"field:futureTimeThresholdSpecified":false,"property:ProxyServer":"","property:BufferMemory":8,"property:MinStoreForwardDuration":30,"property:StoreForwardFreeDiskSpace":125,"property:StoreForwardPath":"","property:PacketTimeout":1000,"property:Compression":false,"property:BandwidthLimit":0,"property:ConsoleAccess":false,"property:ReadOnly":true,"property:Details":"","property:ServerName":"localhost","property:TcpPort":32568,"property:ConnectionType":"Process","property:FutureTimeThreshold":0,"property:DirectConnection":false,"property:MetaDataNamespace":null},"AccessAfterOpen":{"field:clientHandlerArray":[1,0],"field:ptrClientArray":"\u003cunreadable:NotSupportedException\u003e","field:connectionType":"Process","field:eventTagHandle":0},"TagQueryAfterCreate":{"field:_historianClient":"\u003cSystem.Reflection.Pointer\u003e","field:_tagQueryArgs":"\u003cArchestrA.TagQueryArgs\u003e","field:_queryHandle":0,"field:_tagCount":0,"field:queryHandle":0,"field:retrievalMode":"Cyclic","field:dataVersion":"Original","field:resolution":0,"property:TagCount":0,"property:QueryHandle":0,"property:QueryArgs":"\u003cArchestrA.TagQueryArgs\u003e"},"TagQueryArgsBeforeStart":{"field:filter":"TagName eq \u0027TestMachine_001.TestHistoryValue\u0027","field:cacheTagInfo":true,"field:retrieveTagExtendedPropertyInfo":false,"property:RetrieveTagExtendedPropertyInfo":false,"property:CacheTagInfo":true,"property:TagFilter":"TagName eq \u0027TestMachine_001.TestHistoryValue\u0027"},"TagQueryAfterStart":{"field:_historianClient":"\u003cSystem.Reflection.Pointer\u003e","field:_tagQueryArgs":"\u003cArchestrA.TagQueryArgs\u003e","field:_queryHandle":0,"field:_tagCount":1,"field:queryHandle":1,"field:retrievalMode":"Cyclic","field:dataVersion":"Original","field:resolution":0,"property:TagCount":1,"property:QueryHandle":1,"property:QueryArgs":"\u003cArchestrA.TagQueryArgs\u003e"},"TagQueryArgsAfterStart":{"field:filter":"TagName eq \u0027TestMachine_001.TestHistoryValue\u0027","field:cacheTagInfo":true,"field:retrieveTagExtendedPropertyInfo":false,"property:TagFilter":"TagName eq \u0027TestMachine_001.TestHistoryValue\u0027","property:CacheTagInfo":true,"property:RetrieveTagExtendedPropertyInfo":false}},"TracePath":"C:\\Users\\dohertj2\\Desktop\\histsdk\\docs\\reverse-engineering\\native-wcf-message-log.svclog","TraceExists":false,"TraceBytes":0}
|
||||
@@ -0,0 +1 @@
|
||||
{"Operation":"NativeTraceHarness.IntegratedRead","Scenario":"tag","ServerName":"localhost","DirectConnection":false,"ProxyServer":null,"TagName":"Name eq \u0027OtOpcUaParityTest_001.Counter\u0027","LookbackMinutes":1440,"RetrievalMode":"Full","ResolutionTicks":0,"StartUtc":"2026-05-01T15:17:10.3492760Z","EndUtc":"2026-05-02T15:17:10.3492760Z","OpenSuccess":true,"OpenErrorType":"NoError","OpenErrorCode":"Success","OpenErrorDescription":"No error type set","ConnectedToServer":true,"Pending":false,"ErrorOccurred":false,"StartQuerySuccess":true,"StartQueryErrorType":"NoError","StartQueryErrorCode":"Success","StartQueryErrorDescription":"No error type set","StartQueryException":null,"MoveTerminalDescription":null,"RowCount":2,"Rows":[{"Kind":"TagNames","Success":true,"ErrorDescription":"No error type set","Names":[]},{"Kind":"TagInfo","Success":true,"ErrorDescription":"No error type set","Tags":[]}],"Snapshots":{"ConnectionArgs":{"field:tcpPort":32568,"field:serverName":"localhost","field:readOnly":true,"field:bandwidthLimit":0,"field:compression":false,"field:packetTimeout":1000,"field:storeForwardPath":"","field:storeForwardFreeDiskSpace":125,"field:minStoreForwardDuration":30,"field:bufferMemory":8,"field:connectionType":"Process","field:details":"","field:consoleAccess":false,"field:metadataNamespace":null,"field:directConnection":false,"field:proxyServer":"","field:futureTimeThreshold":0,"field:futureTimeThresholdSpecified":false,"property:ProxyServer":"","property:BufferMemory":8,"property:MinStoreForwardDuration":30,"property:StoreForwardFreeDiskSpace":125,"property:StoreForwardPath":"","property:PacketTimeout":1000,"property:Compression":false,"property:BandwidthLimit":0,"property:ConsoleAccess":false,"property:ReadOnly":true,"property:Details":"","property:ServerName":"localhost","property:TcpPort":32568,"property:ConnectionType":"Process","property:FutureTimeThreshold":0,"property:DirectConnection":false,"property:MetaDataNamespace":null},"AccessAfterOpen":{"field:clientHandlerArray":[1,0],"field:ptrClientArray":"\u003cunreadable:NotSupportedException\u003e","field:connectionType":"Process","field:eventTagHandle":0},"TagQueryAfterCreate":{"field:_historianClient":"\u003cSystem.Reflection.Pointer\u003e","field:_tagQueryArgs":"\u003cArchestrA.TagQueryArgs\u003e","field:_queryHandle":0,"field:_tagCount":0,"field:queryHandle":0,"field:retrievalMode":"Cyclic","field:dataVersion":"Original","field:resolution":0,"property:TagCount":0,"property:QueryHandle":0,"property:QueryArgs":"\u003cArchestrA.TagQueryArgs\u003e"},"TagQueryArgsBeforeStart":{"field:filter":"Name eq \u0027OtOpcUaParityTest_001.Counter\u0027","field:cacheTagInfo":true,"field:retrieveTagExtendedPropertyInfo":false,"property:RetrieveTagExtendedPropertyInfo":false,"property:CacheTagInfo":true,"property:TagFilter":"Name eq \u0027OtOpcUaParityTest_001.Counter\u0027"},"TagQueryAfterStart":{"field:_historianClient":"\u003cSystem.Reflection.Pointer\u003e","field:_tagQueryArgs":"\u003cArchestrA.TagQueryArgs\u003e","field:_queryHandle":0,"field:_tagCount":0,"field:queryHandle":3,"field:retrievalMode":"Cyclic","field:dataVersion":"Original","field:resolution":0,"property:TagCount":0,"property:QueryHandle":3,"property:QueryArgs":"\u003cArchestrA.TagQueryArgs\u003e"},"TagQueryArgsAfterStart":{"field:filter":"Name eq \u0027OtOpcUaParityTest_001.Counter\u0027","field:cacheTagInfo":true,"field:retrieveTagExtendedPropertyInfo":false,"property:TagFilter":"Name eq \u0027OtOpcUaParityTest_001.Counter\u0027","property:CacheTagInfo":true,"property:RetrieveTagExtendedPropertyInfo":false}},"TracePath":"C:\\Users\\dohertj2\\Desktop\\histsdk\\docs\\reverse-engineering\\native-wcf-message-log.svclog","TraceExists":false,"TraceBytes":0}
|
||||
@@ -0,0 +1 @@
|
||||
{"Operation":"NativeTraceHarness.IntegratedRead","Scenario":"tag","ServerName":"localhost","DirectConnection":false,"ProxyServer":null,"TagName":"TagName eq \u0027OtOpcUaParityTest_001.Counter\u0027","LookbackMinutes":1440,"RetrievalMode":"Full","ResolutionTicks":0,"StartUtc":"2026-05-01T15:19:25.1350569Z","EndUtc":"2026-05-02T15:19:25.1350569Z","OpenSuccess":true,"OpenErrorType":"NoError","OpenErrorCode":"Success","OpenErrorDescription":"No error type set","ConnectedToServer":true,"Pending":false,"ErrorOccurred":false,"StartQuerySuccess":true,"StartQueryErrorType":"NoError","StartQueryErrorCode":"Success","StartQueryErrorDescription":"No error type set","StartQueryException":null,"MoveTerminalDescription":null,"RowCount":2,"Rows":[{"Kind":"TagNames","Success":true,"ErrorDescription":"No error type set","Names":["OtOpcUaParityTest_001.Counter"]},{"Kind":"TagInfo","Success":true,"ErrorDescription":"No error type set","Tags":[{"TagName":"OtOpcUaParityTest_001.Counter","TagDescription":"","EngineeringUnit":"None","TagKey":238,"TagDataType":4,"TagStorageType":3,"SourceTag":null,"SourceServer":null,"IsInActive":null}]}],"Snapshots":{"ConnectionArgs":{"field:tcpPort":32568,"field:serverName":"localhost","field:readOnly":true,"field:bandwidthLimit":0,"field:compression":false,"field:packetTimeout":1000,"field:storeForwardPath":"","field:storeForwardFreeDiskSpace":125,"field:minStoreForwardDuration":30,"field:bufferMemory":8,"field:connectionType":"Process","field:details":"","field:consoleAccess":false,"field:metadataNamespace":null,"field:directConnection":false,"field:proxyServer":"","field:futureTimeThreshold":0,"field:futureTimeThresholdSpecified":false,"property:ProxyServer":"","property:BufferMemory":8,"property:MinStoreForwardDuration":30,"property:StoreForwardFreeDiskSpace":125,"property:StoreForwardPath":"","property:PacketTimeout":1000,"property:Compression":false,"property:BandwidthLimit":0,"property:ConsoleAccess":false,"property:ReadOnly":true,"property:Details":"","property:ServerName":"localhost","property:TcpPort":32568,"property:ConnectionType":"Process","property:FutureTimeThreshold":0,"property:DirectConnection":false,"property:MetaDataNamespace":null},"AccessAfterOpen":{"field:clientHandlerArray":[1,0],"field:ptrClientArray":"\u003cunreadable:NotSupportedException\u003e","field:connectionType":"Process","field:eventTagHandle":0},"TagQueryAfterCreate":{"field:_historianClient":"\u003cSystem.Reflection.Pointer\u003e","field:_tagQueryArgs":"\u003cArchestrA.TagQueryArgs\u003e","field:_queryHandle":0,"field:_tagCount":0,"field:queryHandle":0,"field:retrievalMode":"Cyclic","field:dataVersion":"Original","field:resolution":0,"property:TagCount":0,"property:QueryHandle":0,"property:QueryArgs":"\u003cArchestrA.TagQueryArgs\u003e"},"TagQueryArgsBeforeStart":{"field:filter":"TagName eq \u0027OtOpcUaParityTest_001.Counter\u0027","field:cacheTagInfo":true,"field:retrieveTagExtendedPropertyInfo":false,"property:RetrieveTagExtendedPropertyInfo":false,"property:CacheTagInfo":true,"property:TagFilter":"TagName eq \u0027OtOpcUaParityTest_001.Counter\u0027"},"TagQueryAfterStart":{"field:_historianClient":"\u003cSystem.Reflection.Pointer\u003e","field:_tagQueryArgs":"\u003cArchestrA.TagQueryArgs\u003e","field:_queryHandle":0,"field:_tagCount":1,"field:queryHandle":6,"field:retrievalMode":"Cyclic","field:dataVersion":"Original","field:resolution":0,"property:TagCount":1,"property:QueryHandle":6,"property:QueryArgs":"\u003cArchestrA.TagQueryArgs\u003e"},"TagQueryArgsAfterStart":{"field:filter":"TagName eq \u0027OtOpcUaParityTest_001.Counter\u0027","field:cacheTagInfo":true,"field:retrieveTagExtendedPropertyInfo":false,"property:TagFilter":"TagName eq \u0027OtOpcUaParityTest_001.Counter\u0027","property:CacheTagInfo":true,"property:RetrieveTagExtendedPropertyInfo":false}},"TracePath":"C:\\Users\\dohertj2\\Desktop\\histsdk\\docs\\reverse-engineering\\native-wcf-message-log.svclog","TraceExists":false,"TraceBytes":0}
|
||||
@@ -0,0 +1 @@
|
||||
{"Operation":"NativeTraceHarness.IntegratedRead","Scenario":"tag","ServerName":"localhost","DirectConnection":false,"ProxyServer":null,"TagName":"OtOpcUaParityTest*","LookbackMinutes":1440,"RetrievalMode":"Full","ResolutionTicks":0,"StartUtc":"2026-05-01T15:16:50.6360582Z","EndUtc":"2026-05-02T15:16:50.6360582Z","OpenSuccess":true,"OpenErrorType":"NoError","OpenErrorCode":"Success","OpenErrorDescription":"No error type set","ConnectedToServer":true,"Pending":false,"ErrorOccurred":false,"StartQuerySuccess":false,"StartQueryErrorType":"CustomError","StartQueryErrorCode":"InvalidDataFilter","StartQueryErrorDescription":"error = 126 (Invalid WWFilter value) \\\\.\\pipe\\aahMetadataServer\\console, component = aahClientAccessPoint::CMdServer::StartTagQuery::StartActiveTagnamesQuery, caused by = {error = 126 (Invalid WWFilter value) bad token, component = ODataFilter}","StartQueryException":null,"MoveTerminalDescription":null,"RowCount":0,"Rows":[],"Snapshots":{"ConnectionArgs":{"field:tcpPort":32568,"field:serverName":"localhost","field:readOnly":true,"field:bandwidthLimit":0,"field:compression":false,"field:packetTimeout":1000,"field:storeForwardPath":"","field:storeForwardFreeDiskSpace":125,"field:minStoreForwardDuration":30,"field:bufferMemory":8,"field:connectionType":"Process","field:details":"","field:consoleAccess":false,"field:metadataNamespace":null,"field:directConnection":false,"field:proxyServer":"","field:futureTimeThreshold":0,"field:futureTimeThresholdSpecified":false,"property:ProxyServer":"","property:BufferMemory":8,"property:MinStoreForwardDuration":30,"property:StoreForwardFreeDiskSpace":125,"property:StoreForwardPath":"","property:PacketTimeout":1000,"property:Compression":false,"property:BandwidthLimit":0,"property:ConsoleAccess":false,"property:ReadOnly":true,"property:Details":"","property:ServerName":"localhost","property:TcpPort":32568,"property:ConnectionType":"Process","property:FutureTimeThreshold":0,"property:DirectConnection":false,"property:MetaDataNamespace":null},"AccessAfterOpen":{"field:clientHandlerArray":[1,0],"field:ptrClientArray":"\u003cunreadable:NotSupportedException\u003e","field:connectionType":"Process","field:eventTagHandle":0},"TagQueryAfterCreate":{"field:_historianClient":"\u003cSystem.Reflection.Pointer\u003e","field:_tagQueryArgs":"\u003cArchestrA.TagQueryArgs\u003e","field:_queryHandle":0,"field:_tagCount":0,"field:queryHandle":0,"field:retrievalMode":"Cyclic","field:dataVersion":"Original","field:resolution":0,"property:TagCount":0,"property:QueryHandle":0,"property:QueryArgs":"\u003cArchestrA.TagQueryArgs\u003e"},"TagQueryArgsBeforeStart":{"field:filter":"OtOpcUaParityTest*","field:cacheTagInfo":true,"field:retrieveTagExtendedPropertyInfo":false,"property:RetrieveTagExtendedPropertyInfo":false,"property:CacheTagInfo":true,"property:TagFilter":"OtOpcUaParityTest*"},"TagQueryAfterStart":{"field:_historianClient":"\u003cSystem.Reflection.Pointer\u003e","field:_tagQueryArgs":"\u003cArchestrA.TagQueryArgs\u003e","field:_queryHandle":0,"field:_tagCount":0,"field:queryHandle":0,"field:retrievalMode":"Cyclic","field:dataVersion":"Original","field:resolution":0,"property:TagCount":0,"property:QueryHandle":0,"property:QueryArgs":"\u003cArchestrA.TagQueryArgs\u003e"},"TagQueryArgsAfterStart":{"field:filter":"OtOpcUaParityTest*","field:cacheTagInfo":true,"field:retrieveTagExtendedPropertyInfo":false,"property:TagFilter":"OtOpcUaParityTest*","property:CacheTagInfo":true,"property:RetrieveTagExtendedPropertyInfo":false}},"TracePath":"C:\\Users\\dohertj2\\Desktop\\histsdk\\docs\\reverse-engineering\\native-wcf-message-log.svclog","TraceExists":false,"TraceBytes":0}
|
||||
@@ -0,0 +1 @@
|
||||
{"Operation":"NativeTraceHarness.IntegratedRead","Scenario":"tag","ServerName":"localhost","DirectConnection":false,"ProxyServer":null,"TagName":"*","LookbackMinutes":1440,"RetrievalMode":"Full","ResolutionTicks":0,"StartUtc":"2026-05-01T15:16:50.5990980Z","EndUtc":"2026-05-02T15:16:50.5990980Z","OpenSuccess":true,"OpenErrorType":"NoError","OpenErrorCode":"Success","OpenErrorDescription":"No error type set","ConnectedToServer":true,"Pending":false,"ErrorOccurred":false,"StartQuerySuccess":false,"StartQueryErrorType":"CustomError","StartQueryErrorCode":"InvalidDataFilter","StartQueryErrorDescription":"error = 126 (Invalid WWFilter value) \\\\.\\pipe\\aahMetadataServer\\console, component = aahClientAccessPoint::CMdServer::StartTagQuery::StartActiveTagnamesQuery, caused by = {error = 126 (Invalid WWFilter value) bad token, component = ODataFilter}","StartQueryException":null,"MoveTerminalDescription":null,"RowCount":0,"Rows":[],"Snapshots":{"ConnectionArgs":{"field:tcpPort":32568,"field:serverName":"localhost","field:readOnly":true,"field:bandwidthLimit":0,"field:compression":false,"field:packetTimeout":1000,"field:storeForwardPath":"","field:storeForwardFreeDiskSpace":125,"field:minStoreForwardDuration":30,"field:bufferMemory":8,"field:connectionType":"Process","field:details":"","field:consoleAccess":false,"field:metadataNamespace":null,"field:directConnection":false,"field:proxyServer":"","field:futureTimeThreshold":0,"field:futureTimeThresholdSpecified":false,"property:ProxyServer":"","property:BufferMemory":8,"property:MinStoreForwardDuration":30,"property:StoreForwardFreeDiskSpace":125,"property:StoreForwardPath":"","property:PacketTimeout":1000,"property:Compression":false,"property:BandwidthLimit":0,"property:ConsoleAccess":false,"property:ReadOnly":true,"property:Details":"","property:ServerName":"localhost","property:TcpPort":32568,"property:ConnectionType":"Process","property:FutureTimeThreshold":0,"property:DirectConnection":false,"property:MetaDataNamespace":null},"AccessAfterOpen":{"field:clientHandlerArray":[1,0],"field:ptrClientArray":"\u003cunreadable:NotSupportedException\u003e","field:connectionType":"Process","field:eventTagHandle":0},"TagQueryAfterCreate":{"field:_historianClient":"\u003cSystem.Reflection.Pointer\u003e","field:_tagQueryArgs":"\u003cArchestrA.TagQueryArgs\u003e","field:_queryHandle":0,"field:_tagCount":0,"field:queryHandle":0,"field:retrievalMode":"Cyclic","field:dataVersion":"Original","field:resolution":0,"property:TagCount":0,"property:QueryHandle":0,"property:QueryArgs":"\u003cArchestrA.TagQueryArgs\u003e"},"TagQueryArgsBeforeStart":{"field:filter":"*","field:cacheTagInfo":true,"field:retrieveTagExtendedPropertyInfo":false,"property:RetrieveTagExtendedPropertyInfo":false,"property:CacheTagInfo":true,"property:TagFilter":"*"},"TagQueryAfterStart":{"field:_historianClient":"\u003cSystem.Reflection.Pointer\u003e","field:_tagQueryArgs":"\u003cArchestrA.TagQueryArgs\u003e","field:_queryHandle":0,"field:_tagCount":0,"field:queryHandle":0,"field:retrievalMode":"Cyclic","field:dataVersion":"Original","field:resolution":0,"property:TagCount":0,"property:QueryHandle":0,"property:QueryArgs":"\u003cArchestrA.TagQueryArgs\u003e"},"TagQueryArgsAfterStart":{"field:filter":"*","field:cacheTagInfo":true,"field:retrieveTagExtendedPropertyInfo":false,"property:RetrieveTagExtendedPropertyInfo":false,"property:CacheTagInfo":true,"property:TagFilter":"*"}},"TracePath":"C:\\Users\\dohertj2\\Desktop\\histsdk\\docs\\reverse-engineering\\native-wcf-message-log.svclog","TraceExists":false,"TraceBytes":0}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"Operation":"NativeTraceHarness.IntegratedRead","Scenario":"history","ServerName":"10.100.0.35","TagName":"OtOpcUaParityTest_001.Counter","LookbackMinutes":1440,"RetrievalMode":"Full","ResolutionTicks":0,"StartUtc":"2026-04-30T12:03:31.1592830Z","EndUtc":"2026-05-01T12:03:31.1592830Z","OpenSuccess":true,"OpenErrorType":"NoError","OpenErrorCode":"Success","OpenErrorDescription":"No error type set","ConnectedToServer":false,"Pending":false,"ErrorOccurred":false,"StartQuerySuccess":false,"StartQueryErrorType":null,"StartQueryErrorCode":null,"StartQueryErrorDescription":null,"MoveTerminalDescription":null,"RowCount":0,"Rows":[],"Snapshots":{"ConnectionArgs":{"field:tcpPort":32568,"field:serverName":"10.100.0.35","field:readOnly":true,"field:bandwidthLimit":0,"field:compression":false,"field:packetTimeout":1000,"field:storeForwardPath":"","field:storeForwardFreeDiskSpace":125,"field:minStoreForwardDuration":30,"field:bufferMemory":8,"field:connectionType":"Process","field:details":"","field:consoleAccess":false,"field:metadataNamespace":null,"field:directConnection":false,"field:proxyServer":"","field:futureTimeThreshold":0,"field:futureTimeThresholdSpecified":false,"property:ProxyServer":"","property:BufferMemory":8,"property:MinStoreForwardDuration":30,"property:StoreForwardFreeDiskSpace":125,"property:StoreForwardPath":"","property:PacketTimeout":1000,"property:Compression":false,"property:BandwidthLimit":0,"property:ConsoleAccess":false,"property:ReadOnly":true,"property:Details":"","property:ServerName":"10.100.0.35","property:TcpPort":32568,"property:ConnectionType":"Process","property:FutureTimeThreshold":0,"property:DirectConnection":false,"property:MetaDataNamespace":null},"AccessAfterOpen":{"field:clientHandlerArray":[1,0],"field:ptrClientArray":"\u003cunreadable:NotSupportedException\u003e","field:connectionType":"Process","field:eventTagHandle":0}},"TracePath":"C:\\Users\\dohertj2\\Desktop\\histsdk\\docs\\reverse-engineering\\native-wcf-message-log.svclog","TraceExists":false,"TraceBytes":0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"Operation":"NativeTraceHarness.IntegratedRead","Scenario":"event","ServerName":"10.100.0.35","DirectConnection":true,"ProxyServer":null,"TagName":"OtOpcUaParityTest_001.Counter","LookbackMinutes":1440,"RetrievalMode":"Full","ResolutionTicks":0,"StartUtc":"2026-04-30T19:12:06.0486367Z","EndUtc":"2026-05-01T19:12:06.0486367Z","OpenSuccess":true,"OpenErrorType":"NoError","OpenErrorCode":"Success","OpenErrorDescription":"No error type set","ConnectedToServer":false,"Pending":false,"ErrorOccurred":false,"StartQuerySuccess":false,"StartQueryErrorType":null,"StartQueryErrorCode":null,"StartQueryErrorDescription":null,"StartQueryException":null,"MoveTerminalDescription":null,"RowCount":0,"Rows":[],"Snapshots":{"ConnectionArgs":{"field:tcpPort":32568,"field:serverName":"10.100.0.35","field:readOnly":true,"field:bandwidthLimit":0,"field:compression":false,"field:packetTimeout":1000,"field:storeForwardPath":"","field:storeForwardFreeDiskSpace":125,"field:minStoreForwardDuration":30,"field:bufferMemory":8,"field:connectionType":"Event","field:details":"","field:consoleAccess":false,"field:metadataNamespace":null,"field:directConnection":true,"field:proxyServer":"","field:futureTimeThreshold":0,"field:futureTimeThresholdSpecified":false,"property:ProxyServer":"","property:BufferMemory":8,"property:MinStoreForwardDuration":30,"property:StoreForwardFreeDiskSpace":125,"property:StoreForwardPath":"","property:PacketTimeout":1000,"property:Compression":false,"property:BandwidthLimit":0,"property:ConsoleAccess":false,"property:ReadOnly":true,"property:Details":"","property:ServerName":"10.100.0.35","property:TcpPort":32568,"property:ConnectionType":"Event","property:FutureTimeThreshold":0,"property:DirectConnection":true,"property:MetaDataNamespace":null},"AccessAfterOpen":{"field:clientHandlerArray":[0,1],"field:ptrClientArray":"\u003cunreadable:NotSupportedException\u003e","field:connectionType":"Event","field:eventTagHandle":10000000}},"TracePath":"C:\\Users\\dohertj2\\Desktop\\histsdk\\docs\\reverse-engineering\\native-wcf-message-log.svclog","TraceExists":false,"TraceBytes":0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"Operation":"NativeTraceHarness.IntegratedRead","Scenario":"event","ServerName":"10.100.0.35","DirectConnection":false,"ProxyServer":null,"TagName":"OtOpcUaParityTest_001.Counter","LookbackMinutes":1440,"RetrievalMode":"Full","ResolutionTicks":0,"StartUtc":"2026-04-30T19:11:31.9495511Z","EndUtc":"2026-05-01T19:11:31.9495511Z","OpenSuccess":true,"OpenErrorType":"NoError","OpenErrorCode":"Success","OpenErrorDescription":"No error type set","ConnectedToServer":false,"Pending":false,"ErrorOccurred":false,"StartQuerySuccess":false,"StartQueryErrorType":null,"StartQueryErrorCode":null,"StartQueryErrorDescription":null,"StartQueryException":null,"MoveTerminalDescription":null,"RowCount":0,"Rows":[],"Snapshots":{"ConnectionArgs":{"field:tcpPort":32568,"field:serverName":"10.100.0.35","field:readOnly":true,"field:bandwidthLimit":0,"field:compression":false,"field:packetTimeout":1000,"field:storeForwardPath":"","field:storeForwardFreeDiskSpace":125,"field:minStoreForwardDuration":30,"field:bufferMemory":8,"field:connectionType":"Event","field:details":"","field:consoleAccess":false,"field:metadataNamespace":null,"field:directConnection":false,"field:proxyServer":"","field:futureTimeThreshold":0,"field:futureTimeThresholdSpecified":false,"property:ProxyServer":"","property:BufferMemory":8,"property:MinStoreForwardDuration":30,"property:StoreForwardFreeDiskSpace":125,"property:StoreForwardPath":"","property:PacketTimeout":1000,"property:Compression":false,"property:BandwidthLimit":0,"property:ConsoleAccess":false,"property:ReadOnly":true,"property:Details":"","property:ServerName":"10.100.0.35","property:TcpPort":32568,"property:ConnectionType":"Event","property:FutureTimeThreshold":0,"property:DirectConnection":false,"property:MetaDataNamespace":null},"AccessAfterOpen":{"field:clientHandlerArray":[0,1],"field:ptrClientArray":"\u003cunreadable:NotSupportedException\u003e","field:connectionType":"Event","field:eventTagHandle":10000000}},"TracePath":"C:\\Users\\dohertj2\\Desktop\\histsdk\\docs\\reverse-engineering\\native-wcf-message-log.svclog","TraceExists":false,"TraceBytes":0}
|
||||
@@ -0,0 +1 @@
|
||||
{"Operation":"NativeTraceHarness.IntegratedRead","Scenario":"history","ServerName":"10.100.0.35","TagName":"OtOpcUaParityTest_001.Counter","LookbackMinutes":1440,"RetrievalMode":"Full","ResolutionTicks":0,"StartUtc":"2026-04-30T12:02:46.1860248Z","EndUtc":"2026-05-01T12:02:46.1860248Z","OpenSuccess":true,"OpenErrorType":"NoError","OpenErrorCode":"Success","OpenErrorDescription":"No error type set","ConnectedToServer":false,"Pending":false,"ErrorOccurred":false,"StartQuerySuccess":false,"StartQueryErrorType":null,"StartQueryErrorCode":null,"StartQueryErrorDescription":null,"MoveTerminalDescription":null,"RowCount":0,"Rows":[],"Snapshots":{"ConnectionArgs":{"field:tcpPort":32568,"field:serverName":"10.100.0.35","field:readOnly":true,"field:bandwidthLimit":0,"field:compression":false,"field:packetTimeout":1000,"field:storeForwardPath":"","field:storeForwardFreeDiskSpace":125,"field:minStoreForwardDuration":30,"field:bufferMemory":8,"field:connectionType":"Process","field:details":"","field:consoleAccess":false,"field:metadataNamespace":null,"field:directConnection":false,"field:proxyServer":"","field:futureTimeThreshold":0,"field:futureTimeThresholdSpecified":false,"property:ProxyServer":"","property:BufferMemory":8,"property:MinStoreForwardDuration":30,"property:StoreForwardFreeDiskSpace":125,"property:StoreForwardPath":"","property:PacketTimeout":1000,"property:Compression":false,"property:BandwidthLimit":0,"property:ConsoleAccess":false,"property:ReadOnly":true,"property:Details":"","property:ServerName":"10.100.0.35","property:TcpPort":32568,"property:ConnectionType":"Process","property:FutureTimeThreshold":0,"property:DirectConnection":false,"property:MetaDataNamespace":null},"AccessAfterOpen":{"field:clientHandlerArray":[1,0],"field:ptrClientArray":"\u003cunreadable:NotSupportedException\u003e","field:connectionType":"Process","field:eventTagHandle":0}},"TracePath":"C:\\Users\\dohertj2\\Desktop\\histsdk\\docs\\reverse-engineering\\native-wcf-message-log.svclog","TraceExists":false,"TraceBytes":0}
|
||||
@@ -0,0 +1,870 @@
|
||||
{
|
||||
"Scenario": "Local integrated full-history read",
|
||||
"Sensitivity": "Raw OpenConnection3 artifacts contain local identity and machine/process metadata. Keep raw capture under ignored artifacts only.",
|
||||
"RawArtifact": "artifacts/reverse-engineering/instrumented-openconnection3-correlation",
|
||||
"InstrumentedTokens": {
|
||||
"HistorianClient.OpenConnection": "0x060055D8",
|
||||
"aahClientCommon.CClientBase.OpenConnection": "0x0600388D",
|
||||
"CHistoryConnectionWCF.OpenConnection3": "0x06004059",
|
||||
"aahClientCommon.CClientCommon.StartQuery": "0x06002E86",
|
||||
"CRetrievalConnectionWCF.StartQuery2": "0x06004A0D"
|
||||
},
|
||||
"Observed": {
|
||||
"LegacyClientHandle": 2,
|
||||
"CClientBaseInitialHandle": 0,
|
||||
"OpenConnection3Success": 1,
|
||||
"OpenConnection3RequestLength": 1346,
|
||||
"OpenConnection3RequestSha256": "b50af3af5145c6e1293865e1a9cf1d6c5f850518f1ffcac84a19ef321280a64e",
|
||||
"OpenConnection3RequestSerializerToken": "0x06004003",
|
||||
"OpenConnection3RequestSerializer": "CClientInfo.SerializeOpenConnectionInParams4",
|
||||
"OpenConnection3RequestContentToken": "0x06004005",
|
||||
"OpenConnection3RequestContentSerializer": "CClientInfo.SerializeOpenConnectionInParams2Content",
|
||||
"OpenConnection3ContextKeySetterToken": "0x0600386E",
|
||||
"OpenConnection3ContextKeySetter": "CClientInfo.SetContextKey",
|
||||
"OpenConnection3ContextSource": {
|
||||
"LatestRawArtifact": "artifacts/reverse-engineering/instrumented-cclientinfo-context/auth-context-capture.ndjson",
|
||||
"InstrumentationToken": "0x06004003",
|
||||
"ContextFieldOffsetInCClientInfo": 1240,
|
||||
"SelectorFieldOffsetInCClientInfo": 1608,
|
||||
"RequestPrefixMatchesContextField": true,
|
||||
"RequestSelectorMatchesSelectorField": true,
|
||||
"ConfigureOpenConnectionToken": "0x0600388C",
|
||||
"AuthenticateClientToken": "0x06005DCB",
|
||||
"ClientContextOffsetInCClientBase": 2112,
|
||||
"ClientContextKeyOffset": 64,
|
||||
"ContextKeyOffsetInCClientBase": 2176,
|
||||
"CopiedContextOffsetInCClientBase": 1480,
|
||||
"RuntimeCorrelation": {
|
||||
"BeforeAuthEqualsClientKey": true,
|
||||
"AfterAuthDiffersFromBeforeAuth": true,
|
||||
"AfterAuthEqualsCopiedContextField": true,
|
||||
"CopiedContextEqualsSerializedContextField": true,
|
||||
"SerializedContextEqualsRequestPrefix": true,
|
||||
"LatestBeforeAuthAndSerializedClientKeyAreAllZero": true,
|
||||
"RequestVersionByte": 6,
|
||||
"RequestSelectorByte": 0
|
||||
},
|
||||
"NegativeAuthProbeEvidence": {
|
||||
"DirectManagedWcfProbeArtifact": "artifacts/reverse-engineering/wcf-auth-context-localhost-latest.json",
|
||||
"DirectValidateClient2Success": false,
|
||||
"DirectValidateClient2NativeErrorType": 4,
|
||||
"DirectValidateClient2NativeErrorCode": 51,
|
||||
"ManagedWrapperAuthInstrumentationArtifact": "artifacts/reverse-engineering/instrumented-wcf-auth-context",
|
||||
"SuccessfulNativeReadEmittedValidateClientOrExchangeKeyRecords": false,
|
||||
"SuccessfulNativeReadValClRounds": 2,
|
||||
"SuccessfulNativeReadValClInputLengths": [
|
||||
69,
|
||||
93
|
||||
],
|
||||
"SuccessfulNativeReadSspiCaptureArtifact": "artifacts/reverse-engineering/system-boundary-sspi-token-localhost-latest.ndjson",
|
||||
"SuccessfulNativeReadSspiPackage": "Negotiate",
|
||||
"SuccessfulNativeReadSspiTarget": "NT SERVICE\\aahClientAccessPoint",
|
||||
"SuccessfulNativeReadSspiCredentialUse": 2,
|
||||
"SuccessfulNativeReadSspiInitializeStatuses": [
|
||||
"0x90312",
|
||||
"0x0"
|
||||
],
|
||||
"SuccessfulNativeReadSspiOutputTokenLengths": [
|
||||
64,
|
||||
88
|
||||
],
|
||||
"SuccessfulNativeReadSspiWrappedLengthDelta": 5,
|
||||
"NativeCClientContextWindowArtifact": "artifacts/reverse-engineering/instrumented-cclientcontext-window/capture.ndjson",
|
||||
"NativeCClientContextNestedWindowArtifact": "artifacts/reverse-engineering/instrumented-cclientcontext-window/capture-nested.ndjson",
|
||||
"NativeAuthenticateClientDisassemblyArtifact": "artifacts/reverse-engineering/cclientcontext-authenticateclient-disasm-latest.txt",
|
||||
"NativeAuthenticateClientDisassemblyRange": "VA 0x180298BA0..0x180299500",
|
||||
"NativeAuthenticateClientNativeOnly": true,
|
||||
"NativeAuthenticateClientCreatesContextKeyAtOffset": 64,
|
||||
"NativeAuthenticateClientAcquireCredentialsHandleCall": "VA 0x180298CBB via Secur32 IAT",
|
||||
"NativeAuthenticateClientLoopEntry": "VA 0x180298DE0",
|
||||
"NativeAuthenticateClientSspiHelper": "VA 0x180298F30",
|
||||
"NativeAuthenticateClientInitializeSecurityContextCall": "VA 0x1802990F6 via Secur32 IAT",
|
||||
"NativeAuthenticateClientFirstRoundRequestFlags": "0x2081C",
|
||||
"NativeAuthenticateClientSubsequentRoundRequestFlags": "0x81C",
|
||||
"NativeAuthenticateClientWritesTokenEnvelope": "round byte, UInt32 little-endian token length, token bytes",
|
||||
"NativeAuthenticateClientValidateClientCredentialVirtualCalls": [
|
||||
"VA 0x180298E63",
|
||||
"VA 0x180298E95"
|
||||
],
|
||||
"NativeAuthenticateClientLocalContextFlag50": 0,
|
||||
"NativeAuthenticateClientObservedVirtualPath": "CClientContext +0x50 is zero in the captured local read, so the normal connection-object virtual call path at VA 0x180298E95 is selected.",
|
||||
"NativeCClientContextPostAuthChangedRanges": [
|
||||
"8-13",
|
||||
"16-21",
|
||||
"24-29",
|
||||
"64-79"
|
||||
],
|
||||
"NativeCClientContextKeyOffset": 64,
|
||||
"NativeCClientContextReadablePointerOffsets": [
|
||||
8,
|
||||
16
|
||||
],
|
||||
"NativeCClientContextPointer8ContainsSecurityPackageMetadata": true,
|
||||
"NativeCClientContextPointer8ObservedPackageNames": [
|
||||
"Schannel",
|
||||
"Microsoft Kerberos V1.0",
|
||||
"TSSSP",
|
||||
"System.Core",
|
||||
"Default TLS SSP"
|
||||
],
|
||||
"NativeCClientContextPointer16NestedPointerOffsets": [
|
||||
0,
|
||||
8,
|
||||
64
|
||||
],
|
||||
"NativeCClientContextPointer16NestedTargetsHaveReadableStrings": false,
|
||||
"NativeCClientContextPointer16NestedTargetKinds": [
|
||||
"pointer-rich state block",
|
||||
"pointer-rich state block",
|
||||
"all-zero block"
|
||||
],
|
||||
"NativeCClientContextPointer16Pointer64AllZero": true,
|
||||
"NativeCClientContextPointer16AppearsHistorianPayload": false,
|
||||
"NativeCClientContextPointer16Decoded": "partial-structure-only",
|
||||
"NativeCClientContextPointer24DirectBufferReadSafe": false,
|
||||
"SuccessfulNativeReadValClOutputLengths": [
|
||||
239,
|
||||
1
|
||||
],
|
||||
"SuccessfulNativeReadValClFirstInputPrefix": "01400000004e544c4d5353500001000000b7b218e209000900370000000f000f",
|
||||
"ManagedStandaloneValClArtifacts": [
|
||||
"artifacts/reverse-engineering/wcf-auth-valcl-localhost-cert-latest.json",
|
||||
"artifacts/reverse-engineering/wcf-auth-valcl-localhost-integrated-latest.json",
|
||||
"artifacts/reverse-engineering/wcf-auth-valcl-localhost-cert-lazy-skipgetv-latest.json",
|
||||
"artifacts/reverse-engineering/wcf-auth-valcl-localhost-integrated-lazy-skipgetv-latest.json",
|
||||
"artifacts/reverse-engineering/wcf-auth-valcl-localhost-pipe-latest.json",
|
||||
"artifacts/reverse-engineering/wcf-auth-valcl-localhost-pipe-impersonated-latest.json",
|
||||
"artifacts/reverse-engineering/wcf-auth-valcl-localhost-pipe-lowerhandle-latest.json",
|
||||
"artifacts/reverse-engineering/netfx-wcf-valcl-localhost-pipe-latest.json"
|
||||
],
|
||||
"ManagedStandaloneValClFirstInputMatchesNative": true,
|
||||
"ManagedStandaloneValClNativeErrorType": 4,
|
||||
"ManagedStandaloneValClNativeErrorCode": 1,
|
||||
"NativeOperationStart2SuccessBeforeValCl": true,
|
||||
"NativeOperationStart2ErrorType": 0,
|
||||
"NativeOperationStart2ErrorCode": 0,
|
||||
"NativeOperationStart2StaticIlLocalGateOnly": true,
|
||||
"NativeOperationStart2StaticIlCallsWcfOperation": false,
|
||||
"NativeOperationStart2StaticIlCalls": [
|
||||
"CServerConnection.WaitUntilOperationPriorityAllowed",
|
||||
"CCommControl.WaitUntilBandWidthAllowed"
|
||||
],
|
||||
"NativeOperationStart2StaticIlGateFailureErrorCodes": [
|
||||
243,
|
||||
150
|
||||
],
|
||||
"NativeExistingProxyFaultedBeforeValCl": false,
|
||||
"NativeReconnectRequiredBeforeValCl": false,
|
||||
"NativeGetInterfaceVersionCaptureArtifact": "artifacts/reverse-engineering/instrumented-wcf-auth-context/auth-wcf-getinterfaceversion-valcl-capture.ndjson",
|
||||
"NativeGetInterfaceVersionObjectWindowArtifact": "artifacts/reverse-engineering/instrumented-wcf-auth-context/auth-wcf-object-window-current-capture.ndjson",
|
||||
"NativeGetInterfaceVersionObjectWindowTargetArtifact": "artifacts/reverse-engineering/instrumented-wcf-auth-context/auth-wcf-object-window-targets-current-capture.ndjson",
|
||||
"NativeGetInterfaceVersionBeforeValCl": true,
|
||||
"NativeGetInterfaceVersionFirstInitializeProxySuccess": true,
|
||||
"NativeGetInterfaceVersionFirstSetManagedPtrReadyFlag": true,
|
||||
"NativeGetInterfaceVersionObjectWindowChangedRanges": [
|
||||
"144",
|
||||
"148",
|
||||
"152-153",
|
||||
"472",
|
||||
"608-613",
|
||||
"669"
|
||||
],
|
||||
"NativeGetInterfaceVersionToValClEntryAdditionalChangedRanges": [
|
||||
"88",
|
||||
"144",
|
||||
"148",
|
||||
"152-153",
|
||||
"300",
|
||||
"472",
|
||||
"616-621"
|
||||
],
|
||||
"NativeValClParentObjectStableAcrossRounds": true,
|
||||
"NativeValClHistoryProxyTargetChangedAcrossRounds": [
|
||||
"96-101"
|
||||
],
|
||||
"NativeValClBindingTargetStableAcrossRounds": true,
|
||||
"NativeValClWindowsIdentityTargetStableAcrossRounds": true,
|
||||
"NativeInitializeProxyHistoryConnectionMode": 1,
|
||||
"NativeConfigureTcpProxyRecordsForLocalRead": false,
|
||||
"NativeConfigurePipeProxyRecordsForLocalRead": true,
|
||||
"NativeConfigurePipeProxyEndpointLength": 25,
|
||||
"NativeConfigurePipeProxyCompression": false,
|
||||
"NativeConfigurePipeProxySecurityMode": "None",
|
||||
"NativeConfigurePipeProxyUsesStaticChannelFactoryCreateChannel": true,
|
||||
"NativeConfigurePipeProxySetsOperationTimeoutFromTimeoutMinutes": true,
|
||||
"NativeIntegratedSecurityFlagOffset": 540,
|
||||
"NativeWindowsIdentityManagedPtrOffsets": [
|
||||
640,
|
||||
600,
|
||||
664
|
||||
],
|
||||
"NativeSetIntegratedSecurityCapturesCurrentWindowsIdentity": true,
|
||||
"NativeGetInterfaceVersionImpersonatesStoredWindowsIdentity": true,
|
||||
"ManagedNamedPipeValClGetVersionReturnCode": 0,
|
||||
"ManagedNamedPipeValClInterfaceVersion": 11,
|
||||
"ManagedNamedPipeValClFirstInputMatchesNative": true,
|
||||
"ManagedNamedPipeValClNativeErrorType": 4,
|
||||
"ManagedNamedPipeValClNativeErrorCode": 1,
|
||||
"ManagedNamedPipeValClRunImpersonatedStillFails": true,
|
||||
"ManagedNamedPipeValClImpersonatedChannelSetupStillFails": true,
|
||||
"ManagedNamedPipeValClImpersonatedChannelSetupArtifacts": [
|
||||
"artifacts/reverse-engineering/wcf-auth-valcl-localhost-pipe-impersonated-channel-current-latest.json",
|
||||
"artifacts/reverse-engineering/wcf-auth-valcl-localhost-pipe-impersonated-channel-and-calls-current-latest.json"
|
||||
],
|
||||
"NativeValClHandleUppercaseGuidText": true,
|
||||
"ManagedNamedPipeValClLowercaseHandleStillFails": true,
|
||||
"ManagedNamedPipeValClServerLogException": "ValidateClientCredential caught exception: System.NullReferenceException at HistoryService.ValidateClientCredential line 1593",
|
||||
"ManagedNamedPipeTransportSecurityRejectedAsBindingMismatch": true,
|
||||
"ManagedNamedPipeValClStaticChannelFactoryStillFails": true,
|
||||
"ManagedNamedPipeValClStaticChannelFactoryLazyOpenStillFails": true,
|
||||
"ManagedNamedPipeValClStaticChannelCurrentArtifact": "artifacts/reverse-engineering/wcf-auth-valcl-localhost-pipe-static-channel-current-latest.json",
|
||||
"ManagedNamedPipeValClStaticChannelLazyCurrentArtifact": "artifacts/reverse-engineering/wcf-auth-valcl-localhost-pipe-static-channel-lazy-current-latest.json",
|
||||
"StaticIlGetClientKeyHandleSource": "ToString(contextKey) argument converted to 36-character System.String before ExchangeKey",
|
||||
"StaticIlValidateClientCredentialHandleSource": "ToString(contextKey) argument converted to 36-character System.String before ValidateClientCredential",
|
||||
"ManagedNamedPipeExchangeKeySeedArtifacts": [
|
||||
"artifacts/reverse-engineering/wcf-auth-valcl-localhost-pipe-exchangekey-current-latest.json",
|
||||
"artifacts/reverse-engineering/wcf-auth-valcl-localhost-pipe-exchangekey-default-current-latest.json",
|
||||
"artifacts/reverse-engineering/wcf-auth-valcl-localhost-pipe-exchangekey-lazy-current-latest.json"
|
||||
],
|
||||
"ManagedNamedPipeExchangeKeySeedGetVersionReturnCode": 0,
|
||||
"ManagedNamedPipeExchangeKeySeedInterfaceVersion": 11,
|
||||
"ManagedNamedPipeExchangeKeySeedNativeErrorType": 4,
|
||||
"ManagedNamedPipeExchangeKeySeedNativeErrorCode": 1,
|
||||
"ManagedNamedPipeExchangeKeySeedStillFailsValCl": true,
|
||||
"NetFrameworkDirectNamedPipeValClGetVersionReturnCode": 0,
|
||||
"NetFrameworkDirectNamedPipeValClInterfaceVersion": 11,
|
||||
"NetFrameworkDirectNamedPipeValClFirstInputMatchesNative": true,
|
||||
"NetFrameworkDirectNamedPipeValClNativeErrorType": 4,
|
||||
"NetFrameworkDirectNamedPipeValClNativeErrorCode": 1,
|
||||
"NetFrameworkDirectNamedPipeValClServerLogException": "ValidateClientCredential caught exception: System.NullReferenceException at HistoryService.ValidateClientCredential line 1593",
|
||||
"ServerValidateClientCredentialIlArtifact": "artifacts/reverse-engineering/server-historyservice-validateclientcredential-il-latest.json",
|
||||
"ServerValidateIntegratedCredentialsIlArtifact": "artifacts/reverse-engineering/server-historyservice-validateintegratedcredentials-il-latest.json",
|
||||
"ServerProcessServerTokenDisassemblyArtifact": "artifacts/reverse-engineering/server-cservernode-processservertoken-disasm-latest.txt",
|
||||
"ServerProcessServerTokenHelperArtifacts": [
|
||||
"artifacts/reverse-engineering/server-helper-0050ffc0-disasm-latest.txt",
|
||||
"artifacts/reverse-engineering/server-helper-00517ab0-disasm-latest.txt",
|
||||
"artifacts/reverse-engineering/server-helper-00505ae0-disasm-latest.txt",
|
||||
"artifacts/reverse-engineering/server-helper-00505c00-disasm-latest.txt",
|
||||
"artifacts/reverse-engineering/server-helper-00505100-disasm-latest.txt",
|
||||
"artifacts/reverse-engineering/server-helper-0042f590-disasm-latest.txt"
|
||||
],
|
||||
"ServerValidateClientCredentialParsesGuidHandle": true,
|
||||
"ServerValidateClientCredentialCallsProcessServerToken": true,
|
||||
"ServerValidateClientCredentialRegistersContextAfterTerminalRound": true,
|
||||
"ServerProcessServerTokenParsesValClEnvelope": "round byte, UInt32 little-endian token length, token bytes",
|
||||
"ServerProcessServerTokenFirstRoundContextSetupHelper": "VA 0x0050FFC0",
|
||||
"ServerProcessServerTokenContextLookupHelper": "VA 0x00517AB0",
|
||||
"ServerProcessServerTokenAcquireCredentialsHelper": "VA 0x00505AE0",
|
||||
"ServerProcessServerTokenAcceptSecurityContextHelper": "VA 0x00505C00",
|
||||
"ServerContextTypeName": "aahClientAccessPoint::CServerContext",
|
||||
"ServerContextSetupLockOffset": "CServerNode +0xE80",
|
||||
"ServerContextMapOffset": "CServerNode +0xE98",
|
||||
"ServerContextSetupConstructsObject": "VA 0x00505100 constructs a 0x3c-byte CServerContext",
|
||||
"ServerContextSetupInsertHelper": "VA 0x0042F590",
|
||||
"ServerContextLookupValueOffsets": [
|
||||
"map node +0x20",
|
||||
"map node +0x24"
|
||||
],
|
||||
"ServerAcquireCredentialsPackageString": "Negotiate",
|
||||
"ServerContextAddLogString": "Adding ServerContext 0x%p",
|
||||
"ServerProcessClientTokenLogString": "aahClientAccessPoint::CServerContext::ProcessClientToken",
|
||||
"ServerAcceptSecurityContextImportAddress": "0x005A0340",
|
||||
"ServerAcceptSecurityContextProgressStatuses": [
|
||||
"0x0",
|
||||
"0x90312"
|
||||
],
|
||||
"ServerProcessServerTokenMissingContextCustomErrorCode": "0x29",
|
||||
"ServerValidateIntegratedCredentialsReadsServiceSecurityContextCurrentWindowsIdentity": true,
|
||||
"ClientHistoryConnectionInitializeIlArtifact": "artifacts/reverse-engineering/client-chistoryconnectionwcf-initialize-il-latest.json",
|
||||
"ClientHistoryConnectionInitializeProxyHistoryIlArtifact": "artifacts/reverse-engineering/client-chistoryconnectionwcf-initializeproxy-history-il-latest.json",
|
||||
"ClientHistoryConnectionInitializeSetsHistoryProxySlots": [
|
||||
608,
|
||||
616
|
||||
],
|
||||
"ClientHistoryConnectionInitializeSetsTransactionProxySlots": [
|
||||
568,
|
||||
576
|
||||
],
|
||||
"ClientHistoryInitializeProxyPipeBranchOffset": "0x0098",
|
||||
"ClientHistoryInitializeProxyTcpBranchOffset": "0x038E",
|
||||
"HistoryServiceContractHasInitializeOperation": false,
|
||||
"ServerRuntimeValClProbeScript": "scripts/frida/aahclientaccesspoint-valcl-context.js",
|
||||
"ServerRuntimeValClProbeRunner": "scripts/Capture-AahClientAccessPointValClContext.ps1",
|
||||
"ServerRuntimeValClProbeSanitizedFieldsOnly": true,
|
||||
"ServerRuntimeValClProbeCurrentSessionAttachRefused": true,
|
||||
"ServerRuntimeValClProbeElevatedSessionAttachRefused": true,
|
||||
"ServerRuntimeValClProbeElevatedSessionPrivileges": [
|
||||
"SeDebugPrivilege",
|
||||
"SeImpersonatePrivilege",
|
||||
"BUILTIN\\Administrators",
|
||||
"Mandatory Label\\High Mandatory Level"
|
||||
],
|
||||
"ServerRuntimeValClProbeTargetServiceAccount": "NT SERVICE\\aahClientAccessPoint",
|
||||
"ServerRuntimeValClProbeAttachErrorMessage": "Failed to attach: process with pid <pid> either refused to load frida-agent, or terminated during injection",
|
||||
"ServerRuntimeValClProbeMinimalAttachAlsoRefused": true,
|
||||
"ServerRuntimeValClProbePythonExceptionClass": "frida.ProcessNotRespondingError",
|
||||
"ServerRuntimeValClProbeProcessMitigationPolicyAllOff": true,
|
||||
"ServerRuntimeValClProbeProcessMitigationCategoriesChecked": [
|
||||
"Dep",
|
||||
"Aslr",
|
||||
"StrictHandle",
|
||||
"SystemCall",
|
||||
"ExtensionPoint",
|
||||
"DynamicCode",
|
||||
"Cfg",
|
||||
"BinarySignature",
|
||||
"FontDisable",
|
||||
"ImageLoad",
|
||||
"Payload",
|
||||
"ChildProcess",
|
||||
"UserShadowStack"
|
||||
],
|
||||
"ServerRuntimeValClProbeProcessAllAccessOpenSucceeds": true,
|
||||
"ServerRuntimeValClProbeCrossBitnessFridaWorksOnControlProcess": true,
|
||||
"ServerRuntimeValClProbeControlProcess": "C:\\Windows\\SysWOW64\\cmd.exe",
|
||||
"ServerRuntimeValClProbeDefenderRealTimeProtectionEnabled": false,
|
||||
"ServerRuntimeValClProbeDefenderBehaviorMonitorEnabled": false,
|
||||
"ServerRuntimeValClProbeThirdPartyAvOrEdrRegistered": false,
|
||||
"ServerRuntimeValClProbeIfeoDebuggerEntry": false,
|
||||
"ServerRuntimeValClProbeAppInitDllsEmpty": true,
|
||||
"ServerRuntimeValClProbeFridaAgentNeverAppearsInTargetModules": true,
|
||||
"ServerRuntimeValClProbeAttachVariantsTried": [
|
||||
"realm=native",
|
||||
"realm=emulated",
|
||||
"persist_timeout=30"
|
||||
],
|
||||
"ServerRuntimeValClProbeAttachVariantsAllFailedSameError": true,
|
||||
"ServerRuntimeValClProbeTargetThreadCount": 152,
|
||||
"ServerRuntimeValClProbeRevisedSuspectedCause": "Service-internal: agent injection RPC handshake times out (Frida ProcessNotRespondingError). Mitigation policy, DACL, AV/EDR, IFEO, AppInit_DLLs, and bitness are all ruled out.",
|
||||
"EtwSspiTraceProvidersUsed": [
|
||||
"{199FE037-2B82-40A9-82AC-E1D46C792B99} LsaSrv",
|
||||
"{CC85922F-DB41-11D2-9244-006008269001} Local Security Authority (LSA)",
|
||||
"{AC43300D-5FCC-4800-8E99-1BD3F85F0320} Microsoft-Windows-NTLM",
|
||||
"{C92CF544-91B3-4DC0-8E11-C580339A0BF8} NTLM Security Protocol",
|
||||
"{5BBB6C18-AA45-49B1-A15F-085F7ED0AA90} Security: NTLM Authentication"
|
||||
],
|
||||
"EtwSspiTraceLevel": "0xFF",
|
||||
"EtwSspiTraceKeywords": "0xFFFFFFFFFFFFFFFF",
|
||||
"EtwSspiTraceNativeReadEventTotal": 5610,
|
||||
"EtwSspiTraceNativeReadAahClientAccessPointEventCount": 10,
|
||||
"EtwSspiTraceNativeReadAahClientAccessPointEventIds": [30, 34, 35, 40, 84, 10, 12, 16, 17, 86],
|
||||
"EtwSspiTraceNativeReadAahClientAccessPointEventBurstMs": 47,
|
||||
"EtwSspiTraceNativeReadLsassEventCount": 4330,
|
||||
"EtwSspiTraceManagedValClEventTotal": 133,
|
||||
"EtwSspiTraceManagedValClAahClientAccessPointEventCount": 0,
|
||||
"EtwSspiTraceManagedValClLsassEventCount": 121,
|
||||
"EtwSspiTraceManagedValClProbeProcessEventIds": [10, 12, 18, 19, 21, 22, 23],
|
||||
"EtwSspiTraceConclusion": "Server-side aahClientAccessPoint never invokes any SSPI helper during the failing managed ValCl. The HistoryService.ValidateClientCredential NullReferenceException at line 1593 fires before reaching CServerNode.ProcessServerToken at IL 0x01DC.",
|
||||
"EtwSspiTraceRawArtifactsKind": "ETL files containing SSPI tokens and identity metadata, kept under artifacts/reverse-engineering/etw-sspi-{nativeread,managedvalcl}-*.etl and not committed.",
|
||||
"ValidateClientCredentialIlMethodToken": "0x06000774",
|
||||
"ValidateClientCredentialIlInstructionCount": 779,
|
||||
"ValidateClientCredentialIlAssembly": "C:\\Program Files (x86)\\Common Files\\ArchestrA\\aahClientAccessPoint.exe (mixed-mode C++/CLI)",
|
||||
"ValidateClientCredentialIlNreCandidates": [
|
||||
{
|
||||
"Offset": "0x00ED",
|
||||
"OpCode": "call",
|
||||
"Target": "<Module>::aahClientAccessPoint.CServerNode.LogHistorianMessage(this, _, CServerClient*, _, _, _, _)",
|
||||
"Risk": "If CServerClient* arg is derived from WCF context and is null on the failing binding, the call NREs before Guid.TryParse.",
|
||||
"Differentiator": "Both successful native and failing managed paths use Security.Mode=None pipe binding, so unlikely the differentiator. Confirm via PsExec SYSTEM Frida or signed Detours."
|
||||
},
|
||||
{
|
||||
"Offset": "0x017E",
|
||||
"OpCode": "ldind.i4",
|
||||
"Target": "*(value at g_ClientAccessPoint + 2328) = vtable pointer of pAllocator",
|
||||
"Risk": "NREs if g_ClientAccessPoint+2328 is null/uninitialised.",
|
||||
"Differentiator": "g_ClientAccessPoint is a process-wide singleton; same value for native and managed callers. Ruled out unless lazily initialised per-binding."
|
||||
},
|
||||
{
|
||||
"Offset": "0x0182",
|
||||
"OpCode": "ldind.i4",
|
||||
"Target": "*(vtable + 40) = allocator function pointer",
|
||||
"Risk": "NREs if the vtable+40 slot is null or vtable pointer was zero.",
|
||||
"Differentiator": "Same as 0x017E — unlikely the differentiator."
|
||||
},
|
||||
{
|
||||
"Offset": "0x01AA",
|
||||
"OpCode": "ldelema System.Byte",
|
||||
"Target": "&arg.2[0] where arg.2 is byte[] inputBuffer",
|
||||
"Risk": "NREs if WCF deserialises inputBuffer as null even though a 69-byte token was on the wire (SOAP body schema mismatch).",
|
||||
"Differentiator": "Most plausible remaining differentiator. The managed probe's WCF body schema is the testable hypothesis."
|
||||
},
|
||||
{
|
||||
"Offset": "0x01B2",
|
||||
"OpCode": "ldlen",
|
||||
"Target": "arg.2.Length",
|
||||
"Risk": "Same as 0x01AA — NREs if inputBuffer is null after WCF deserialisation.",
|
||||
"Differentiator": "Same as 0x01AA."
|
||||
}
|
||||
],
|
||||
"ValidateClientCredentialIlAllocatorOffsets": {
|
||||
"AllocatorPointerFieldOffsetInGClientAccessPoint": 2328,
|
||||
"VtableSlotForAllocatorMethodOffset": 40,
|
||||
"ServerBufferDataPointerFieldOffset": 72,
|
||||
"ServerBufferDataLengthFieldOffset": 76,
|
||||
"CServerNodeOffsetInGClientAccessPoint": 2144
|
||||
},
|
||||
"ValidateClientCredentialIlNreCustomErrorPathsAreHandled": [
|
||||
{
|
||||
"Code": 28,
|
||||
"Trigger": "Guid.TryParse on arg.1 returns false at IL 0x012F"
|
||||
},
|
||||
{
|
||||
"Code": 204,
|
||||
"Trigger": "Allocator returns null CServerBuffer* at IL 0x018A"
|
||||
}
|
||||
],
|
||||
"ValidateClientCredentialIlNextEvidenceTarget": "Compare the SOAP body element bound to inputBuffer between the .NET Framework probe and the native wrapper for /Hist-Integrated.ValCl. If schemas differ, IL 0x01AA NREs decisively. If schemas match, instrument IL 0x00ED via PsExec SYSTEM Frida or a signed Detours stub.",
|
||||
"ValidateClientCredentialSoapBodyComparisonResolved": true,
|
||||
"ValidateClientCredentialSoapBodyComparisonMethod": "WCF message logging (logEntireMessage=true, logMessagesAtTransportLevel=true) in NetFxWcfProbe.exe.config; capture under artifacts/reverse-engineering/netfx-wcf-probe-messages.svclog (gitignored, contains identity metadata).",
|
||||
"ValidateClientCredentialServerActualParameterNames": {
|
||||
"Param1": "handle",
|
||||
"Param2": "inBuff",
|
||||
"Param3": "outBuff",
|
||||
"Param4": "errorBuffer"
|
||||
},
|
||||
"ValidateClientCredentialClientPreviousParameterNames": {
|
||||
"Param1": "handle",
|
||||
"Param2": "inputBuffer",
|
||||
"Param3": "outputBuffer",
|
||||
"Param4": "errorBuffer"
|
||||
},
|
||||
"ValidateClientCredentialBugRootCause": "WCF builds the request body element name from the C# parameter name. The probe and SDK declared inputBuffer/outputBuffer; the AVEVA server expects inBuff/outBuff. Server WCF deserialiser ignores unknown <inputBuffer> element, leaving server arg.2 (inBuff) null. IL 0x01AA ldelema NREs, the C++/CLI catch handler returns native Type=4 Code=1 Failure with empty error buffer.",
|
||||
"ValidateClientCredentialFixApplied": "[MessageParameter(Name = \"inBuff\")] / Name = \"outBuff\" attributes added to NetFxWcfProbe contract and to src/AVEVA.Historian.Client/Wcf/Contracts/IHistoryServiceContract2.cs and IStorageServiceContract.cs ValidateClientCredential declarations.",
|
||||
"ValidateClientCredentialPostFixRound0": {
|
||||
"ServerSuccess": true,
|
||||
"ServerOutputLength": 239,
|
||||
"ServerOutputPrefixHex": "014e544c4d53535000020000001e001e003800000035c29ae2338a6d03cdfb9e",
|
||||
"ServerContinue": true,
|
||||
"NativeError": null,
|
||||
"MatchesDocumentedNative69To239ByteShape": true
|
||||
},
|
||||
"ValidateClientCredentialPostFixRound1": {
|
||||
"ClientStatus": "Completed",
|
||||
"WrappedOutgoingLength": 93,
|
||||
"ServerSuccess": false,
|
||||
"ErrorLength": 100,
|
||||
"NativeErrorType": 129,
|
||||
"NativeErrorCodeHex": "0x80090308",
|
||||
"NativeErrorMeaning": "SEC_E_INVALID_TOKEN",
|
||||
"ErrorBufferDecodedAsciiContains": [
|
||||
"aahClientAccessPoint::CServerContext::ProcessClientToken",
|
||||
"InitializeSecurityContext"
|
||||
]
|
||||
},
|
||||
"ValidateClientCredentialNextEvidenceTarget": "SEC_E_INVALID_TOKEN on round 1. Native traces showed InitializeSecurityContextW request flags 0x2081C first round and 0x81C later. NetFxWcfProbe SSPI wrapper uses defaults. Replicate the exact native flags and confirm the Negotiate target name matches NT SERVICE\\aahClientAccessPoint.",
|
||||
"ValidateClientCredentialSspiFlagFixApplied": true,
|
||||
"ValidateClientCredentialSspiFlagsRound0": "ISC_REQ_REPLAY_DETECT (0x4) | ISC_REQ_SEQUENCE_DETECT (0x8) | ISC_REQ_CONFIDENTIALITY (0x10) | ISC_REQ_CONNECTION (0x800) | ISC_REQ_IDENTIFY (0x20000) | ISC_REQ_ALLOCATE_MEMORY (0x100, kept for buffer convenience)",
|
||||
"ValidateClientCredentialSspiFlagsRound1Plus": "Same as Round 0 minus ISC_REQ_IDENTIFY",
|
||||
"ValidateClientCredentialSspiFlagsNativeReference": {
|
||||
"Round0": "0x2081C",
|
||||
"Round1Plus": "0x81C",
|
||||
"Source": "Existing native disassembly of CClientContext.AuthenticateClient at VA 0x180298F30"
|
||||
},
|
||||
"ValidateClientCredentialSspiFlagPostFixRound0": {
|
||||
"ServerSuccess": true,
|
||||
"ServerOutputLength": 239,
|
||||
"ServerOutputPrefixHex": "014e544c4d53535000020000001e001e003800000035c29ae20c816c094fe20f",
|
||||
"ServerContinue": true,
|
||||
"NativeError": null
|
||||
},
|
||||
"ValidateClientCredentialSspiFlagPostFixRound1": {
|
||||
"ServerSuccess": true,
|
||||
"ServerOutputLength": 1,
|
||||
"ServerOutputPrefixHex": "00",
|
||||
"ServerContinue": false,
|
||||
"NativeError": null,
|
||||
"MatchesDocumentedNativeOneByteTerminal": true
|
||||
},
|
||||
"ValidateClientCredentialBlockerResolved": true,
|
||||
"ValidateClientCredentialResolvedDate": "2026-05-04",
|
||||
"ManagedValClChainNowReproducible": [
|
||||
"Hist-Integrated.GetV → version 11",
|
||||
"Hist-Integrated.ValCl round 0 (69 → 239 bytes)",
|
||||
"Hist-Integrated.ValCl round 1 (93 → 1 byte terminal)"
|
||||
],
|
||||
"ProductionSdkSspiTodo": "src/AVEVA.Historian.Client has no SSPI client yet. When the SDK auth flow is wired up, must use the same native-equivalent flags. .NET 10 NegotiateAuthentication does not expose ISC_REQ_* directly; P/Invoke InitializeSecurityContextW to set IDENTIFY + REPLAY_DETECT + SEQUENCE_DETECT explicitly. Reference implementation in tools/AVEVA.Historian.NetFxWcfProbe/Program.cs SspiClient.",
|
||||
"EndToEndChainVerified": true,
|
||||
"EndToEndChainVerifiedDate": "2026-05-04",
|
||||
"EndToEndChainSteps": [
|
||||
{"Step": "Hist.GetV", "Result": "version 11"},
|
||||
{"Step": "Hist.ValCl round 0", "Result": "239-byte server response (NTLM type-2 challenge)"},
|
||||
{"Step": "Hist.ValCl round 1", "Result": "1-byte terminal"},
|
||||
{"Step": "Hist.Open2", "Result": "42 bytes, version 0x03, transient /Retr client handle decoded"},
|
||||
{"Step": "Retr.GetV", "Result": "version 4"},
|
||||
{"Step": "Retr.IsOriginalAllowed(handle)", "Result": "return code 0, isAllowed=true"},
|
||||
{"Step": "Retr.StartQuery2(handle, 1, 251 bytes, ...)", "Result": "Success=true, response 31 bytes, QueryHandlePresent=true, no error"}
|
||||
],
|
||||
"EndToEndStartQuery2ResponseSha256": "4c062b5ce8181308f0f46bfd8c6088acb52e6ade94401651b7d3ccc8952edfb5",
|
||||
"EndToEndStartQuery2ResponseMatchesNativeCapture": true,
|
||||
"EndToEndAdditionalSdkContractFix": {
|
||||
"File": "src/AVEVA.Historian.Client/Wcf/Contracts/IRetrievalServiceContract2.cs",
|
||||
"Operations": ["StartQuery2", "GetNextQueryResultBuffer2", "EndQuery2"],
|
||||
"ServerNamesUsed": ["pRequestBuff", "pResponseBuff", "pResultBuff", "errSize", "err"],
|
||||
"ClientPreviousNames": ["requestBuffer", "responseBuffer", "resultBuffer", "errorSize", "errorBuffer"]
|
||||
},
|
||||
"EndToEndReplayInputs": {
|
||||
"Open2RequestPath": "artifacts/reverse-engineering/openconnection3-request-replay.bin (1346 bytes; bytes 1..16 spliced with new managed context-key GUID)",
|
||||
"DataQueryRequestPath": "artifacts/reverse-engineering/startdataquery-request-replay.bin (251 bytes, OtOpcUaParityTest_001.Counter)",
|
||||
"Note": "Both inputs are gitignored under artifacts/. Probe stdout JSON only echoes lengths, SHAs, version bytes, and prefix hex; identity payloads stay in the binary inputs."
|
||||
},
|
||||
"ProductionSdkRemainingWork": "Implement managed SSPI client for ValCl rounds, then wire ValCl → Open2 (using HistorianOpen2Protocol.SerializeNativeOpenConnection3Version6) → /Retr.StartQuery2 → /Retr.GetNextQueryResultBuffer2 for the production read path. Protocol now fully understood end-to-end for the read flow; remaining work is plumbing.",
|
||||
"ProductionSdkPlumbingLanded": true,
|
||||
"ProductionSdkPlumbingLandedDate": "2026-05-04",
|
||||
"ProductionSdkPlumbingFiles": [
|
||||
"src/AVEVA.Historian.Client/AVEVA.Historian.Client.csproj (added System.ServiceModel.NetNamedPipe 10.0.652802)",
|
||||
"src/AVEVA.Historian.Client/Wcf/HistorianWcfBindingFactory.cs (added CreateMdasNetNamedPipeBinding + CreatePipeEndpointAddress, [SupportedOSPlatform(\"windows\")])",
|
||||
"src/AVEVA.Historian.Client/Wcf/HistorianSspiClient.cs (new — InitializeSecurityContextW with native flags 0x2081C / 0x81C)",
|
||||
"src/AVEVA.Historian.Client/Wcf/HistorianDataQueryProtocol.cs (added TryParseGetNextQueryResultBufferRows for raw rows + 5-byte terminal recognition)",
|
||||
"src/AVEVA.Historian.Client/Wcf/HistorianWcfReadOrchestrator.cs (new — chains GetV → ValCl×N → Open2 → Retr.IsOriginalAllowed → Retr.StartQuery2 → loop Retr.GetNextQueryResultBuffer2)",
|
||||
"src/AVEVA.Historian.Client/HistorianClientOptions.cs (added Transport, TargetSpn)",
|
||||
"src/AVEVA.Historian.Client/HistorianTransport.cs (new — LocalPipe / RemoteTcpIntegrated / RemoteTcpCertificate, only LocalPipe implemented this pass)",
|
||||
"src/AVEVA.Historian.Client/Models/HistorianSample.cs (added PercentGood)",
|
||||
"src/AVEVA.Historian.Client/Protocol/Historian2020ProtocolDialect.cs (constructor takes options; ReadRawAsync delegates to orchestrator on Windows + LocalPipe)"
|
||||
],
|
||||
"ProductionSdkUnitTestsAdded": [
|
||||
"HistorianSspiClientTests (5 flag-selection tests)",
|
||||
"WcfBindingFactoryTests (3 binding-shape tests)",
|
||||
"WcfDataQueryResultBufferTests (5 golden-byte parser tests using captured 570-byte fixture)"
|
||||
],
|
||||
"ProductionSdkLiveIntegrationTest": {
|
||||
"Class": "HistorianClientIntegrationTests",
|
||||
"Method": "ReadRawAsync_AgainstLocalHistorian_ReturnsAtLeastOneRow",
|
||||
"GatedOn": ["HISTORIAN_HOST=localhost", "HISTORIAN_TEST_TAG", "OperatingSystem.IsWindows()"],
|
||||
"ResultWithEnvSet": "Pass — 69/69 tests pass including live read against local Historian.",
|
||||
"ResultWithoutEnvSet": "Skip cleanly; 64/64 pass."
|
||||
},
|
||||
"ProductionSdkOpenConnection3Constants": {
|
||||
"ClientType": 4,
|
||||
"ConnectionMode": "0x402 (process integrated read-only)",
|
||||
"FormatVersion": 4,
|
||||
"HcalVersion": 17,
|
||||
"DataSourceId": "2020.406.2652.2",
|
||||
"ClientDllVersion": "2020.406.2652.2",
|
||||
"ClientCommonInfoClientVersion": 999999,
|
||||
"ShardId": "Guid.Empty",
|
||||
"CredentialBlockSize": 1026,
|
||||
"Open2RequestClientVersion": 9
|
||||
},
|
||||
"ProductionSdkReadPathWorking": true,
|
||||
"ProductionSdkReadPathDoesNotLoadAvevaBinaries": true,
|
||||
"ProductionSdkRemainingFollowUpWork": [
|
||||
"Aggregate row layouts (Interpolated, TimeWeightedAverage) + ReadAggregateAsync wiring",
|
||||
"ReadAtTimeAsync wiring",
|
||||
"ReadEventsAsync wiring",
|
||||
"Remote TCP transport (RemoteTcpIntegrated, RemoteTcpCertificate)",
|
||||
"Explicit username/password auth (currently integrated-only)",
|
||||
"[MessageParameter] audit on EnsT / RTag2 / ExKey / StJb / GtJb (ildasm-confirmed parameter-name mismatches with current SDK; not blocking the read path)",
|
||||
"Decode trailing 34 bytes per row (likely contains StringValue placeholder + aggregate-EndTime slot)"
|
||||
],
|
||||
"Phase2FollowUpsLanded": true,
|
||||
"Phase2FollowUpsLandedDate": "2026-05-04",
|
||||
"Phase2FollowUpsCompleted": [
|
||||
{"Item": "[MessageParameter] audit", "FilesTouched": ["IHistoryServiceContract.cs", "IHistoryServiceContract2.cs", "IRetrievalServiceContract.cs", "IRetrievalServiceContract3.cs", "IRetrievalServiceContract4.cs"], "MismatchesFixed": 30},
|
||||
{"Item": "Aggregate row parser", "Method": "HistorianDataQueryProtocol.TryParseGetNextQueryResultBufferAggregateRows", "WireLayout": "Same as raw rows; FILETIME #1 = EndTimeUtc, FILETIME at trailer offset 2 = StartTimeUtc; verified by live ReadAggregateAsync test"},
|
||||
{"Item": "ReadAggregateAsync + ReadAtTimeAsync wiring", "Notes": "QueryType mapping: Full=2, Interpolated=3, TimeWeightedAverage=5, Cyclic=4. ReadAtTime uses one-tick Interpolated window per requested timestamp."},
|
||||
{"Item": "Event flow", "Result": "StartEventQuery succeeds end-to-end; GetNextEventQueryResultBuffer returns native error type=4 code=85 (0x55) — new server response, treated as soft terminal. Likely needs RegisterTags2(CM_EVENT) prerequisite + event-row WCF wire format capture."},
|
||||
{"Item": "Remote TCP transport", "FactoryMethod": "HistorianWcfBindingFactory.CreateBindingPair", "TransportMap": {"LocalPipe": "/Hist + /Retr over net.pipe", "RemoteTcpIntegrated": "/Hist-Integrated (Windows transport security) + /Retr (plain MDAS)", "RemoteTcpCertificate": "/HistCert (cert transport) + /Retr (plain MDAS)"}, "Status": "Wired but untested on this host"},
|
||||
{"Item": "Explicit username/password auth", "Implementation": "HistorianSspiClient ctor overload builds SEC_WINNT_AUTH_IDENTITY (Unicode) and passes to AcquireCredentialsHandleW; auth chain helper parses DOMAIN\\user from HistorianClientOptions.UserName.", "Status": "Wired but untested on this host"}
|
||||
],
|
||||
"Phase2LiveTestResults": {
|
||||
"EnvVarsSet": ["HISTORIAN_HOST=localhost", "HISTORIAN_TEST_TAG=OtOpcUaParityTest_001.Counter"],
|
||||
"TotalTests": 72,
|
||||
"PassedTests": 72,
|
||||
"LiveIntegrationTests": [
|
||||
"ProbeAsync_ReturnsTrueForConfiguredHistorian",
|
||||
"BrowseTagNamesAsync_ReturnsConfiguredTestTag",
|
||||
"GetTagMetadataAsync_ReturnsConfiguredTestTagMetadata",
|
||||
"ReadRawAsync_AgainstLocalHistorian_ReturnsAtLeastOneRow",
|
||||
"ReadAggregateAsync_AgainstLocalHistorian_ReturnsTimeWeightedAverageRows",
|
||||
"ReadAtTimeAsync_AgainstLocalHistorian_ReturnsRequestedTimestamps",
|
||||
"ReadEventsAsync_AgainstLocalHistorian_DoesNotThrow"
|
||||
]
|
||||
},
|
||||
"Phase2OpenItems": [
|
||||
"Decode event-row WCF wire format (no captured fixture yet)",
|
||||
"Investigate native error type=4 code=85 (0x55) terminal from GetNextEventQueryResultBuffer (likely missing RegisterTags2 CM_EVENT prerequisite)",
|
||||
"Verify RemoteTcpIntegrated / RemoteTcpCertificate against a remote Historian",
|
||||
"Verify explicit username/password auth against a non-current user account",
|
||||
"Add RetrievalMode mappings beyond Full/Interpolated/TimeWeightedAverage/Cyclic",
|
||||
"Decode trailing ~24 bytes of each row that vary across rows (possibly per-sample StringValue, source ID, or state metadata)"
|
||||
],
|
||||
"EventFlowWcfWriteMessageCaptureBuilt20260504": {
|
||||
"ToolingAdded": "tools/AVEVA.Historian.ReverseEngineering instrument-wcf-writemessage CLI command + LogByteArraySegment helper in CaptureLogger.",
|
||||
"InstrumentationTarget": "aahMDASEncoder.ClientMessageEncoder.WriteMessage token 0x06005E65 — captures every outgoing WCF message body via ArraySegment<byte>.get_Array/get_Offset/get_Count.",
|
||||
"DnlibFix": "ArraySegment<T>::get_Array MemberRef must use GenericVar(0) for return type, not concrete byte[]. Existing get_Count MemberRef in the method body is reusable for its DeclaringType (the generic instance ArraySegment<byte> TypeSpec).",
|
||||
"CaptureArtifact": "artifacts/reverse-engineering/instrumented-wcf-writemessage/writemessage-capture-event-latest.ndjson (27 records).",
|
||||
"EventFlowDecoded": [
|
||||
{"Record": 0, "Action": "aa/Hist/GetV"},
|
||||
{"Record": "1-2", "Action": "aa/Hist/GetI"},
|
||||
{"Record": "3-4", "Action": "aa/Hist/ValCl", "Handle": "ValCl context key"},
|
||||
{"Record": 5, "Action": "aa/Hist/Open2", "Length": 1472},
|
||||
{"Record": "6-7", "Action": "unknown 105-byte calls"},
|
||||
{"Record": "8-9", "Action": "unknown 211-byte calls — establish session GUID 6D332FCD-… used by subsequent operations"},
|
||||
{"Record": 10, "Action": "aa/Hist/UpdC3", "Handle": "session GUID 6D332FCD-…"},
|
||||
{"Record": "11-16", "Action": "6 unknown setup calls (183/185/188/192-byte)"},
|
||||
{"Record": 17, "Action": "aa/Hist/RTag2", "Handle": "session GUID 6D332FCD-…"},
|
||||
{"Record": 18, "Action": "unknown 184-byte"},
|
||||
{"Record": 19, "Action": "aa/Trx/GetV"},
|
||||
{"Record": 20, "Action": "unknown 105-byte"},
|
||||
{"Record": 21, "Action": "aa/Retr/GetV"},
|
||||
{"Record": 22, "Action": "aa/Hist/EnsT2", "Handle": "session GUID 6D332FCD-…", "PayloadLength": 83, "PayloadDecoded": true},
|
||||
{"Record": 23, "Action": "aa/Retr/StartEventQuery"},
|
||||
{"Record": 24, "Action": "aa/Retr/GetNextEventQueryResultBuffer"},
|
||||
{"Record": 25, "Action": "aa/Retr/EndEventQuery"},
|
||||
{"Record": 26, "Action": "aa/Hist/Close2"}
|
||||
],
|
||||
"CtagMetadataLayoutCorrected": {
|
||||
"ActionUri": "aa/Hist/EnsT2 (NOT aa/Hist/AddT)",
|
||||
"Layout": "version(1)=0x03 + mask(2)=0x0086 + CDataType(1)=0x05 + tagId(16)=353b8145-5df0-4d46-a253-871aef49b321 + compactString(11)='CM_EVENT' + compactString(12)='AnE Event' + flags(7)=02 02 01 00 00 00 01 + uint(4)=0 + FILETIME(8) + commonEventTypeId(16)=5f59ae42-3bb6-4760-91a5-ab0be01f9f02 + tail(5)=2F 27 01 01 01",
|
||||
"TotalLength": 83,
|
||||
"PreviouslyDocumentedDifferences": [
|
||||
"Action was thought to be AddT, actually EnsT2",
|
||||
"7-byte flags ended in 0x00 (wrong), captured ends in 0x01",
|
||||
"Order was FILETIME+flags+rate+deadband+GUID (wrong), actually flags+rate+FILETIME+GUID — no time deadband uint",
|
||||
"Common event type GUID was 5f59ae42-3bb6-4760-91a5-ab0be01f2f27 (wrong), actually 5f59ae42-3bb6-4760-91a5-ab0be01f9f02",
|
||||
"Tail was 0 bytes (wrong), actually 5 bytes 2F 27 01 01 01"
|
||||
],
|
||||
"VerificationMethod": "SDK serializer reflection-invoked with captured FILETIME (0x01DCDB9447EA2578) returns 83 bytes byte-for-byte identical to captured native bytes."
|
||||
},
|
||||
"WhyEventsStillReturnEmpty": "EnsT2 needs the session GUID established by records 8-9 as its handle. We pass storage session id from Open2 response (different value), so server returns false. Need to decode records 6-9 (unknown actions) and 11-16 (6 more unknown setup calls) before EnsT2 can succeed.",
|
||||
"RemainingDecode": "17 unknown WCF actions (records 6-9, 11-16, 18, 20). Each captured body is in the ndjson; ASCII inspection of each will reveal the action URI."
|
||||
},
|
||||
"PriorEventFlowInvestigation20260504Followup": {
|
||||
"AddTwithCmEventCtagMetadataAttempt": {
|
||||
"Payload": "HistorianAddTagsProtocol.SerializeCmEventCTagMetadata cloned from reverse-engineering CLI BuildCommonArchestraEventTagMetadata: version=3, mask=0x0086, CDataType=5, tag id 353b8145-5df0-4d46-a253-871aef49b321, name CM_EVENT, description AnE Event, FILETIME UTC, storage type 2 + flags, common Archestra event type id 5f59ae42-3bb6-4760-91a5-ab0be01f2f27.",
|
||||
"Handle": "ClientHandle from OpenConnection3 v6 response (UInt32 LE at offset 1).",
|
||||
"ConnectionMode": "0x501 (event mode)",
|
||||
"ServerResponse": {"AddReturnCode": 76, "AddOutputLength": 0, "AddOutputCode0x": "0x4C"},
|
||||
"Conclusion": "AddT now reaches the server (the WCF parameter-name fixes ensure pInBuff is parsed) but server rejects with native code 76. This code is not in the documented set (1/30/51/73/85/127/171). The chain still cannot read events because GetNextEventQueryResultBuffer returns code 85 (0x55).",
|
||||
"DiagnosticHelpers": [
|
||||
"HistorianWcfEventOrchestrator.LastAddReturnCode (uint)",
|
||||
"HistorianWcfEventOrchestrator.LastAddOutputLength (int)",
|
||||
"HistorianWcfEventOrchestrator instance .LastResultBufferLength + .LastErrorBufferDescription",
|
||||
"EventChainDiagnosticTests.EventOrchestrator_DiagnosticDump_AgainstLocalHistorian prints all four"
|
||||
],
|
||||
"ConcreteNextStep": "Instrument Wcf.AddT.Request on a successful native event harness run via the existing IL-rewrite pattern (clone instrument-starteventquery from tools/AVEVA.Historian.ReverseEngineering/Program.cs lines 1308-1367; replace target method/phase). Diff the captured payload byte-for-byte against HistorianAddTagsProtocol.SerializeCmEventCTagMetadata to identify the mismatch. Once AddT returns 0, capture Wcf.GetNextEventQueryResultBuffer.ResultBytes and write the event row parser."
|
||||
},
|
||||
"PriorEventFlowInvestigation20260504": {
|
||||
"ConnectionModeChange": "Event orchestrator now sends ConnectionMode=0x501 (Event) instead of 0x402 (Process). Confirmed via native evidence 'SetConnectionMode(Event, integratedSecurity:true) yields connection mode 1281 (0x501)'.",
|
||||
"RegisterTags2AttemptResult": "All variants returned native error code=51 (InvalidParameter). Tested handle candidates: storageSessionId (upper/lower case GUID-D), contextKey (upper/lower case GUID-D). Body format: UInt32 count=1 + 16 bytes CM_EVENT GUID 353b8145-5df0-4d46-a253-871aef49b321.",
|
||||
"RegisterTags2Reverted": "Removed from event orchestrator; chain returns to silently treating server code 85 as soft terminal (empty events).",
|
||||
"ActualNativePrerequisite": "Per implementation-status.md lines 673-728, native CreateDefaultEventTag → AddTagInternal → HistorianClient.AddHistorianTag flow uses AddTags (AddT) on IHistoryServiceContract with a CTagMetadata payload (NOT RegisterTags2). CTagMetadata format: version(1) + optional-mask(2) + data-type-byte(1) + tag-id(16) + compact UTF-16 strings.",
|
||||
"CmEventIdentity": {
|
||||
"TagId": "353b8145-5df0-4d46-a253-871aef49b321",
|
||||
"EventTypeId": "5f59ae42-3bb6-4760-91a5-ab0be01f2f27",
|
||||
"CDataType": 10,
|
||||
"StorageType": 2,
|
||||
"Description": "AnE Event",
|
||||
"EngineeringUnit": "NONE"
|
||||
},
|
||||
"DiagnosticHelper": "EventChainDiagnosticTests.EventOrchestrator_DiagnosticDump_AgainstLocalHistorian uses InternalsVisibleTo to call the orchestrator directly and prints LastResultBufferLength + LastErrorBufferDescription.",
|
||||
"SqlGroundTruth": "SELECT * FROM Runtime.dbo.Events confirms events exist in the test window; native harness returns 5 events; managed ReadEventsAsync currently returns 0 because of the missing AddT(CTagMetadata) prereq.",
|
||||
"NextEvidenceCapture": "Instrument Wcf.AddT.Request on a running NativeTraceHarness event scenario to capture exact CTagMetadata wire bytes."
|
||||
}}
|
||||
"ServerContractAuditedOtherOperationsWithLikelySameMismatch": [
|
||||
{"Operation": "EnsT", "ServerNames": ["Handle","elementCount","InByteCount","InBuff","OutByteCount","OutBuff"], "ClientNames": ["handle","elementCount","inByteCount","inBuffer","outByteCount","outBuffer"]},
|
||||
{"Operation": "EnsT2", "ServerNames": ["Handle","elementCount","InBuff","OutBuff","errorBuffer"], "ClientNames": ["handle","elementCount","inputBuffer","outputBuffer","errorBuffer"]},
|
||||
{"Operation": "RTag2", "ServerNames": ["handle","ElementCount","pInBuff","outBuff","errorBuffer"], "ClientNames": ["handle","elementCount","inputBuffer","outputBuffer","errorBuffer"]},
|
||||
{"Operation": "ExKey", "ServerNames": ["handle","inBuff","OutBuff","errorBuffer"], "ClientNames": ["handle","inputBuffer","outputBuffer","errorBuffer"]},
|
||||
{"Operation": "StJb", "ServerNames": ["handle","jobBuffer","strJobid","errorBuffer"], "ClientNames": ["handle","jobBuffer","jobId","errorBuffer"]},
|
||||
{"Operation": "GtJb", "ServerNames": ["handle","strJobid","jobstatus","errorBuffer"], "ClientNames": ["handle","jobId","jobStatus","errorBuffer"]}
|
||||
],
|
||||
"ServerContractAuditFixDeferredReason": "Out of scope for the read-only SDK pass. Audit when those flows become required.",
|
||||
"ServerRuntimeValClProbeNativeReadBaselineRowFixture": {
|
||||
"TagKey": 238,
|
||||
"Value": 0,
|
||||
"Quality": 133,
|
||||
"OpcQuality": 192,
|
||||
"QualityDetail": 248,
|
||||
"PercentGood": 100
|
||||
},
|
||||
"ServerRuntimeValClProbeManagedValClRoundZero": {
|
||||
"Endpoint": "net.pipe://localhost/Hist",
|
||||
"Transport": "NamedPipeNone",
|
||||
"GetVersionReturnCode": 0,
|
||||
"InterfaceVersion": 11,
|
||||
"OutgoingTokenLength": 64,
|
||||
"WrappedOutgoingLength": 69,
|
||||
"WrappedOutgoingPrefixHex": "01400000004e544c4d5353500001000000b7b218e209000900370000000f000f",
|
||||
"ServerSuccess": false,
|
||||
"ServerOutputLength": 0,
|
||||
"ErrorLength": 5,
|
||||
"NativeErrorType": 4,
|
||||
"NativeErrorCode": 1,
|
||||
"NativeErrorName": "Failure"
|
||||
},
|
||||
"ServerRuntimeValClProbeAlternativePathsConsidered": [
|
||||
"PsExec -i -s SYSTEM-token frida (requires user consent for SYSTEM shell)",
|
||||
"Signed Detours instrumentation DLL trusted by local mitigation policy",
|
||||
"ETW providers Microsoft-Windows-Security-SSPICli/Negotiate/Kerberos filtered to PID for AcceptSecurityContext call/status visibility",
|
||||
"Inspect Get-ProcessMitigation -Name aahClientAccessPoint.exe and temporarily relax with explicit user consent"
|
||||
],
|
||||
"ManagedLazyOpenAndSkipGetVersionStillFails": true,
|
||||
"Conclusion": "The successful integrated local read does not traverse the managed CHistoryConnectionWCF.ValidateClient or GetClientKey IL methods instrumented at tokens 0x06004044 and 0x06004041. It does call CHistoryConnectionWCF.ValidateClientCredential / ValCl with wrapped NTLM tokens. Runtime setup instrumentation shows the successful native path constructs CHistoryConnectionWCF, calls GetInterfaceVersion before auth, succeeds through its first InitializeProxy path, enters ConfigurePipeProxy with connection mode 1, and has a ready non-faulted proxy by both ValCl rounds. Static IL shows ConfigurePipeProxy explicitly uses NetNamedPipeSecurityMode.None, while SetIntegratedSecurity stores WindowsIdentity.GetCurrent through the managed-pointer tuple at +640/+600/+664 and GetInterfaceVersion impersonates it. Static IL shows both GetClientKey and ValidateClientCredential derive the WCF handle string by converting the contextKey argument to GUID text. Calling ExchangeKey with the same style of handle on the managed named-pipe path fails with native type 4/code 1 before ValCl, so a simple preceding ExchangeKey call is not the missing registration step. Static IL shows COperation.Start2 is a local operation-priority/bandwidth gate and does not call a WCF operation. Native disassembly shows CClientContext.AuthenticateClient creates the context GUID locally with UuidCreate, stores it at CClientContext +64, then passes that GUID through the ValCl virtual path. Server-side IL and disassembly show HistoryService.ValidateClientCredential parses that handle as a GUID, copies the ValCl byte array into a CServerBuffer, calls CServerNode.ProcessServerToken, and only registers the context handle after ProcessServerToken reaches the terminal round. ProcessServerToken parses the same AVEVA token envelope and calls Secur32 AcceptSecurityContext through helper VA 0x00505C00 after first-round context setup and lookup helpers. Managed replay now matches the native first wrapped token over both TCP and the local named-pipe /Hist path, but ValCl still rejects round 0 with native type 4/code 1, including when the managed calls run under the current Windows token and when the managed channel is created/opened under that impersonation scope. The nested CClientContext +16 buffers contain pointer-rich native state and no readable Historian payload, so the missing managed replay state is therefore the native wrapper/proxy/session state that makes server ProcessServerToken create and find the client-generated context key, not merely the transport, endpoint, Windows token, NTLM token envelope, ExchangeKey, channel impersonation, COperation.Start2, OpenConnection3, or an undecoded WCF request body."
|
||||
},
|
||||
"Evidence": [
|
||||
"Runtime instrumentation shows request bytes 1..16 exactly match CClientInfo +1240 in the same successful native OpenConnection3 run.",
|
||||
"Runtime instrumentation shows request byte 17 exactly matches CClientInfo +1608 and is 0 for the active content branch.",
|
||||
"CClientBase.ConfigureOpenConnection calls native CClientContext.AuthenticateClient on CClientBase +2112.",
|
||||
"After successful authentication, ConfigureOpenConnection copies 16 bytes from CClientBase +2176 to CClientBase +1480.",
|
||||
"CClientContext.GetContextKey returns CClientContext +64, so CClientBase +2176 is the context key location.",
|
||||
"Runtime instrumentation shows CClientBase +2176 equals the generated client key before AuthenticateClient, changes after AuthenticateClient, and then matches both the copied CClientInfo field and the OpenConnection3 request prefix.",
|
||||
"Native disassembly confirms CClientContext.AuthenticateClient is native-only. It calls UuidCreate, stores the GUID into CClientContext +64, calls AcquireCredentialsHandleW, then loops through an internal SSPI helper and the connection's ValidateClientCredential virtual method.",
|
||||
"The internal SSPI helper at VA 0x180298F30 calls InitializeSecurityContextW, uses request flags 0x2081C for the first round and 0x81C after that, and writes the native ValCl token envelope as round byte, UInt32 token length, then token bytes.",
|
||||
"The AuthenticateClient loop passes the CClientContext +64 GUID as the context key to the ValidateClientCredential virtual path. In the captured local read CClientContext +0x50 is zero, selecting the normal connection-object virtual call at VA 0x180298E95.",
|
||||
"Direct managed ValidateClient2 probing reached Hist-Integrated but returned native error type 4/code 51 before ExchangeKey.",
|
||||
"Sanitized instrumentation of CHistoryConnectionWCF.ValidateClient and GetClientKey emitted no records during a successful native integrated read, even though the instrumented DLL and logger smoke test were verified.",
|
||||
"Sanitized instrumentation of CHistoryConnectionWCF.ValidateClientCredential emitted two successful ValCl rounds: 69-byte client input to 239-byte server output, then 93-byte client input to one-byte terminal output.",
|
||||
"System-boundary SSPI instrumentation shows native auth calls AcquireCredentialsHandleW with package Negotiate, then two InitializeSecurityContextW calls targeting NT SERVICE\\aahClientAccessPoint. The raw SSPI output tokens are 64 and 88 bytes, which exactly account for the 69- and 93-byte ValCl bodies after the 5-byte AVEVA wrapper.",
|
||||
"IL-side CClientContext memory windows show successful AuthenticateClient mutates pointer-sized regions at offsets +8, +16, and +24, plus the context key at +64..+79. The +8 target contains SSPI/security-package metadata including Schannel, Microsoft Kerberos V1.0, TSSSP, System.Core, and Default TLS SSP. The +16 target contains pointer-rich nested state at offsets 0 and 8, with an all-zero target at offset 64; the nested targets have no readable ASCII or UTF-16 Historian payload strings in the captured windows. The +24 value is not safe to dereference as a direct buffer.",
|
||||
"The native first ValCl input is a wrapped NTLM type-1 token: one round byte, four-byte little-endian token length, then NTLMSSP bytes. The managed probe reproduces that first wrapped token hash after setting the NTLM VERSION negotiate flag.",
|
||||
"Standalone managed ValCl replay still fails with native error type 4/code 1 on both HistCert and Hist-Integrated, proving the missing piece is channel/session prerequisite state rather than the first token envelope.",
|
||||
"Skipping GetInterfaceVersion and avoiding explicit WCF channel open does not change the standalone managed ValCl failure.",
|
||||
"Successful local native auth setup constructs CHistoryConnectionWCF, then calls GetInterfaceVersion before ValCl.",
|
||||
"The first GetInterfaceVersion InitializeProxy path succeeds and SetManagedPtr leaves the proxy ready flag set before ValidateClientCredential runs.",
|
||||
"Object-window instrumentation shows GetInterfaceVersion populates the history proxy managed-pointer slot at CHistoryConnectionWCF +608 and ready flag +669. Between GetInterfaceVersion completion and ValCl entry, the binding managed-pointer slot at +616 is also populated.",
|
||||
"ValCl object-window instrumentation shows the parent CHistoryConnectionWCF window is stable across the two successful ValCl rounds, while the +608 history proxy target mutates at bytes 96-101. The +616 binding target and +640 Windows identity target are stable across both rounds.",
|
||||
"Static IL inspection of CHistoryConnectionWCF.Initialize shows it is client-side proxy setup: it calls InitializeProxy<IHistoryServiceContract2>, stores the history proxy and binding through CServiceUtility.SetManagedPtr, then initializes the transaction proxy. The history InitializeProxy method has ConfigurePipeProxy at IL 0x0098 and ConfigureTcpProxy at IL 0x038E.",
|
||||
"The decompiled HistoryServiceContract interfaces contain no Initialize operation contract, so the native Initialize log line is not evidence for a missing WCF Initialize request before ValCl.",
|
||||
"A focused server-side Frida probe was added for ProcessServerToken, the context setup/lookup helpers, and the AcceptSecurityContext wrapper. The current non-elevated session could not inject into the long-running aahClientAccessPoint service, so runtime server-helper comparison remains pending an elevated capture.",
|
||||
"Branch instrumentation shows the local native path uses connection mode 1 and enters ConfigurePipeProxy, not ConfigureTcpProxy.",
|
||||
"The named-pipe ConfigurePipeProxy endpoint summary has length 25 with compression false, matching the local uncompressed /Hist pipe endpoint shape.",
|
||||
"Static IL inspection of CWcfConfig.ConfigurePipeProxy shows NetNamedPipeBinding.Security.Mode is set to None, with TransactionFlow false, native-sized buffers, and the aahMDASEncoder.ClientBinding wrapper.",
|
||||
"Static IL inspection of CWcfConfig.ConfigurePipeProxy shows the native path creates the pipe channel through ChannelFactory<T>.CreateChannel(binding, endpoint) and sets IContextChannel.OperationTimeout from the timeout-minutes argument. Managed pipe probes using the static factory shape, with and without eager channel open, still fail ValCl round 0 with native type 4/code 1.",
|
||||
"Static IL inspection of CHistoryConnectionWCF.GetClientKey and ValidateClientCredential shows both methods build the WCF handle string from the contextKey argument via ToString(contextKey), producing 36-character GUID text before ExchangeKey or ValCl.",
|
||||
"Managed named-pipe probes that call ExchangeKey with the same generated handle before ValCl reach GetInterfaceVersion version 11, but ExchangeKey itself fails with native type 4/code 1 across default, static-channel, and lazy static-channel variants.",
|
||||
"Static IL inspection of CHistoryConnectionWCF.SetIntegratedSecurity shows integrated security is flag +540 and WindowsIdentity.GetCurrent is stored through offsets +640/+600/+664; GetInterfaceVersion later reads that tuple and calls WindowsIdentity.Impersonate.",
|
||||
"Managed named-pipe ValCl reaches GetInterfaceVersion version 11 and still fails at round 0 with native error type 4/code 1 despite matching the native first wrapped token.",
|
||||
"Running the managed named-pipe GetInterfaceVersion and ValCl calls under the current Windows token does not change the failure.",
|
||||
"Creating and opening the managed named-pipe channel under the current Windows impersonation token, with and without also wrapping the calls, still fails at ValCl round 0 with native type 4/code 1.",
|
||||
"Sanitized native handle summaries show uppercase GUID text; managed lowercase-handle replay still fails, so handle casing is not the mismatch.",
|
||||
"System Platform logs for the managed pipe probes show aahClientAccessPoint warning that ValidateClientCredential hit a NullReferenceException at HistoryService.cpp line 1593.",
|
||||
"Changing the managed named-pipe probe to transport security is rejected as a binding mismatch, so the local service expects the uncompressed no-security pipe binding shape.",
|
||||
"A direct .NET Framework WCF named-pipe probe with the aa/Hist contract and MDAS content type also reaches GetV version 11, matches the native first wrapped token, and fails ValCl round 0 with native type 4/code 1 plus the same server NullReferenceException.",
|
||||
"Server-side static IL shows HistoryService.ValidateClientCredential parses the WCF handle as a GUID, copies the ValCl byte array into a CServerBuffer, calls CServerNode.ProcessServerToken, and only adds the context GUID to its managed context-handle collection after ProcessServerToken reaches a terminal round.",
|
||||
"Server-side native disassembly shows CServerNode.ProcessServerToken parses the same ValCl envelope shape as the client: one round byte, a four-byte little-endian token length, then SSPI token bytes.",
|
||||
"On the first round, ProcessServerToken calls helper VA 0x0050FFC0 for keyed context setup, then helper VA 0x00517AB0 for context lookup. If lookup returns no context object, the server sets custom error code 0x29 before ValCl can progress.",
|
||||
"String decoding and disassembly identify the inserted native object as aahClientAccessPoint::CServerContext. The setup helper uses CServerNode +0xE80 as the lock and +0xE98 as the keyed map, logs Adding ServerContext 0x%p, constructs the context at VA 0x00505100, and inserts it through a red-black-tree helper at VA 0x0042F590.",
|
||||
"The credential helper calls AcquireCredentialsHandleW with the UTF-16 package string Negotiate. The server token-processing log name is aahClientAccessPoint::CServerContext::ProcessClientToken.",
|
||||
"The ProcessServerToken helper at VA 0x00505C00 calls Secur32 AcceptSecurityContext through import address 0x005A0340 and treats both success and SEC_I_CONTINUE_NEEDED (0x90312) as valid protocol progress.",
|
||||
"Server-side static IL shows HistoryService.ValidateIntegratedCredentials starts by reading ServiceSecurityContext.Current.WindowsIdentity, explaining earlier null-reference failures on bindings that did not populate ServiceSecurityContext.Current.",
|
||||
"Successful local native ValCl setup records show COperation.Start2 success with error type/code 0, existing proxy faulted false, and reconnect-required false.",
|
||||
"Static IL inspection of COperation.Start2 shows it calls only local operation-priority and bandwidth gates, setting local gate-failure error codes 243 or 150 when those fail. It does not call a WCF service operation.",
|
||||
"The same instrumented local native runs emit no CWcfConfig.ConfigureTcpProxy records, so the successful ValCl evidence is using the native GetInterfaceVersion pipe proxy setup path, not the standalone managed TCP proxy setup path.",
|
||||
"CClientInfo starts at CClientBase +240 on this path because CClientBase +1480 aligns with CClientInfo +1240."
|
||||
],
|
||||
"Conclusion": "The OpenConnection3 prefix is not a fresh managed replay GUID. It is the client-generated context key stored by native CClientContext.AuthenticateClient at CClientContext +64, accepted during the native ValCl path, and copied into CClientInfo before serialization."
|
||||
},
|
||||
"OpenConnection3RequestLayout": [
|
||||
{
|
||||
"Offset": 0,
|
||||
"Field": "protocolVersion",
|
||||
"Encoding": "Byte",
|
||||
"Evidence": "Serializer writes 6 when the boolean selector argument is true; observed request starts with 0x06"
|
||||
},
|
||||
{
|
||||
"Offset": 1,
|
||||
"Field": "authenticatedContextKey",
|
||||
"Encoding": "16 raw GUID bytes",
|
||||
"Evidence": "Loaded from CClientInfo +1240; same-run instrumentation proves it equals the key copied from CClientBase +2176 after CClientContext.AuthenticateClient"
|
||||
},
|
||||
{
|
||||
"Offset": 17,
|
||||
"Field": "contentSelector",
|
||||
"Encoding": "Boolean byte",
|
||||
"Evidence": "Loaded from CClientInfo +1608; observed value is 0, selecting SerializeOpenConnectionInParams2Content"
|
||||
},
|
||||
{
|
||||
"Offset": 18,
|
||||
"Field": "content",
|
||||
"Encoding": "OpenConnectionInParams2Content",
|
||||
"Evidence": "Host string, UInt16 secret length plus bytes, client type, connection mode, metadata namespace, two strings, then client common info"
|
||||
}
|
||||
],
|
||||
"OpenConnection3ResponseLength": 42,
|
||||
"OpenConnection3ResponseSha256": "2bfb55d7a39bcfecf1658e013b85eb38f13acd85fba365db71922d791c8f075b",
|
||||
"OpenConnection3ResponseByte0": "0x03",
|
||||
"OpenConnection3ResponseClientHandleOffset": 1,
|
||||
"OpenConnection3ResponseClientHandleEncoding": "UInt32 little-endian",
|
||||
"OpenConnection3ResponseDeserializerToken": "0x06004008",
|
||||
"OpenConnection3ResponseDeserializer": "CClientInfo.DeserializeOpenConnectionOutParams",
|
||||
"OpenConnection3ResponseLayout": [
|
||||
{
|
||||
"Offset": 0,
|
||||
"Field": "protocolVersion",
|
||||
"Encoding": "Byte",
|
||||
"Evidence": "Deserializer accepts version 2 or 3; observed response uses 3"
|
||||
},
|
||||
{
|
||||
"Offset": 1,
|
||||
"Field": "clientHandle",
|
||||
"Encoding": "UInt32 little-endian",
|
||||
"Evidence": "Loaded into CClientInfo +1256"
|
||||
},
|
||||
{
|
||||
"Offset": 5,
|
||||
"Field": "storageSessionId",
|
||||
"Encoding": "16 raw GUID bytes",
|
||||
"Evidence": "Loaded into CClientInfo +1260"
|
||||
},
|
||||
{
|
||||
"Offset": 21,
|
||||
"Field": "connectTime",
|
||||
"Encoding": "Int64 FILETIME UTC",
|
||||
"Evidence": "Loaded into CClientInfo +1296"
|
||||
},
|
||||
{
|
||||
"Offset": 29,
|
||||
"Field": "serverTime",
|
||||
"Encoding": "Int64 FILETIME UTC",
|
||||
"Evidence": "Loaded into CClientInfo +1312 when protocolVersion >= 3"
|
||||
},
|
||||
{
|
||||
"Offset": 37,
|
||||
"Field": "trailingBytes",
|
||||
"Encoding": "5 bytes observed in the current 42-byte fixture",
|
||||
"Evidence": "Not read by CClientInfo.DeserializeOpenConnectionOutParams in the decoded IL window"
|
||||
}
|
||||
],
|
||||
"OpenConnection3ErrorLength": 0,
|
||||
"CClientBaseSecondaryOpenSuccess": 1,
|
||||
"CClientBaseHandleAfterSecondaryOpen": "<transient-redacted>",
|
||||
"CClientCommonClientHandleForConnection": "<same-as-CClientBaseHandleAfterSecondaryOpen>",
|
||||
"WcfStartQuery2ClientHandle": "<same-as-CClientBaseHandleAfterSecondaryOpen>",
|
||||
"WcfStartQuery2ServerQueryHandle": "<transient-redacted>",
|
||||
"CClientCommonQueryHandleAfterCall": "<same-as-WcfStartQuery2ServerQueryHandle>"
|
||||
},
|
||||
"ManagedReplay": {
|
||||
"RawArtifact": "artifacts/reverse-engineering/managed-native-v6-openconnection3",
|
||||
"Attempts": [
|
||||
{
|
||||
"Name": "native-v6-openconnection3-integrated-windows-mode1026-hist-integrated",
|
||||
"Endpoint": "Hist-Integrated",
|
||||
"TransportSecurity": "Windows",
|
||||
"InputLength": 1348,
|
||||
"Success": false,
|
||||
"NativeError": {
|
||||
"Type": 132,
|
||||
"Code": 171,
|
||||
"Name": "AuthenticationFailed"
|
||||
},
|
||||
"ServerMessage": "Failed to find server context; context GUID redacted"
|
||||
},
|
||||
{
|
||||
"Name": "native-v6-openconnection3-cert-mode1026-histcert",
|
||||
"Endpoint": "HistCert",
|
||||
"TransportSecurity": "Certificate",
|
||||
"InputLength": 1348,
|
||||
"Success": false,
|
||||
"NativeError": {
|
||||
"Type": 132,
|
||||
"Code": 171,
|
||||
"Name": "AuthenticationFailed"
|
||||
},
|
||||
"ServerMessage": "Failed to find server context; context GUID redacted"
|
||||
}
|
||||
],
|
||||
"Conclusion": "After switching empty metadata to the compact CMetadataNamespace.Save layout, managed replay is parsed past packet-version validation. The server now fails while validating integrated credentials because the 16-byte OpenConnection3 prefix key has not been accepted by the server context table. The next evidence target is the native wrapper/proxy/session state that makes the server accept the client-generated context key during ValCl before OpenConnection3."
|
||||
},
|
||||
"Conclusion": "The secondary open branch in CClientBase.OpenConnection is CHistoryConnectionWCF.OpenConnection3. OpenConnection3 calls IHistoryServiceContract2.OpenConnection2 with a 1346-byte request and receives a 42-byte response. The transient /Retr client handle is UInt32 little-endian at response offset 1, after byte 0x03. Deserializing that response initializes the vtable offset 24 handle later used by CClientCommon.StartQuery and /Retr.StartQuery2. The managed driver should now reproduce the OpenConnection3/OpenConnection2 envelope, not the older OpenConnection2 probe shape that failed."
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"Operation":"NativeTraceHarness.IntegratedRead","Scenario":"history","ServerName":"10.100.0.35","DirectConnection":false,"ProxyServer":null,"TagName":"OtOpcUaParityTest_001.Counter","LookbackMinutes":1440,"RetrievalMode":"Full","ResolutionTicks":0,"StartUtc":"2026-05-01T13:47:37.5405445Z","EndUtc":"2026-05-02T13:47:37.5405445Z","OpenSuccess":true,"OpenErrorType":"NoError","OpenErrorCode":"Success","OpenErrorDescription":"No error type set","ConnectedToServer":false,"Pending":false,"ErrorOccurred":false,"StartQuerySuccess":false,"StartQueryErrorType":null,"StartQueryErrorCode":null,"StartQueryErrorDescription":null,"StartQueryException":null,"MoveTerminalDescription":null,"RowCount":0,"Rows":[],"Snapshots":{"ConnectionArgs":{"field:tcpPort":32568,"field:serverName":"10.100.0.35","field:readOnly":true,"field:bandwidthLimit":0,"field:compression":false,"field:packetTimeout":1000,"field:storeForwardPath":"","field:storeForwardFreeDiskSpace":125,"field:minStoreForwardDuration":30,"field:bufferMemory":8,"field:connectionType":"Process","field:details":"","field:consoleAccess":false,"field:metadataNamespace":null,"field:directConnection":false,"field:proxyServer":"","field:futureTimeThreshold":0,"field:futureTimeThresholdSpecified":false,"property:ProxyServer":"","property:BufferMemory":8,"property:MinStoreForwardDuration":30,"property:StoreForwardFreeDiskSpace":125,"property:StoreForwardPath":"","property:PacketTimeout":1000,"property:Compression":false,"property:BandwidthLimit":0,"property:ConsoleAccess":false,"property:ReadOnly":true,"property:Details":"","property:ServerName":"10.100.0.35","property:TcpPort":32568,"property:ConnectionType":"Process","property:FutureTimeThreshold":0,"property:DirectConnection":false,"property:MetaDataNamespace":null},"AccessAfterOpen":{"field:clientHandlerArray":[1,0],"field:ptrClientArray":"\u003cunreadable:NotSupportedException\u003e","field:connectionType":"Process","field:eventTagHandle":0}},"TracePath":"C:\\Users\\dohertj2\\Desktop\\histsdk\\docs\\reverse-engineering\\native-wcf-message-log.svclog","TraceExists":false,"TraceBytes":0}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"Operation": "PktmonDebianRelayCapture",
|
||||
"Scenario": "history",
|
||||
"SshHost": "10.100.0.35",
|
||||
"TargetHost": "10.100.0.48",
|
||||
"HarnessExitCode": 1,
|
||||
"PayloadBytesCaptured": false,
|
||||
"PktmonText": ".\\docs\\reverse-engineering\\pktmon-debian-relay-history-latest.txt",
|
||||
"PktmonStats": ".\\docs\\reverse-engineering\\pktmon-debian-relay-history-latest.stats.txt",
|
||||
"RelayTranscript": ".\\docs\\reverse-engineering\\pktmon-debian-relay-history-latest.relay.ndjson",
|
||||
"HarnessOutput": ".\\docs\\reverse-engineering\\pktmon-debian-relay-history-latest.harness.json",
|
||||
"RawEtlDeleted": true
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"GeneratedUtc": "2026-05-02T22:53:41Z",
|
||||
"Scenario": "native integrated history read",
|
||||
"Sanitized": true,
|
||||
"InstrumentedMethods": {
|
||||
"HistorianClient.OpenConnection": "0x060055D8",
|
||||
"Query.StartDataQuery": "0x0600574B",
|
||||
"CRetrievalConnectionWCF.StartQuery2": "0x06004A0D",
|
||||
"CRetrievalConnectionWCF.GetNextQueryResultBuffer2": "0x06004A0E",
|
||||
"HistorianClient.GetNextRow<DataQueryResultRow>": "0x0600588D"
|
||||
},
|
||||
"ObservedValues": {
|
||||
"HistorianClientOpenConnectionSuccess": 1,
|
||||
"HistorianClientOpenConnectionHandle": 2,
|
||||
"StartDataQueryClientHandleCandidate": 2,
|
||||
"StartDataQueryRequestLength": 251,
|
||||
"StartDataQueryRequestSha256": "96e520349e06a5cfab6099f86c6304aac22f4f3e46dba282a859ff0a640b2608",
|
||||
"WcfStartQuery2Success": 1,
|
||||
"WcfStartQuery2ClientHandle": "<transient-redacted>",
|
||||
"WcfStartQuery2QueryRequestType": 1,
|
||||
"WcfStartQuery2RequestSize": 251,
|
||||
"WcfStartQuery2ResponseSize": 31,
|
||||
"WcfStartQuery2ResponseSha256": "4c062b5ce8181308f0f46bfd8c6088acb52e6ade94401651b7d3ccc8952edfb5",
|
||||
"WcfStartQuery2ServerQueryHandle": "<transient-redacted>",
|
||||
"WcfStartQuery2ErrorSize": 0,
|
||||
"WcfGetNextQueryResultBuffer2Success": 1,
|
||||
"WcfGetNextQueryResultBuffer2UsesSameWcfClientHandle": true,
|
||||
"WcfGetNextQueryResultBuffer2UsesSameServerQueryHandle": true,
|
||||
"WcfGetNextQueryResultBuffer2ResultSize": 570,
|
||||
"WcfGetNextQueryResultBuffer2ResultSha256": "cc9dc2078ea0b5d5aabf2940bebe11700117a4c1e2583bfdeb033af7ddbe459d",
|
||||
"WcfGetNextQueryResultBuffer2TerminalBufferSize": 5,
|
||||
"WcfGetNextQueryResultBuffer2TerminalBufferSha256": "7db15e1972ced8a44dae4d75f7a1f0cd74858c7d0deb8b3522d6a05904778bf7",
|
||||
"GetNextRowClientQueryHandle": 1,
|
||||
"GetNextRowDataQueryResultRowLength": 512,
|
||||
"GetNextRowDataQueryResultRowSha256": "acc37153a017c99960bf84f61d003760b7a1749c4c94c1c6fc31871403fcaf71"
|
||||
},
|
||||
"Conclusion": "Query.StartDataQuery passes the legacy native client handle 2 into the common retrieval layer. The successful WCF StartQuery2 call uses a different transient retrieval session handle, so direct managed read replay must reproduce the session/client mapping below the native ClientApp handle, not just the 251-byte DataQueryRequest."
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
[{"DeclaringType":"\u003cModule\u003e","Name":"Query.GetNextRow","MetadataToken":"0x0600594F","IsStatic":true,"IsPublic":false,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":"0x7FFC6B1A1790","FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":null},{"DeclaringType":"\u003cModule\u003e","Name":"EventQueryResultBuffer.GetNextRow\u003cclass SByteStream\u003cclass SCrtMemFile\u003e \u003e","MetadataToken":"0x06005964","IsStatic":true,"IsPublic":false,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":"0x7FFC6B1A1990","FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":null},{"DeclaringType":"\u003cModule\u003e","Name":"HistorianClient.GetNextRow\u003cclass EventQueryResultRow\u003e","MetadataToken":"0x06005965","IsStatic":true,"IsPublic":false,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":"0x7FFC6B1A19F0","FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":null},{"DeclaringType":"\u003cModule\u003e","Name":"DataQueryResultBuffer.GetNextRow\u003cclass SByteStream\u003cclass SCrtMemFile\u003e \u003e","MetadataToken":"0x06005889","IsStatic":true,"IsPublic":false,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":"0x7FFC6B1A1AF0","FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":null},{"DeclaringType":"\u003cModule\u003e","Name":"HistorianClient.GetNextRow\u003cclass DataQueryResultRow\u003e","MetadataToken":"0x0600588D","IsStatic":true,"IsPublic":false,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":"0x7FFC6B1A1B50","FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":null},{"DeclaringType":"\u003cModule\u003e","Name":"Query.GetNextRow","MetadataToken":"0x06005822","IsStatic":true,"IsPublic":false,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":"0x7FFC6B1A1C50","FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":null}]
|
||||
@@ -0,0 +1 @@
|
||||
[{"DeclaringType":"\u003cModule\u003e","Name":"Query.StartDataQuery","MetadataToken":"0x0600574B","IsStatic":true,"IsPublic":false,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":"0x7FFC6B1D1790","FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":null},{"DeclaringType":"\u003cModule\u003e","Name":"HistorianClient.StartDataQuery","MetadataToken":"0x060055E4","IsStatic":true,"IsPublic":false,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":"0x7FFC6B1D2400","FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":null},{"DeclaringType":"\u003cModule\u003e","Name":"ClientApp.StartDataQuery","MetadataToken":"0x060053F7","IsStatic":true,"IsPublic":false,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":"0x7FFC6B1D26A0","FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":null}]
|
||||
@@ -0,0 +1 @@
|
||||
[{"DeclaringType":"\u003cModule\u003e","Name":"Query.StartEventQuery","MetadataToken":"0x0600574A","IsStatic":true,"IsPublic":false,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":"0x7FFC6B1C1790","FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":null},{"DeclaringType":"\u003cModule\u003e","Name":"HistorianClient.StartEventQuery","MetadataToken":"0x060055E2","IsStatic":true,"IsPublic":false,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":"0x7FFC6B1C2480","FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":null},{"DeclaringType":"\u003cModule\u003e","Name":"ClientApp.StartEventQuery","MetadataToken":"0x06005406","IsStatic":true,"IsPublic":false,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":"0x7FFC6B1C2690","FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":null},{"DeclaringType":"\u003cModule\u003e","Name":"CRetrievalConnectionWCF.StartEventQuery","MetadataToken":"0x06004A10","IsStatic":true,"IsPublic":false,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":"0x7FFC6B1C2770","FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":null},{"DeclaringType":"\u003cModule\u003e","Name":"CRetrievalConnectionDirect.StartEventQuery","MetadataToken":"0x060049B7","IsStatic":true,"IsPublic":false,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":"0x7FFC6B1C4130","FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":null},{"DeclaringType":"\u003cModule\u003e","Name":"CRetrievalConnectionCloud.StartEventQuery","MetadataToken":"0x0600495A","IsStatic":true,"IsPublic":false,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":"0x7FFC6B1C5200","FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":null},{"DeclaringType":"\u003cModule\u003e","Name":"aahClientCommon.CClientCommon.StartEventQuery","MetadataToken":"0x06002E89","IsStatic":true,"IsPublic":false,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":"0x7FFC6B1C6C60","FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":null},{"DeclaringType":"RetrievalServiceContract.IRetrievalServiceContract4","Name":"StartEventQuery","MetadataToken":"0x06005F21","IsStatic":false,"IsPublic":true,"ModuleBase":"0x7FFC92090000","ModuleSize":"0x105F000","FunctionPointer":null,"FunctionPointerInModule":false,"FunctionPointerRva":null,"PrepareError":"ArgumentNullException: Abstract methods cannot be prepared.\r\nParameter name: method"}]
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"StartUtc": "2026-05-01T14:32:12.0728924Z",
|
||||
"EndUtc": "2026-05-02T14:32:12.0728924Z",
|
||||
"Length": 251,
|
||||
"ResolutionScaledTicks": 6000000000000,
|
||||
"ResolutionDouble": 600000000.0,
|
||||
"QueryType": 3,
|
||||
"Hex": [
|
||||
"0000: 09 00 03 00 00 00 00 00 00 00 00 00 00 00 5C 9D ..............\\.",
|
||||
"0010: 6B 4C 77 D9 DC 01 5C 5D D5 76 40 DA DC 01 00 00 kLw...\\].v@.....",
|
||||
"0020: 00 00 A3 E1 C1 41 00 00 00 00 00 00 00 00 03 00 .....A..........",
|
||||
"0030: 00 00 55 00 54 00 43 00 01 00 00 00 00 00 01 00 ..U.T.C.........",
|
||||
"0040: FF 01 00 00 00 00 08 00 00 00 4E 00 6F 00 46 00 ..........N.o.F.",
|
||||
"0050: 69 00 6C 00 74 00 65 00 72 00 01 00 03 00 01 00 i.l.t.e.r.......",
|
||||
"0060: FF 82 07 00 82 81 00 00 01 00 00 00 1D 00 00 00 ................",
|
||||
"0070: 4F 00 74 00 4F 00 70 00 63 00 55 00 61 00 50 00 O.t.O.p.c.U.a.P.",
|
||||
"0080: 61 00 72 00 69 00 74 00 79 00 54 00 65 00 73 00 a.r.i.t.y.T.e.s.",
|
||||
"0090: 74 00 5F 00 30 00 30 00 31 00 2E 00 43 00 6F 00 t._.0.0.1...C.o.",
|
||||
"00A0: 75 00 6E 00 74 00 65 00 72 00 64 00 01 01 00 00 u.n.t.e.r.d.....",
|
||||
"00B0: 01 00 00 01 00 00 09 00 00 00 00 00 00 00 00 00 ................",
|
||||
"00C0: 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................",
|
||||
"00D0: 00 60 DE FB 74 05 00 00 00 00 00 00 00 00 00 00 .`..t...........",
|
||||
"00E0: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................",
|
||||
"00F0: 00 00 00 00 00 00 00 00 00 00 00 ..........."
|
||||
],
|
||||
"Sha256": "fc3a2fcc28d1926d2bd1de477e306cb0930e80a3327be6309b6e834e2951ca26"
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"Sha256": "3581ef3b42b59b46503d1aa0127fa60fe4b40943e419aeab99e47e4683888851",
|
||||
"Length": 251,
|
||||
"Hex": [
|
||||
"0000: 09 00 02 00 00 00 00 00 00 00 00 00 00 00 02 E1 ................",
|
||||
"0010: 27 30 75 D9 DC 01 02 A1 91 5A 3E DA DC 01 00 00 '0u......Z>.....",
|
||||
"0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 ................",
|
||||
"0030: 00 00 55 00 54 00 43 00 01 00 00 00 00 00 01 00 ..U.T.C.........",
|
||||
"0040: FF 01 00 00 00 00 08 00 00 00 4E 00 6F 00 46 00 ..........N.o.F.",
|
||||
"0050: 69 00 6C 00 74 00 65 00 72 00 01 00 03 00 01 00 i.l.t.e.r.......",
|
||||
"0060: FF 82 07 00 82 81 00 00 01 00 00 00 1D 00 00 00 ................",
|
||||
"0070: 4F 00 74 00 4F 00 70 00 63 00 55 00 61 00 50 00 O.t.O.p.c.U.a.P.",
|
||||
"0080: 61 00 72 00 69 00 74 00 79 00 54 00 65 00 73 00 a.r.i.t.y.T.e.s.",
|
||||
"0090: 74 00 5F 00 30 00 30 00 31 00 2E 00 43 00 6F 00 t._.0.0.1...C.o.",
|
||||
"00A0: 75 00 6E 00 74 00 65 00 72 00 64 00 01 01 00 00 u.n.t.e.r.d.....",
|
||||
"00B0: 01 00 00 01 00 00 09 00 00 00 00 00 00 00 00 00 ................",
|
||||
"00C0: 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................",
|
||||
"00D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................",
|
||||
"00E0: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................",
|
||||
"00F0: 00 00 00 00 00 00 00 00 00 00 00 ..........."
|
||||
]
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"ResolutionDouble": 600000000.0,
|
||||
"ResolutionTicks": 6000000000000,
|
||||
"QueryType": 5,
|
||||
"Hex": [
|
||||
"0000: 09 00 05 00 00 00 00 00 00 00 00 00 00 00 7B DD ..............{.",
|
||||
"0010: 42 DB 76 D9 DC 01 7B 9D AC 05 40 DA DC 01 00 00 B.v...{...@.....",
|
||||
"0020: 00 00 A3 E1 C1 41 00 00 00 00 00 00 00 00 03 00 .....A..........",
|
||||
"0030: 00 00 55 00 54 00 43 00 01 00 00 00 00 00 01 00 ..U.T.C.........",
|
||||
"0040: FF 01 00 00 00 00 08 00 00 00 4E 00 6F 00 46 00 ..........N.o.F.",
|
||||
"0050: 69 00 6C 00 74 00 65 00 72 00 01 00 03 00 01 00 i.l.t.e.r.......",
|
||||
"0060: FF 82 07 00 82 81 00 00 01 00 00 00 1D 00 00 00 ................",
|
||||
"0070: 4F 00 74 00 4F 00 70 00 63 00 55 00 61 00 50 00 O.t.O.p.c.U.a.P.",
|
||||
"0080: 61 00 72 00 69 00 74 00 79 00 54 00 65 00 73 00 a.r.i.t.y.T.e.s.",
|
||||
"0090: 74 00 5F 00 30 00 30 00 31 00 2E 00 43 00 6F 00 t._.0.0.1...C.o.",
|
||||
"00A0: 75 00 6E 00 74 00 65 00 72 00 64 00 01 01 00 00 u.n.t.e.r.d.....",
|
||||
"00B0: 01 00 00 01 00 00 09 00 00 00 00 00 00 00 00 00 ................",
|
||||
"00C0: 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................",
|
||||
"00D0: 00 60 DE FB 74 05 00 00 00 00 00 00 00 00 00 00 .`..t...........",
|
||||
"00E0: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................",
|
||||
"00F0: 00 00 00 00 00 00 00 00 00 00 00 ..........."
|
||||
],
|
||||
"Sha256": "954874bf851bdea6333b8a8159f036e19b124b7a5febefb0cb9c9a8564b20981",
|
||||
"EndUtc": "2026-05-02T14:29:02.2232955Z",
|
||||
"Length": 251,
|
||||
"StartUtc": "2026-05-01T14:29:02.2232955Z"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"EndUtc": "2026-05-02T14:39:36.8001646Z",
|
||||
"Length": 65,
|
||||
"SkipCount": 0,
|
||||
"Hex": [
|
||||
"0000: 05 00 6E 1C 05 57 C1 D4 DC 01 6E 5C E9 7F 41 DA ..n..W....n\\..A.",
|
||||
"0010: DC 01 03 00 00 00 00 00 00 00 00 00 01 00 00 00 ................",
|
||||
"0020: 00 00 00 00 00 00 00 01 00 03 00 00 00 55 00 54 .............U.T",
|
||||
"0030: 00 43 00 01 01 00 00 01 00 00 01 00 00 00 00 00 .C..............",
|
||||
"0040: 00 ."
|
||||
],
|
||||
"StartUtc": "2026-04-25T14:39:36.8001646Z",
|
||||
"ResultBufferSize": 65536,
|
||||
"UnknownU16_28": 1,
|
||||
"EventOrder": 0,
|
||||
"Version": 5,
|
||||
"QueryType": 3,
|
||||
"Sha256": "6b955b02087047a3199a8c74f3eee85c3b49aaa29b05de12eff2dd536f2da0d5"
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"LatestRequest": {
|
||||
"Phase": "StartTagQuery.Request",
|
||||
"Length": 4,
|
||||
"Sha256": "17956e4fbe53d5edc0f9170203b013432e4afcc0591c795a10522a98d9fce926",
|
||||
"NativeTagFilter": "TagName eq 'OtOpcUaParityTest_001.Counter'",
|
||||
"Fields": {
|
||||
"Marker": 26449,
|
||||
"Version": 1
|
||||
},
|
||||
"Hex": "51 67 01 00"
|
||||
},
|
||||
"EarlierCapturedRequestCandidate": {
|
||||
"Phase": "StartTagQuery.Request",
|
||||
"Length": 92,
|
||||
"Sha256": "af1dbcdd3eb0ad91a18882c22252aa74aff82998e96a39b63415ab4792a962ac",
|
||||
"NativeTagFilter": "TagName eq 'OtOpcUaParityTest_001.Counter'",
|
||||
"Fields": {
|
||||
"Marker": 26449,
|
||||
"Version": 1,
|
||||
"FilterLength": 42,
|
||||
"FilterEncoding": "UTF-16LE without terminator",
|
||||
"FilterOffset": "0x0008"
|
||||
},
|
||||
"Hex": "51 67 01 00 2A 00 00 00 54 00 61 00 67 00 4E 00 61 00 6D 00 65 00 20 00 65 00 71 00 20 00 27 00 4F 00 74 00 4F 00 70 00 63 00 55 00 61 00 50 00 61 00 72 00 69 00 74 00 79 00 54 00 65 00 73 00 74 00 5F 00 30 00 30 00 31 00 2E 00 43 00 6F 00 75 00 6E 00 74 00 65 00 72 00 27 00"
|
||||
},
|
||||
"Response": {
|
||||
"Phase": "StartTagQuery.Response",
|
||||
"Length": 8,
|
||||
"Sha256": "3f36b44b323f7d4760626302368f492bced79999112a9b7f9dbd2544326b2c7e",
|
||||
"Fields": {
|
||||
"QueryHandle": 12,
|
||||
"TagCount": 1
|
||||
},
|
||||
"Hex": "0C 00 00 00 01 00 00 00"
|
||||
},
|
||||
"NativeResult": {
|
||||
"StartQuerySuccess": true,
|
||||
"TagNames": [
|
||||
"OtOpcUaParityTest_001.Counter"
|
||||
],
|
||||
"TagInfo": [
|
||||
{
|
||||
"TagName": "OtOpcUaParityTest_001.Counter",
|
||||
"TagKey": 238,
|
||||
"TagDataType": 4,
|
||||
"TagStorageType": 3,
|
||||
"EngineeringUnit": "None"
|
||||
}
|
||||
]
|
||||
},
|
||||
"ManagedReplayResult": {
|
||||
"HeaderOnlyRequestWithOpen2DerivedHandles": "negative",
|
||||
"FilterRequestWithOpen2DerivedHandles": "negative",
|
||||
"ErrorCodes": [
|
||||
51,
|
||||
1
|
||||
]
|
||||
},
|
||||
"Notes": "Raw instrumentation capture is retained only under ignored artifacts. The tag name is the deterministic local parity test tag. Latest combined instrumentation shows the successful WCF StartTagQuery request is header-only; the filter was already processed by an earlier native metadata layer before this WCF call."
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
{
|
||||
"Scenario": "TagQuery.GetTagInfo",
|
||||
"CapturedUtc": "2026-05-02T16:17:47Z",
|
||||
"Server": "<redacted-local-dev-historian>",
|
||||
"ClientDllSet": "current",
|
||||
"TagFilter": "TagName eq 'OtOpcUaParityTest_001.Counter'",
|
||||
"TagName": "OtOpcUaParityTest_001.Counter",
|
||||
"Instrumentation": {
|
||||
"Command": "instrument-tagquery-gettaginfo",
|
||||
"ResponseMethod": "aahClientCommon.CClientCommon.GetTagInfos",
|
||||
"ResponseMethodToken": "0x06002EC9",
|
||||
"ResponseInsertedAfterOffset": "0x01B3",
|
||||
"VectorMethod": "ArchestrA.TagQuery.GetTagInfo",
|
||||
"VectorMethodToken": "0x06006310",
|
||||
"VectorInsertedAfterOffset": "0x0068"
|
||||
},
|
||||
"NativeSummary": {
|
||||
"TagCount": 1,
|
||||
"TagKey": 238,
|
||||
"TagDataType": 4,
|
||||
"TagStorageType": 3,
|
||||
"EngineeringUnit": "None"
|
||||
},
|
||||
"GetTagInfoResponseStream": {
|
||||
"Length": 106,
|
||||
"Sha256": "77b2bf720d8888f08a1499a8162e706c2cef567a1f6d74d7e92efe0cd3e3e34b",
|
||||
"Hex": [
|
||||
"01 00 00 00 03 C3 00 31 84 22 8C 40 58 E1 87 4A",
|
||||
"98 4B 3D BE CB E0 AA 42 EE 00 00 00 09 1D 00 4F",
|
||||
"74 4F 70 63 55 61 50 61 72 69 74 79 54 65 73 74",
|
||||
"5F 30 30 31 2E 43 6F 75 6E 74 65 72 09 04 00 4D",
|
||||
"44 41 53 02 03 01 02 00 00 00 D0 57 F4 94 65 D8",
|
||||
"DC 01 0A 00 00 00 00 00 00 00 24 40 00 00 00 00",
|
||||
"00 00 24 40 FE 00 00 00 00 00"
|
||||
],
|
||||
"ObservedFields": [
|
||||
{
|
||||
"Offset": "0x0000",
|
||||
"Type": "uint32",
|
||||
"Name": "TagCount",
|
||||
"Value": 1
|
||||
},
|
||||
{
|
||||
"Offset": "0x0004",
|
||||
"Type": "bytes[4]",
|
||||
"Name": "NativeDataTypeDescriptor",
|
||||
"ValueHex": "03 C3 00 31",
|
||||
"Notes": "Passed through CTagUtil.GetDataValueType; native wrapper exposes HistorianDataType 4 for this tag."
|
||||
},
|
||||
{
|
||||
"Offset": "0x0008",
|
||||
"Type": "GUID",
|
||||
"Name": "TypeId",
|
||||
"Value": "408c2284-e158-4a87-984b-3dbecbe0aa42"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0018",
|
||||
"Type": "uint32",
|
||||
"Name": "TagKey",
|
||||
"Value": 238
|
||||
},
|
||||
{
|
||||
"Offset": "0x001C",
|
||||
"Type": "compact-ascii-string",
|
||||
"Name": "TagName",
|
||||
"Encoding": "marker 0x09, uint16 byte length, ASCII/UTF-8 bytes",
|
||||
"Value": "OtOpcUaParityTest_001.Counter"
|
||||
},
|
||||
{
|
||||
"Offset": "0x003C",
|
||||
"Type": "compact-ascii-string",
|
||||
"Name": "MetadataProvider",
|
||||
"Encoding": "marker 0x09, uint16 byte length, ASCII/UTF-8 bytes",
|
||||
"Value": "MDAS",
|
||||
"Notes": "Observed in the stream but not exposed by HistorianTag summary for this scenario."
|
||||
},
|
||||
{
|
||||
"Offset": "0x0043",
|
||||
"Type": "uint8",
|
||||
"Name": "NativeTagClass",
|
||||
"Value": 2
|
||||
},
|
||||
{
|
||||
"Offset": "0x0044",
|
||||
"Type": "uint8",
|
||||
"Name": "TagStorageType",
|
||||
"Value": 3
|
||||
},
|
||||
{
|
||||
"Offset": "0x0045",
|
||||
"Type": "uint8",
|
||||
"Name": "TagDeadbandType",
|
||||
"Value": 1
|
||||
},
|
||||
{
|
||||
"Offset": "0x0046",
|
||||
"Type": "uint8",
|
||||
"Name": "InterpolationType",
|
||||
"Value": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"CTagMetadataVector": {
|
||||
"ElementSize": 224,
|
||||
"Count": 1,
|
||||
"CapturedLength": 224,
|
||||
"Sha256": "6df4a5a837d06df9332391eb7350af17804137b87541dad8556ca04d015e2995",
|
||||
"ConfirmedOffsetsFromLoadFromTagMetadata": [
|
||||
{
|
||||
"Offset": "0x0030",
|
||||
"Type": "uint32",
|
||||
"Name": "TagKey",
|
||||
"Value": 238
|
||||
},
|
||||
{
|
||||
"Offset": "0x0038",
|
||||
"Type": "std::wstring",
|
||||
"Name": "TagName"
|
||||
},
|
||||
{
|
||||
"Offset": "0x0058",
|
||||
"Type": "std::wstring",
|
||||
"Name": "Description"
|
||||
},
|
||||
{
|
||||
"Offset": "0x00C1",
|
||||
"Type": "uint8",
|
||||
"Name": "TagStorageType",
|
||||
"Value": 3
|
||||
},
|
||||
{
|
||||
"Offset": "0x00C2",
|
||||
"Type": "uint8",
|
||||
"Name": "TagDeadbandType",
|
||||
"Value": 1
|
||||
},
|
||||
{
|
||||
"Offset": "0x00C5",
|
||||
"Type": "uint8",
|
||||
"Name": "ServerTimestampFlag"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
[
|
||||
{
|
||||
"PayloadAttempt": "ctagmetadata-only",
|
||||
"PayloadByteCount": 82,
|
||||
"PayloadSha256": "b5a4a6fe4034eee387b0a101880342ff813bbe43ebb0223153d6c55deb4ec0bc",
|
||||
"ClientHandle": 1377137158,
|
||||
"OpenSuccess": true,
|
||||
"AddReturnCode": 4,
|
||||
"AddOutputByteCount": 0,
|
||||
"AddOutputByteArrayLength": null,
|
||||
"AddOutputSha256": null,
|
||||
"EventRequestSha256": "bfab8e158182c2267e697e34cba63309f9d0c6370a278b1fad6c6d3ed23f10cf",
|
||||
"StartSuccess": false,
|
||||
"QueryHandle": 0,
|
||||
"ResponseSize": 0,
|
||||
"ResponseByteCount": null,
|
||||
"ErrorSize": 0,
|
||||
"NativeErrorCode": null,
|
||||
"OpenErrorSize": null,
|
||||
"OpenNativeErrorCode": null,
|
||||
"Error": null
|
||||
},
|
||||
{
|
||||
"PayloadAttempt": "vector-count-plus-ctagmetadata",
|
||||
"PayloadByteCount": 86,
|
||||
"PayloadSha256": "0de082155d82ca453356af7562086277fc4edd7c8bc09e16812bd66a2aa54d13",
|
||||
"ClientHandle": 878448276,
|
||||
"OpenSuccess": true,
|
||||
"AddReturnCode": 4,
|
||||
"AddOutputByteCount": 0,
|
||||
"AddOutputByteArrayLength": null,
|
||||
"AddOutputSha256": null,
|
||||
"EventRequestSha256": "bfab8e158182c2267e697e34cba63309f9d0c6370a278b1fad6c6d3ed23f10cf",
|
||||
"StartSuccess": false,
|
||||
"QueryHandle": 0,
|
||||
"ResponseSize": 0,
|
||||
"ResponseByteCount": null,
|
||||
"ErrorSize": 0,
|
||||
"NativeErrorCode": null,
|
||||
"OpenErrorSize": null,
|
||||
"OpenNativeErrorCode": null,
|
||||
"Error": null
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,34 @@
|
||||
[
|
||||
{
|
||||
"Service": "HistCert",
|
||||
"Endpoint": "net.tcp://localhost:32568/HistCert",
|
||||
"Success": true,
|
||||
"ReturnCode": 0,
|
||||
"InterfaceVersion": 11,
|
||||
"Error": null
|
||||
},
|
||||
{
|
||||
"Service": "HCAP/HistCert",
|
||||
"Endpoint": "net.tcp://localhost:32568/HCAP/HistCert",
|
||||
"Success": false,
|
||||
"ReturnCode": null,
|
||||
"InterfaceVersion": null,
|
||||
"Error": "EndpointNotFoundException: There was no endpoint listening at net.tcp://localhost:32568/HCAP/HistCert that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details."
|
||||
},
|
||||
{
|
||||
"Service": "hcap/HistCert",
|
||||
"Endpoint": "net.tcp://localhost:32568/hcap/HistCert",
|
||||
"Success": false,
|
||||
"ReturnCode": null,
|
||||
"InterfaceVersion": null,
|
||||
"Error": "EndpointNotFoundException: There was no endpoint listening at net.tcp://localhost:32568/hcap/HistCert that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details."
|
||||
},
|
||||
{
|
||||
"Service": "aa/HistCert",
|
||||
"Endpoint": "net.tcp://localhost:32568/aa/HistCert",
|
||||
"Success": false,
|
||||
"ReturnCode": null,
|
||||
"InterfaceVersion": null,
|
||||
"Error": "EndpointNotFoundException: There was no endpoint listening at net.tcp://localhost:32568/aa/HistCert that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,34 @@
|
||||
[
|
||||
{
|
||||
"Service": "HistCert",
|
||||
"Endpoint": "net.tcp://10.100.0.48:32568/HistCert",
|
||||
"Success": false,
|
||||
"ReturnCode": null,
|
||||
"InterfaceVersion": null,
|
||||
"Error": "MessageSecurityException: Identity check failed for outgoing message. The expected DNS identity of the remote endpoint was \u002710.100.0.48\u0027 but the remote endpoint provided DNS claim \u0027localhost\u0027. If this is a legitimate remote endpoint, you can fix the problem by explicitly specifying DNS identity \u0027localhost\u0027 as the Identity property of EndpointAddress when creating channel proxy. "
|
||||
},
|
||||
{
|
||||
"Service": "HCAP/HistCert",
|
||||
"Endpoint": "net.tcp://10.100.0.48:32568/HCAP/HistCert",
|
||||
"Success": false,
|
||||
"ReturnCode": null,
|
||||
"InterfaceVersion": null,
|
||||
"Error": "EndpointNotFoundException: There was no endpoint listening at net.tcp://10.100.0.48:32568/HCAP/HistCert that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details."
|
||||
},
|
||||
{
|
||||
"Service": "hcap/HistCert",
|
||||
"Endpoint": "net.tcp://10.100.0.48:32568/hcap/HistCert",
|
||||
"Success": false,
|
||||
"ReturnCode": null,
|
||||
"InterfaceVersion": null,
|
||||
"Error": "EndpointNotFoundException: There was no endpoint listening at net.tcp://10.100.0.48:32568/hcap/HistCert that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details."
|
||||
},
|
||||
{
|
||||
"Service": "aa/HistCert",
|
||||
"Endpoint": "net.tcp://10.100.0.48:32568/aa/HistCert",
|
||||
"Success": false,
|
||||
"ReturnCode": null,
|
||||
"InterfaceVersion": null,
|
||||
"Error": "EndpointNotFoundException: There was no endpoint listening at net.tcp://10.100.0.48:32568/aa/HistCert that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,34 @@
|
||||
[
|
||||
{
|
||||
"Service": "HistCert",
|
||||
"Endpoint": "net.tcp://10.100.0.48:32568/HistCert",
|
||||
"Success": true,
|
||||
"ReturnCode": 0,
|
||||
"InterfaceVersion": 11,
|
||||
"Error": null
|
||||
},
|
||||
{
|
||||
"Service": "HCAP/HistCert",
|
||||
"Endpoint": "net.tcp://10.100.0.48:32568/HCAP/HistCert",
|
||||
"Success": false,
|
||||
"ReturnCode": null,
|
||||
"InterfaceVersion": null,
|
||||
"Error": "EndpointNotFoundException: There was no endpoint listening at net.tcp://10.100.0.48:32568/HCAP/HistCert that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details."
|
||||
},
|
||||
{
|
||||
"Service": "hcap/HistCert",
|
||||
"Endpoint": "net.tcp://10.100.0.48:32568/hcap/HistCert",
|
||||
"Success": false,
|
||||
"ReturnCode": null,
|
||||
"InterfaceVersion": null,
|
||||
"Error": "EndpointNotFoundException: There was no endpoint listening at net.tcp://10.100.0.48:32568/hcap/HistCert that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details."
|
||||
},
|
||||
{
|
||||
"Service": "aa/HistCert",
|
||||
"Endpoint": "net.tcp://10.100.0.48:32568/aa/HistCert",
|
||||
"Success": false,
|
||||
"ReturnCode": null,
|
||||
"InterfaceVersion": null,
|
||||
"Error": "EndpointNotFoundException: There was no endpoint listening at net.tcp://10.100.0.48:32568/aa/HistCert that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,163 @@
|
||||
# WCF Contract Evidence
|
||||
|
||||
## Local run evidence
|
||||
|
||||
- `current\aahClient.dll` export inventory ran successfully. SHA256:
|
||||
`77a778988e2d8f2d0e88113f8c8b0788a0ef34fa5134938a353976778144dc83`.
|
||||
- `ArchestrA.HistorianAccess.OpenConnection` succeeded against `localhost:32568`
|
||||
using `HistorianConnectionArgs` with `ConnectionType=Process` and `ReadOnly=true`.
|
||||
- Holding that native connection open produced established TCP sessions from the
|
||||
native PowerShell process to `127.0.0.1:32568`; the server-side listener was
|
||||
owned by `SMSvcHost.exe`, consistent with WCF Net.TCP port sharing.
|
||||
- The managed harness command
|
||||
`dotnet run --no-build --project tools\AVEVA.Historian.ReverseEngineering -- wcf-probe localhost 32568`
|
||||
successfully called `GetV` through fully managed WCF/MDAS:
|
||||
- `net.tcp://localhost:32568/Hist` returned version `11`
|
||||
- `net.tcp://localhost:32568/Retr` returned version `4`
|
||||
- `net.tcp://localhost:32568/Stat` returned version `0`
|
||||
- `net.tcp://localhost:32568/Trx` returned version `2`
|
||||
- `net.tcp://localhost:32568/Storage` did not listen on this local install
|
||||
- `net.tcp://localhost:32568/HistCert` and `/Hist-Integrated` reset when
|
||||
called with the plain managed `GetV` contract, while prefixed variants such
|
||||
as `/HCAP/HistCert` returned `EndpointNotFound`
|
||||
Sanitized output is stored in `docs\reverse-engineering\wcf-probe-localhost.json`.
|
||||
- `netsh trace` and `pktmon` produced ETL files under
|
||||
`%TEMP%\histsdk-captures`, but their converted PCAPNG files contained zero
|
||||
packets. Built-in Windows packet capture is not sufficient for loopback
|
||||
evidence on this machine.
|
||||
- A dedicated managed certificate-binding probe now reaches `HistCert.GetV`
|
||||
through MDAS over WCF Net.TCP transport security:
|
||||
- `net.tcp://localhost:32568/HistCert` returned version `11`
|
||||
- `net.tcp://10.100.0.48:32568/HistCert` initially failed endpoint identity
|
||||
validation because the server certificate presented DNS identity
|
||||
`localhost`
|
||||
- the same remote endpoint returned version `11` when the client supplied
|
||||
endpoint DNS identity `localhost`
|
||||
Sanitized outputs are stored in
|
||||
`docs\reverse-engineering\wcf-cert-probe-localhost-latest.json`,
|
||||
`docs\reverse-engineering\wcf-cert-probe-remote-latest.json`, and
|
||||
`docs\reverse-engineering\wcf-cert-probe-remote-localhost-identity-latest.json`.
|
||||
- The same remote server also accepts the plain managed WCF/MDAS probe on the
|
||||
expected non-security-specific service paths:
|
||||
- `net.tcp://10.100.0.48:32568/Hist` returned version `11`
|
||||
- `net.tcp://10.100.0.48:32568/Retr` returned version `4`
|
||||
- `net.tcp://10.100.0.48:32568/Stat` returned version `0`
|
||||
- `net.tcp://10.100.0.48:32568/Trx` returned version `2`
|
||||
Sanitized output is stored in
|
||||
`docs\reverse-engineering\wcf-probe-remote-latest.json`.
|
||||
- Managed remote `Open2` evidence matches localhost: integrated Windows auth
|
||||
succeeds on `net.tcp://10.100.0.48:32568/Hist-Integrated`, while the same
|
||||
Windows transport binding fails on plain `/Hist` before dispatch. The
|
||||
successful returned handle is accepted by `Retr.IsOriginalAllowed`. Session
|
||||
output bytes and transient handle values are redacted in
|
||||
`docs\reverse-engineering\wcf-open2-remote-latest.json`.
|
||||
- Managed remote `StartQuery2` evidence is still negative but sharper: all 22
|
||||
reconstructed `DataQueryRequest` variants successfully open the integrated
|
||||
session and pass `Retr.IsOriginalAllowed`, then `StartQuery2` returns `false`
|
||||
with zero response and error sizes. The legacy `StartQuery` call returns code
|
||||
`238` for each request and also returns zero response size/no response buffer.
|
||||
Sanitized request hashes are stored in
|
||||
`docs\reverse-engineering\wcf-start-query-remote-latest.json`.
|
||||
- A later bounded managed replay of the first byte-matched full-history
|
||||
candidate used the same integrated open and `Retr.IsOriginalAllowed` path;
|
||||
`StartQuery2` still returned `false` with zero response/error sizes, while
|
||||
legacy `StartQuery` faulted with a server null-reference. This keeps
|
||||
`Open2` as useful connection evidence, but not as a viable replacement for
|
||||
the native `OpenConnection3` session state required by query reads.
|
||||
- Managed wildcard tag browse remains positive evidence for an `Open2`-backed
|
||||
operation: `Retr.StartLikeTagNameSearch` returned `0`, and one
|
||||
`GetLikeTagnames` batch returned the deterministic 66-byte single-tag buffer
|
||||
with SHA-256
|
||||
`2d450a55f392aed0026e9a957fefa3b116aab6ec81912c5d824c6b9a1ff5a4a1`.
|
||||
- Managed remote scalar tag calls also accept the integrated session handle:
|
||||
`Retr.GetTagTypeFromName` returns code `0` and tag type `1` for
|
||||
`OtOpcUaParityTest_001.Counter`; `Retr.IsManualTag` returns code `0` and
|
||||
`false`; legacy `Retr.GetTagInfoFromName` returns `238` with zero metadata
|
||||
bytes. Five `GetTgByNm` tag-name buffer variants and five `GetTg` tag-id
|
||||
buffer variants all return `238`, sequence `0`, and zero output bytes. This
|
||||
suggests the calls are reaching server logic but the metadata-returning
|
||||
contract shape or request buffer is still incomplete. Sanitized output is
|
||||
stored in
|
||||
`docs\reverse-engineering\wcf-tag-info-remote-latest.json`.
|
||||
|
||||
## Decompiled service contracts
|
||||
|
||||
`current\aahClientManaged.dll` contains WCF contracts with namespace `aa`:
|
||||
|
||||
- `HistoryServiceContract.IHistoryServiceContract`
|
||||
- `[ServiceContract(Name = "Hist", Namespace = "aa")]`
|
||||
- `GetInterfaceVersion` as operation `GetV`
|
||||
- `OpenConnection` as operation `Open`
|
||||
- `CloseConnection` as operation `Close`
|
||||
- `ValidateClient` as operation `VldC`
|
||||
- `UpdateClientStatus` as operation `UpdC`
|
||||
- `AddTags` as `AddT`, `RegisterTags` as `RTag`
|
||||
- `AddStreamValues` as `AddS`, `SetClientTimeOut` as `SetT`
|
||||
- `HistoryServiceContract.IHistoryServiceContract2`
|
||||
- `[ServiceContract(Name = "Hist", Namespace = "aa")]`
|
||||
- byte-buffer session open uses `OpenConnection2` as operation `Open2`
|
||||
- extended client status uses `UpdC2` / `UpdC3`
|
||||
- extended write and maintenance calls include `EnsT`, `DelT`, `AddS2`,
|
||||
`ExKey`, `ValCl`, and `GetI`
|
||||
- `RetrievalServiceContract.IRetrievalServiceContract`
|
||||
- `[ServiceContract(Name = "Retr", Namespace = "aa")]`
|
||||
- `StartQuery`, `GetNextQueryResultBuffer`, `EndQuery` use default
|
||||
operation names
|
||||
- tag type/name helpers and tag info calls use default operation names
|
||||
- `RetrievalServiceContract.IRetrievalServiceContract2/3/4`
|
||||
- extended bool/error-buffer variants
|
||||
- SQL/recordset byte stream calls
|
||||
- tag query calls `QTB`, `QTG`, `QTE`
|
||||
- event query calls use default operation names
|
||||
- extended property calls include `GetTgByNm2` and `GetTepByNm`
|
||||
- `StorageServiceContract.IStorageServiceContract`
|
||||
- `[ServiceContract(Name = "Storage", Namespace = "aa")]`
|
||||
- storage/session, metadata, streamed-value, block, snapshot, and delete-tag
|
||||
calls
|
||||
- `StatusServiceContract.IStatusServiceContract`
|
||||
- `[ServiceContract(Name = "Stat", Namespace = "aa")]`
|
||||
- `GetInterfaceVersion` as `GetV`
|
||||
- server time, timezone, DB case sensitivity, and logging use default
|
||||
operation names
|
||||
- `StatusServiceContract.IStatusServiceContract2`
|
||||
- extended status operations include `GetSystemParameter`, `GetTimeZoneNames`,
|
||||
license checks, historian info, and process/ping helpers
|
||||
- ping and historian-info helpers use aliases `PNGS`, `PNGP`, and `GETHI`
|
||||
- `TransactionServiceContract.ITransactionServiceContract`
|
||||
- `[ServiceContract(Name = "Trx", Namespace = "aa")]`
|
||||
- snapshot forwarding and non-streamed value transactions
|
||||
|
||||
`aahMDASEncoder.ClientMessageEncoder` wraps an inner WCF encoder and exposes
|
||||
media/content type `application/x-mdas`. This means the first managed driver
|
||||
transport target should be WCF Net.TCP plus the MDAS content-type encoder, not
|
||||
the earlier speculative raw-frame layer.
|
||||
|
||||
## Current unknowns
|
||||
|
||||
- Endpoint URI paths `net.tcp://{host}:32568/Hist`, `/Retr`, `/Stat`, and
|
||||
`/Trx` are confirmed for `GetV` calls on the local 2020 install.
|
||||
- Relay and local WCF probe evidence also identify security-specific history
|
||||
endpoints `/HistCert` and `/Hist-Integrated`. `/HistCert` is confirmed as a
|
||||
`Hist` contract endpoint when called with MDAS over TLS transport security;
|
||||
`/Hist-Integrated` remains the Windows negotiate endpoint for integrated
|
||||
session open.
|
||||
- Managed `Open2` evidence confirms `/Hist-Integrated` is the correct endpoint
|
||||
for integrated Windows auth. The plain `/Hist` endpoint rejects the Windows
|
||||
transport-security upgrade before dispatching the operation.
|
||||
- The storage contract is confirmed statically, but `/Storage` was not a
|
||||
listening endpoint in the local probe; storage may be routed through
|
||||
session-specific storage/shard endpoints.
|
||||
- `Hist.OpenConnection` reaches server logic, but the native password/session
|
||||
packet encoding is not decoded yet. See `wcf-open-localhost.md`.
|
||||
- `Hist.Open2` is confirmed reachable with a managed version-1 byte buffer.
|
||||
Empty credentials return custom native error `171` (`AuthenticationFailed`),
|
||||
and the harness decodes observed five-byte error buffers as type plus
|
||||
little-endian error code. This confirms framing has progressed past
|
||||
packet-version rejection. See `wcf-open2-localhost.md`.
|
||||
- `Stat` is reachable, but `CStatusConnectionWCF.GetServerTime` is a no-op stub
|
||||
in the decompiled native WCF path and handle-dependent status calls fail with
|
||||
handle `0`. See `wcf-status-localhost.md`.
|
||||
- Query request and response byte-buffer layouts are still proprietary payloads
|
||||
inside WCF operations such as `StartQuery` and `GetNextQueryResultBuffer`.
|
||||
- Write payload layouts remain out of scope until read/query payloads are
|
||||
decoded and fixture-backed.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user