Доступ к файлу ресурса из плагина файловой системы на SymbianOS - PullRequest
1 голос
/ 18 сентября 2008

Я не могу использовать Resource File API из плагина файловой системы из-за проблемы PlatSec:

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

Мое понимание проблемы таково:

Плагины файловой системы - это библиотеки, которые выполняются в контексте процесса файловой системы. Поэтому все плагины файловой системы должны иметь привилегию TCB PlatSec, что, в свою очередь, означает, что они не могут ссылаться на dll, которого нет в TCB.

Есть ли способ обойти это (не прибегая к текстовому файлу или промежуточному серверу)? Я подозреваю, что нет - но было бы хорошо получить окончательный ответ.

Ответы [ 4 ]

3 голосов
/ 18 сентября 2008

Файловый сервер Symbian имеет следующие возможности:

TCB ProtServ DiskAdmin AllFiles PowerMgmt CommDD

Таким образом, любая DLL, загружаемая в процесс файлового сервера, должна иметь как минимум эти возможности. Этого нет, если не считать написания нового прокси-процесса, как вы намекаете.

Однако есть более фундаментальная причина, по которой вам не следует использовать bafl.dll из плагина файлового сервера: эта DLL-библиотека предоставляет служебные функции, которые взаимодействуют с клиентским API файлового сервера. Попытка использовать его изнутри сервера сервера не будет работать; в лучшем случае это приведет к взаимоблокировке файлового сервера при попытке подключения к себе.

Я бы предложил переосмыслить то, что вы пытаетесь сделать, и вместо этого исследовать внутренний API файлового сервера.

1 голос
/ 18 сентября 2008

Использование API RFs / RFile / RDir из плагина файлового сервера небезопасно и может привести к тупику, если вы не будете очень осторожны.

В Symbian 9.5 будут представлены новые API (RFilePlugin, RFsPlugin и RDirPlugin), которые следует использовать вместо.

0 голосов
/ 19 сентября 2008

Существует правильный механизм связи с плагинами, RPlugin.

Не используйте RFile. Я даже не уверен, что он будет работать, поскольку путь проверяется в инициализации функций RFile, которая вызывается перед стеком плагинов.

0 голосов
/ 18 сентября 2008

Сообщите нам, какие данные вы храните в файле ресурсов.

Вещи, которые обычно входят в файлы ресурсов, не помещаются в плагин файлового сервера, даже это означает жесткое кодирование нескольких значений.

Технически, вы можете отправлять данные в плагин файлового сервера, используя RFile.Write (), но это не лучшее решение (перехватить RFile.Open («недопустимое имя файла, которое понимает только ваш плагин») в плагине). РЕДАКТИРОВАТЬ: Кто-то указал, что использование неверного имени файла не позволит вам отправлять данные в плагин. эй, мне тоже не понравилось это решение. ради полноты я должен уточнить. составьте имя файла, которое выглядит достаточно хорошо, чтобы перейти к вашему плагину. например, использовать букву диска, к которой не привязан реальный диск (но он все равно будет считаться правильным при разборе имени файла).

Написание кода для анализа двоичного файла ресурсов в плагине, хотя теоретически это возможно, также не является хорошим решением.

...