Acceder a un archivo de recursos desde un complemento del sistema de archivos en SymbianOS

StackOverflow https://stackoverflow.com/questions/93578

  •  01-07-2019
  •  | 
  •  

Pregunta

No puedo usar la API de archivos de recursos desde un complemento del sistema de archivos debido a un problema de PlatSec:

*PlatSec* ERROR - Capability check failed - Can't load filesystemplugin.PXT because it links to bafl.dll which has the following capabilities missing: TCB 

Mi comprensión del problema es que:

Los complementos del sistema de archivos son archivos DLL que se ejecutan dentro del contexto del proceso del sistema de archivos.Por lo tanto, todos los complementos del sistema de archivos deben tener la TCB Privilegio de PlatSec, lo que a su vez significa que no pueden vincularse a una DLL que no esté en el TCB.

¿Hay alguna forma de solucionar esto (sin recurrir a un archivo de texto o a un servidor intermedio)?Sospecho que no, pero sería bueno obtener una respuesta definitiva.

¿Fue útil?

Solución

El servidor de archivos Symbian tiene las siguientes capacidades:

TCB ProtServ DiskAdmin AllFiles PowerMgmt CommDD

Por lo tanto, cualquier DLL que se cargue en el proceso del servidor de archivos debe tener al menos estas capacidades.No hay forma de evitar esto, salvo escribir un nuevo proceso de proxy como usted alude.

Sin embargo, hay una razón más fundamental por la que no deberías utilizar bafl.dll desde dentro de un complemento de servidor de archivos:Esta DLL proporciona funciones de utilidad que interactúan con la API del cliente del servidor de archivos.Intentar usarlo desde el servidor del archivador no funcionará;en el mejor de los casos, provocará que el servidor de archivos se bloquee cuando intente conectarse consigo mismo.

Sugeriría reconsiderar lo que está intentando hacer e investigar una API de servidor de archivos interno para lograrlo.

Otros consejos

El uso de las API RF/RFile/RDir desde un complemento de servidor de archivos no es seguro y puede provocar un punto muerto si no se tiene mucho cuidado.

Symbian 9.5 introducirá nuevas API (RFilePlugin, RFsPlugin y RDirPlugin) que deberían usarse en su lugar.

Existe un mecanismo adecuado para comunicarse con complementos, RPlugin.

No utilice RFile.Ni siquiera estoy seguro de que funcione ya que la ruta se verifica en Inicializar las funciones de RFile, que se llama antes de la pila de complementos.

Díganos qué tipo de datos está almacenando en el archivo de recursos.

Las cosas que normalmente van en archivos de recursos no tienen cabida en un complemento de servidor de archivos, incluso eso significa codificar algunos valores.

Técnicamente, puede enviar datos a un complemento de servidor de archivos usando RFile.Write() pero esa no es una gran solución (intercepte RFile.Open ("nombre de archivo no válido que solo su complemento entiende") en el complemento).EDITAR:Alguien indicó que usar un nombre de archivo no válido no le permitirá enviar datos al complemento.oye, a mí tampoco me gustó esa solución.En aras de la exhaustividad, debo aclarar.cree un nombre de archivo que se vea lo suficientemente bien como para acceder a su complemento.como usar una letra de unidad que no tiene una unidad real adjunta (pero que aún así se considerará correcta mediante el código de análisis de nombres de archivos).

Escribir código para analizar el archivo binario de recursos en el complemento, aunque teóricamente es posible, tampoco es una gran solución.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top