Summary of what I found so far:
1. `MediaSession::Shutdown` definitely calls `MediaSink::Shutdown`. And it doesn't call `MFActivate::ShutdownObject`. 2. When topology is resolved, neither the original topology nodes nor the resolved topology nodes keep a reference to the `MFActivate` objects, but something else does. I am not sure what's keeping the references. Those references are released when the session is shutdown. 3. I am not sure what the stored `MFActivate` is used for. If `ActivateObject` hasn't been called when session is shut down, obviously `ShutdownObject` won't be called; but when `ActivateObject` has been called, the created objects are shutdown directly via `MediaSink::Shutdown`. `ShutdownObject` isn't called either way. 4. And BTW, we are calling `ActivateObject` too early. I think native doesn't call it until `MediaSession::Start`. 5. `MediaSession::SetTopology` with `MFSESSION_SETTOPOLOGY_CLEAR_CURRENT` doesn't shutdown the cleared topology. In fact, the cleared topology continues to run, `ProcessSample` is still called, etc. 6. `ClearTopologies()` doesn't generate a `MESessionTopologiesCleared` if there's no queued topologies.