Sie können nicht einfach D3DLOCKED_RECT.pBits übergeben. Sie müssen erst die Surface in eine Pixelstruktur umwandeln und dazu den D3DLOCKED_RECT.Pitch auswerten. Sie brauchen auch die D3DSURFACE_DESC, sonst kennen Sie ja die Größe der Textur nicht.

Allokieren Sie einen Buffer für die Pixels und kopieren Sie die pBits zeilenweise dort hinein, wobei Sie nach jeder Zeile den Pitch addieren. Dadurch bekommen Sie einen zusammenhängenden Pixelbuffer. Erst diesen Buffer können Sie dann im MDL abspeichern.