- Remove random pipe name suffix (_XXXX) — pipe name is now static
from listener config, identity is via UUID in protocol
- Refactor SmbSend to persistent handle model: pipe created once,
stays open for session lifetime with TasksRead flag alternating
between read (Call 1) and write (Call 2) phases
- Refactor Pivot::Exchange to use stored child handle directly
instead of closing and reconnecting via CreateFileA each cycle
- Make pipename optional in link command — auto-resolved from
SMB listener config (SmbPipeName set during Generate)
- PIPE_UNLIMITED_INSTANCES handles multiple beacons on same host
- Error recovery: disconnect + recreate pipe on failure