Ohne die SaveArrays jetzt wirklich zu kennen: Wie ich das sehe, reicht es nicht einfach per
PpixelDataArr.pvData := Bmp.bmBits
die Daten zuweisen zu wollen. Ich würde hier
SafeArrayAccessData verwenden, um mir einen Zeiger auf die tatsächlichen Daten zu holen. Danach sollte ein
CopyMemory(PtrFromAccessDataAPI, Bmp.bmBits, size)
ausreichen, um die Daten zu kopieren. Abschließend aber
SafeArrayUnaccessData nicht vergessen.