Ich rufe eine Methode über Interop auf, die einen out IntPtr
-Parameter zurückgibt. Wie kann ich ein byte*
für dieses IntPtr
bekommen, damit ich es bearbeiten kann? Ich habe folgendes versucht:
aber es hat nicht funktioniert. Jede Hilfe wäre willkommen!
Wenn Sie in Ihrer Anwendung keinen unsicheren Code verwenden möchten, müssen Sie die Methoden in System.Runtime.InteropServices.Marshal
verwenden oder (noch besser) die Parametertypen Ihrer Interop-Funktionen deklarieren, damit das Marshalling automatisch erfolgt.
Ich wollte in meiner Anwendung keinen "unsicheren Code", also habe ich folgendes getan, um ein IntPtr in ein Byte [] zu konvertieren. Gegeben ein IntPtr namens "unsafeDataBlock":
%Vor%Dies schien bei mir zu funktionieren, ich habe nicht Interop benutzt, aber ich rief immer noch eine verwaltete C ++ Funktion von C Sharp an. Die verwaltete C ++ - Funktion hat jedoch nicht verwalteten Code aufgerufen, so dass sie das Gleiche wie Interop erreicht hat.
Wie auch immer, in der C ++ - Funktion, die von c-sharp aufgerufen wurde, habe ich diesen Code verwendet:
(anyPointerType *) Zeiger = (anyPointertyp *) myIntPtr.ToPointer ();
Tags und Links c#