Copier des données à partir de IntPtr à IntPtr

J'ai deux IntPtr valeurs pointant vers certaines zones de données de length octets. length peut avoir un ordre de grandeur de 200 à 400.

            int length = /* ..*/
            IntPtr ptrSrc = /*.. */;
            IntPtr ptrDst = /* .. */;

Maintenant je veux copier les données à partir de ptrSrc à ptrDst. Ce code fonctionne:

            byte[] data = new byte[length];
            Marshal.Copy(ptrSrc, data, 0, length);
            Marshal.Copy(data, 0, ptrDst, length);

mais il a l'inconvénient d'avoir besoin temporaire supplémentaire (potentiellement énorme) tableau. Malheureusement, je ne pouvais pas trouver un Marshal.Copy variante dans le .NET framework pour copier directement à partir de IntPtr à IntPtr, je suis à la recherche de solutions de rechange.

Je suis intéressé par une solution qui fonctionne sur Windows 32 comme 64 bits de Windows. Des suggestions?

  • Pouvez-vous utiliser unsafe ?
  • oui, c'est possible.
InformationsquelleAutor Doc Brown | 2013-04-12