c++ - Why MFTEnumEx() corrupts the stack? -


down below can see dummy code enumerating available multiplexers. on system there 1 mux available (as expected). when call mftenumex(), function succeeds, stack gets corrupted. that's why added 64k buffer. 16 bytes written @ offset 16. tried code on 2 different machines same result (windows 10). can explain this?

    byte buff[ 65536 ];     hresult hr;     hr = coinitialize( null );     atlassert( succeeded( hr ) );     hr = mfstartup( mf_version, mfstartup_full );     atlassert( succeeded( hr ) );      imfactivate ** ppactivate = null;     uint numactivate = 0;      hr = mftenumex( mft_category_multiplexer,                     mft_enum_flag_syncmft | mft_enum_flag_asyncmft | mft_enum_flag_hardware |                     mft_enum_flag_fieldofuse | mft_enum_flag_localmft | mft_enum_flag_transcode_only,                     null,                     null,                     &ppactivate,                     &numactivate ); 


Comments