Shared Memory-Bereich im NDK

Ich möchte einen gemeinsam genutzten Speicherblock (einashmem Region), die vom nativen Code aus zugeordnet und abgerufen wird. Ich möchte auch, dass dieser Block von mehreren Anwendungen verwendet wird. Ich möchte auch, dass es mit SDK Level 7 (Android 2.1) funktioniert.

Es gibt zwei Routen. Ich kann eine Ashmem-Region in nativem Code erstellen. Aber dann lautet die Frage: Wie übergebe ich einen Integer-Dateideskriptor an einen anderen Prozess? Sie können MarschallFileDescriptor Objekte über aParcel, aber es gibt keine Möglichkeit, eine um eine rohe FD zu konstruieren. Es gibt auchParcelFileDescriptor Dies unterstützt das Erstellen und Abrufen von Ganzzahl-FDs, die entsprechenden Methoden werden jedoch nur in SDK-Level 12 oder höher unterstützt.

Alternativ kann ich auch eine erstellenMemoryFile. Da ist einflüchtiger Weg um es in Paketen weiterzugeben. Aber wie kann ich einen Dateideskriptor daraus abrufen, damit der native Code etwas zu tun hat?mmap()?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage