Lands the codec-only prerequisites for M2 wave 3 (callback exporter).
The TCP server itself (port of ManagedCallbackExporter.cs's TcpListener
+ accept loop) follows next iteration in the mxaccess-callback crate.
New modules
- nmx_metadata.rs (9 tests) — port of NmxProcedureMetadata.cs.
INmxService2 + INmxSvcCallback IIDs, NdrProcedureDescriptor with
per-opnum metadata for the 9 INmxService2 procedures (opnums 3..11)
and 2 INmxSvcCallback procedures (opnums 3, 4).
- nmx_callback_messages.rs (8 tests) — port of NmxSvcCallbackMessages.cs.
parse_callback_request decodes OrpcThis + i32 size + i32 max_count +
body bytes; encode_callback_response produces the 12-byte OrpcThat +
HRESULT response.
objref.rs additions
- ComObjRefBuilder::create_standard_objref (8 tests) — port of the
second class in ManagedCallbackExporter.cs:337-393. Pure-Rust OBJREF
emitter that builds 68-byte header + dual-string array. Note this is
*not* the Win32 CoMarshalInterface-based ComObjRefProvider.cs (still
open as F6); it's the higher-level emitter the callback exporter
uses to build OBJREF bytes from primitives.
- CALLBACK_OBJREF_AUTH_SERVICES const exposes the 7-entry auth-service
tower-id table (NTLM SSP through Kerberos extension) the .NET
reference advertises in every callback OBJREF.
Test count delta: 319 -> 344 (+25; mxaccess-rpc 102 -> 127, codec
unchanged at 215, parity unchanged at 2). All four DoD gates green.
Open followups touched: none new; F6 advances toward resolution but
the windows-rs Win32 wrapper part stays open.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>