Mag sein, daß es hier nicht relevant ist, weil der Rückgabewert gleich weiterverarbeitet wird, aber zeigt der Result von ExpandEnvironment nicht auf eventuell ungültigen Stackspeicher? lpDest liegt doch als lokale Variable auf dem Stack und der wird beim Verlassen der Methode freigegeben. (Mal abgesehen davon, daß der Methodenaufruf mal eben so 64k vom Stack abzwackt.)
Sowas kann Dir immer um die Ohren fliegen, je nachdem wie es weiterverarbeitet wird. Das wird bei uns als schwerer Fehler gewichtet und wenn man das öfter produziert steht wohl ein ernsthaftes Gespräch an.