Wenn du mehrere Prozessoren hast, solltest du mit Threads optimieren können. Gleichzeitiger Zugriff auf den Arbeitsspeicher ist nicht relevant, weil zumindest die unteren Level der Cache-Hierarchie auf jedem Prozessor einzeln vorhanden sind. Die Frage ist nur, ob die
DLL mehrere Threads verträgt - möglicherweise wird durch SetImage der Data-Zeiger wieder ungültig.
Deine Arbeit mit dem Bitmap scheint sich ja auf ein reines Kopieren der Daten zu beschränken. Bist du dir bezüglich der Reihenfolge der Bytes (erst Rot, dann Grün, dann Blau) sicher? Zumindest unter Windows ist nämlich die umgekehrte Reihenfolge üblich.