Acessando um arquivo de recurso de um plugin sistema de arquivos em SymbianOS

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

  •  01-07-2019
  •  | 
  •  

Pergunta

Eu não pode usar o recurso de arquivo API de dentro de um plug-in sistema de arquivos devido a um problema PlatSec:

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

O meu entendimento da questão é que:

plugins sistema de arquivos são DLLs que são executadas no contexto do processo de sistema de arquivos. Portanto, todos os plugins do sistema de arquivos devem ter o privilégio PlatSec TCB que por meio da volta eles não podem vincular contra uma dll que não está no TCB.

Existe uma maneira de contornar isso (sem recorrer a um arquivo de texto ou um servidor intermediário)? Suspeito que não - mas seria bom para obter uma resposta definitiva

.
Foi útil?

Solução

O servidor de arquivos Symbian tem os seguintes recursos:

TCB ProtServ DiskAdmin AllFiles PowerMgmt CommDD

Assim, qualquer DLL que está sendo carregado no processo de servidor de arquivos deve ter pelo menos essas capacidades. Não há maneira de contornar isso, curta de escrever um novo processo de proxy como você fazem alusão a.

No entanto, há uma razão mais fundamental por que você não deve estar usando bafl.dll de dentro de um plug-in servidor de arquivos: esta DLL fornece funções de utilidade qual interface para o cliente API servidores de arquivos. A tentativa de usá-lo de dentro do servidor filer não vai funcionar; na melhor das hipóteses, ele irá levar ao deadlocking servidor de arquivos como ele tenta se conectar a si mesmo.

Eu sugiro repensar que você está tentando fazer, e investigar uma API arquivo-servidor interno para alcançá-lo em seu lugar.

Outras dicas

Usando FR / ARQUIVO / RDIR APIs de dentro de um plug-in servidor de arquivos não é seguro e pode potencialmente levar a um impasse se você não tiver muito cuidado.

Symbian 9.5 vai introduzir novas APIs (RFilePlugin, RFsPlugin e RDirPlugin) que deve ser utilizado.

Há um mecanismo adequado para a comunicação com plugins, RPlugin.

Não use rarquivo. Eu nem tenho certeza de que ele iria trabalhar como o caminho é verificada em Inicializar de funções rarquivo que é chamado antes que a pilha plugin.

Informe o tipo de dados que você está armazenando no arquivo de recurso.

As coisas que normalmente entram em arquivos de recursos não têm lugar em um plug-in servidor de arquivos, mesmo que os meios hardcoding alguns valores.

Tecnicamente, você pode enviar dados para um servidor de arquivos plugin usando RFile.Write (), mas isso não é uma grande solução (interceptação RFile.Open ( "nome de arquivo inválido que só o seu plugin entende") no plugin). EDIT: Alguém indicou que o uso de um nome de arquivo inválido não vai deixar você enviar dados para o plugin. hey, eu não gostei solução. para o bem da completitude, devo esclarecer. tornar-se um nome de arquivo que se parece bastante OK para passar para o seu plugin. como usar uma letra de unidade que não tem uma unidade real anexado a ele (mas ainda será considerada correta por código de análise de nome de arquivo).

Escrevendo código para analisar o binário arquivo de recurso no plugin, enquanto theoratically possível, não é uma grande solução.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top