Skip to main content

Running

Launch the app​

build\bin\Debug\MovieMaker.exe

A window titled "Windows Live Movie Maker" appears. The launcher is deliberately tiny (~94 KB, ~4.8 KB of code in the original) — all real work happens in MovieMakerCore.dll.

What happens at startup​

The full flow is described in Application Flow; in short:

Two details are load-bearing and deliberately preserved:

  1. Vectored Exception Handler — the launcher installs a VEH that intercepts MSVC C++ exception codes (0xe06d7363 and subcodes, including the undocumented 0x01994000) before the outer SEH catches the unwind. It is registered only after MovieMakerCore.dll is loaded and MovieMakerMain resolved — DLL loading happens without the handler active — and is removed after the call returns. This mirrors the original binary's RTTI-corruption paranoia. See Quirk #1.
  2. Single-instance mutexes — MovieMakerMain first creates Global\WindowsLiveMovieMaker_Sundance_SingleInstance (note the leaked codename; see Quirk #2), and SundanceAppMain::AcquireSingleInstanceMutex later takes a second mutex, Global\WindowsLiveMovieMaker_SundanceApp, during subsystem initialization. Both use the Global\ prefix (visible across Terminal Services sessions); if either already exists, the new process exits and activates the existing window.

Runtime environment notes​

  • Delay-loaded legacy DLLs — WLXPhotoSqm.dll, DmxBici.dll, wlidcli.dll, and uxcore.dll are delay-loaded in-process and do not ship on modern Windows. The code must (and does) survive their absence: telemetry becomes inert, identity falls back to no-op. If you delete them, the app still boots.
  • WARP fallback — the rendering engine prefers hardware D3D11 but falls back to WARP (software rasterization), which is the default path on machines without a GPU — as in the original. See Quirk #20.
  • Files on disk — the PSA authentication store writes only to %LOCALAPPDATA%\Microsoft\WL\MovieMaker\auth.dat, as a DPAPI-encrypted blob. Nothing else is persisted outside your build tree.

Supporting executables​

EXERoleHow to run
WLXTranscode.exeHeadless transcode helper used for publishing pipelinesNot a launcher — invoked by the app; do not run directly
WLXCodecHost.exeOut-of-process COM codec hostRegisters via DllRegisterServer-style COM activation; not a launcher

Only MovieMaker.exe is the application entry point.

Trying individual DLLs​

Each supporting DLL is COM-exported or plain-export driven. The exercise apps under apps/ (submodules) demonstrate consuming them:

AppExercises
apps/photoviewerPhoto viewing surfaces
apps/transition-pluginWLXPipetran transition API
apps/moviemaker-launcherLauncher / MovieMakerMain contract
apps/mediapublisherWLXMediaPublishSubscribe
apps/video-trimmerWLXVideoTrim
apps/metadata-editorMetadataSys
apps/slideshow-studioWLXSlideshow
apps/face-taggerWLXFaceRecognition
apps/movielibraryWLXMovieLibrary
apps/pipeline-graphWLXPipeline

Each app repository has its own README with build and run instructions.