الوصول إلى ملف مورد من مكون إضافي لنظام الملفات على SymbianOS

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

  •  01-07-2019
  •  | 
  •  

سؤال

لا يمكنني استخدام 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 

فهمي للمسألة هو أن:

المكونات الإضافية لنظام الملفات هي ملفات dll يتم تنفيذها في سياق عملية نظام الملفات.لذلك، يجب أن تحتوي جميع المكونات الإضافية لنظام الملفات على ملحق TCB امتياز PlatSec والذي بدوره يعني أنه لا يمكنهم الارتباط بملف dll غير موجود في ملف TCB.

هل هناك طريقة للتغلب على ذلك (دون اللجوء إلى ملف نصي أو خادم وسيط)؟لا أظن ذلك، ولكن سيكون من الجيد الحصول على إجابة محددة.

هل كانت مفيدة؟

المحلول

يتمتع خادم ملفات Symbian بالقدرات التالية:

TCB ProtServ DiskAdmin AllFiles PowerMgmt CommDD

لذا فإن أي ملف DLL يتم تحميله في عملية خادم الملفات يجب أن يتمتع بهذه الإمكانيات على الأقل.لا توجد طريقة للتغلب على هذا الأمر، باستثناء كتابة عملية وكيل جديدة كما أشرت.

ومع ذلك، هناك سبب أكثر جوهرية يمنعك من استخدامه bafl.dll من داخل البرنامج المساعد لخادم الملفات:يوفر ملف DLL هذا وظائف مساعدة تتفاعل مع واجهة برمجة تطبيقات عميل خوادم الملفات.لن تنجح محاولة استخدامه من داخل خادم الملفات؛في أحسن الأحوال، سيؤدي ذلك إلى توقف خادم الملفات أثناء محاولته الاتصال بنفسه.

أقترح إعادة التفكير فيما تحاول القيام به، والتحقق من واجهة برمجة تطبيقات خادم الملفات الداخلية لتحقيق ذلك بدلاً من ذلك.

نصائح أخرى

إن استخدام واجهات برمجة التطبيقات RFs/RFile/RDir من داخل البرنامج الإضافي لخادم الملفات ليس آمنًا ويمكن أن يؤدي إلى طريق مسدود إذا لم تكن حذرًا للغاية.

سيقدم Symbian 9.5 واجهات برمجة التطبيقات الجديدة (RFilePlugin، وRFsPlugin، وRDirPlugin) والتي يجب استخدامها بدلاً من ذلك.

هناك آلية مناسبة للتواصل مع المكونات الإضافية، RPlugin.

لا تستخدم RFile.لست متأكدًا حتى من أنه سيعمل حيث يتم تحديد المسار في تهيئة وظائف RFile التي يتم استدعاؤها قبل مكدس البرنامج المساعد.

أخبرنا بنوع البيانات التي تقوم بتخزينها في ملف المورد.

الأشياء التي تدخل عادةً في ملفات الموارد ليس لها مكان في البرنامج الإضافي لخادم الملفات، حتى أن هذا يعني تشفير بعض القيم.

من الناحية الفنية، يمكنك إرسال البيانات إلى مكون إضافي لخادم الملفات باستخدام RFile.Write() ولكن هذا ليس حلاً رائعًا (اعترض RFile.Open("اسم ملف غير صالح لا يفهمه سوى المكون الإضافي الخاص بك") في البرنامج المساعد).يحرر:أشار أحد الأشخاص إلى أن استخدام اسم ملف غير صالح لن يسمح لك بإرسال البيانات إلى المكون الإضافي.مهلا، لم يعجبني هذا الحل أيضا.من أجل الاكتمال، أود أن أوضح.قم بإنشاء اسم ملف يبدو جيدًا بدرجة كافية للانتقال إلى المكون الإضافي الخاص بك.مثل استخدام حرف محرك أقراص لا يحتوي على محرك أقراص حقيقي متصل به (ولكن سيظل يعتبر صحيحًا من خلال رمز تحليل اسم الملف).

إن كتابة التعليمات البرمجية لتحليل ملف المورد الثنائي في البرنامج المساعد، على الرغم من أنه ممكن من الناحية النظرية، ليس حلاً رائعًا أيضًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top