يُمكّن من قراءة ملفات أو دلائل كاملة عبر نطاقات ذاكرة مشتركة عند تلقي طلبات التشخيص.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 4c654c39d186المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يُمكّن من قراءة ملفات أو دلائل كاملة عبر نطاقات ذاكرة مشتركة عند تلقي طلبات التشخيص.
تُستخدم الفئة ara::diag::DataTransferReadSharedDataHandler لمعالجة عمليات نقل بيانات التشخيص للقراءة لمحتويات الملفات والدلائل عبر الذاكرة المشتركة ([SWS_DM_01497]). بعد بدء الجلسة، يوفر تطبيق التطبيق كامل البيانات كعرض بيانات مشتركة (Shared Data View) عبر Read() ويحتفظ بالذاكرة الوسيطة المخصصة حتى إشعار التحرير بواسطة ReleaseHandler ([SWS_DM_01504]). قبل تدمير الكائن الخاص بالمعالج، يجب إنهاء جلسة النقل بصورة إلزامية عبر ExitRead(). الكائن مخصص حصرياً لجلسة نقل واحدة، وبالتالي يجوز نقله ولكن لا يجوز نسخه.
السياق
تنتمي الفئة ara::diag::DataTransferReadSharedDataHandler إلى مجال التشخيص في AUTOSAR Adaptive Platform في الوحدة diag (AUTOSAR_AP_SWS_Diagnostics §8.10.5 «Class: DataTransferReadSharedDataHandler»). وتتمثل مهمتها الأساسية في معالجة عمليات نقل البيانات لمحتويات الملفات والدلائل التي بدأت بطلبات UDS مثل RequestReadFile أو RequestReadDirectory ([SWS_DM_01497]). وبدلاً من خطوات النسخ المنفردة لكل كتلة نقل، يُمكّن هذا المعالج التنفيذ الخاص بالتطبيق من توفير كامل البيانات كنطاق ذاكرة مشتركة متصل.
تتعاون ثلاثة أطراف فاعلة رئيسية في مجمل تسلسل النظام: يرسل عميل UDS الخارجي طلب القراءة إلى وحدة التحكم الإلكترونية (ECU). وتستقبل بيئة تشغيل التشخيص AraDiag الطلب وتمرر التنفيذ إلى التنفيذ الفعلي لـ DataTransferReadSharedDataHandler ([SWS_DM_01497]، [SWS_DM_01504]). أما الطرف الثالث، وهو ReleaseHandler، فيُشير إلى التطبيق بمجرد أن تصبح موارد الذاكرة المشتركة غير مطلوبة من قبل المنصة ويمكن تحريرها ([SWS_DM_01504]).
فيما يتعلق بالتزامن، تم تحديد الدالتين المركزيتين Read() وExitRead() على أنهما غير آمنتين خيطياً (not thread-safe)، في حين تضمن جميع دوال الواجهة الأمان من الاستثناءات (exception safe) ([SWS_DM_01498]، [SWS_DM_01504]، [SWS_DM_01505]).
مسار الاستخدام
يتضمن تسلسل الاستدعاء النموذجي لنقل البيانات باستخدام نطاقات الذاكرة المشتركة عدة خطوات:
توفير البيانات المشتركة (Shared Data): يستدعي AraDiag الدالة الافتراضية البحتة Read() ويمرر ReleaseHandler، وMetaInfo، بالإضافة إلى CancellationHandler ([SWS_DM_01504]). يخصص التطبيق كامل محتوى الملف أو الدليل ويعيد العرض المشترك له كـ ara::core::Span<ara::core::Byte> عبر ara::core::Future إلى AraDiag ([SWS_DM_01504]).
الاحتفاظ بالذاكرة والتحرير: يجب على التطبيق إلزامياً إبقاء الذاكرة المخصصة سليمة إلى أن يُشير ReleaseHandler إلى إمكانية تحرير نطاق الذاكرة بأمان ([SWS_DM_01504]). يمكن للتطبيق تسجيل دالة إشعار (Notifier) لدى ReleaseHandler لهذا الغرض أو الاستعلام النشط عن حالته ([SWS_DM_01504]). تفسير: يُرجح أن تتم الإشارة عبر ReleaseHandler بشكل غير متزامن بواسطة AraDiag بمجرد إرسال كتل البيانات بنجاح إلى عميل UDS. سؤال Q-0fbc1c5e667c9a68 (مفتوح)
إنهاء الجلسة: لإنهاء الإرسال، يستدعي AraDiag الدالة ExitRead() ([SWS_DM_01505]، AUTOSAR_AP_SWS_Diagnostics §8.10.5.1.3.1 «ExitRead»). بالإضافة إلى سبب الإنهاء (DataTransferExitType)، يتم تمرير معلمات الطلب الخاصة بالشركة المصنعة للمركبة، والتي يُضمن بقاؤها صالحة حتى الوفاء بالـ Promise الخاص بالنتيجة ([SWS_DM_01505]). يُعيد التطبيق بيانات الاستجابة عبر ara::core::Future<ara::core::Vector<ara::core::Byte>> ([SWS_DM_01505]).
تدمير الكائن: بعد نجاح استدعاء ExitRead()، يجوز تحرير مثيل المعالج وتدميره ([SWS_DM_01499]).
مخطط التسلسل: تسلسل الخطوات بدءاً من توفير البيانات عبر ()Read مروراً بتحرير الذاكرة وحتى الإنهاء عبر ()ExitRead. المصادر: [SWS_DM_01499]، [SWS_DM_01504]، [SWS_DM_01505]
سيناريوهات الأخطاء
في حال حدوث أخطاء أثناء توفير البيانات أو عند إنهاء الإرسال، يتم الإبلاغ عنها عبر ara::core::Future المعني مصحوباً بـ ara::core::ErrorCode من النطاق DiagUdsNrcErrc وفقاً للمعيار ISO 14229-1 ([SWS_DM_01504]، [SWS_DM_01505]).
يمثل إلغاء محادثة تشخيص جارية سيناريو آخر. تحصل كلتا الدالتين على CancellationHandler ([SWS_DM_01504]، [SWS_DM_01505]). يمكن للتطبيق التحقق بشكل متزامن من حالة الإلغاء عبر cancellation_handler.IsCanceled() أو إيداع دالة إشعار عبر cancellation_handler.SetNotifier() للتفاعل الفوري في حال حدوث إلغاء مبكر ([SWS_DM_01504]، [SWS_DM_01505]).
إن انتهاك الشرط المسبق المتعلق بالمدمر – في حال تدمير الكائن قبل استدعاء ExitRead() – يتعارض مع المتطلب [SWS_DM_01499] ويؤدي إلى حالات برنامج خاطئة.
يستند دليل الفئات هذا إلى مواصفة AUTOSAR Adaptive Platform Release R25-11.
Provides the whole data to be read out from the application in form of a shared data view. The whole file/directory info content to be sent back to the UDS client will be allocated by the application and its shared ownership (view over the memory location) is passed as a result to AraDiag. The allocated memory must be kept until the ReleaseHandler’s notifier is invoked or the status polled, signalling that the memory, addressed by the Span now can safely be released.
exit_type (DataTransferExitType): تحدد سبب إنهاء الجلسة.
transfer_request_parameter_record (ara::core::Span<const ara::core::Byte>): تحتوي على معلمات خاصة بالشركة المصنعة لدعم النقل. وتظل البيانات صالحة حتى يتم استيفاء Promise المرتبط أو إلغاء المعالجة.
meta_info (MetaInfo const&): تتضمن معلومات وصفية إضافية لطلب التشخيص.
cancellation_handler (CancellationHandler): تسمح بفحص حالة الإلغاء باستخدام cancellation_handler.IsCanceled() وتسجيل دالة إشعار عبر cancellation_handler.SetNotifier()، والتي يتم استدعاؤها عند إلغاء المحادثة.
معالجة الأخطاء وقيم الإرجاع
عند الاكتمال الناجح، يوفر Future بيانات الإخراج (transferResponseParameterRecord)، والتي توضع في الاستجابة الإيجابية بعد SID [SWS_DM_01505]. وفي حالة الخطأ، يتم استيفاء Future برمز خطأ من DiagUdsNrcErrc (NRC المنطبق وفقاً للمواصفة ISO 14229-1) [SWS_DM_01505].
التزامن ودورة الحياة
أُعلن عن الطريقة بأنها noexcept (آمنة من الاستثناءات - exception safe)، ولكن حُددت صراحةً بأنها not thread-safe (غير آمنة بالنسبة للخيوط) [SWS_DM_01505]. وفيما يتعلق بدورة حياة الكائن، يسري الشرط بأنه لا يجوز بأي حال تدمير حالة من DataTransferReadSharedDataHandler قبل استدعاء ExitRead() ([SWS_DM_01499]). وتوجد دوال إنهاء ومتطلبات مدمر مماثلة للفئات ذات الصلة DataTransferReadByPullHandler ([SWS_DM_01514]) وDataTransferReadByPushHandler ([SWS_DM_01523]).
تم إنشاء ملاحظة الاستخدام هذه بواسطة ذكاء اصطناعي وتستند إلى مواصفات AUTOSAR Adaptive Platform.
This parameter record contains parameter(s), which are required
parameter_record
by the server to support the transfer of data. Format and length of this parameter(s) are vehicle manufacturer specific. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
meta_info
contains additional meta information of the request.
cancellation_handler
This parameter is used to • Query the current cancellation status by calling cancellation_ handler.IsCanceled(). Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellation_handler.Set Notifier(). The registered notifier is called if the current conversation is cancelled.
Returns a Future, which either gets readied to OperationOutput (transferResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in OperationOutput.response_data will be placed after SID as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
Provides the whole data to be read out from the application in form of a shared data view. The whole file/directory info content to be sent back to the UDS client will be allocated by the application and its shared ownership (view over the memory location) is passed as a result to AraDiag. The allocated memory must be kept until the ReleaseHandler’s notifier is invoked or the status polled, signalling that the memory, addressed by the Span now can safely be released.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: cba844c9db1eالمصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
توفر الطريقة Read للواجهة ara::diag::DataTransferReadSharedDataHandler بيانات ملف أو دليل مطلوب قراءتها لعميل UDS عبر عرض ذاكرة مشتركة ([SWS_DM_01504]). يتم الاستدعاء بشكل غير متزامن ويُرجع ara::core::Future يحتوي على ara::core::Span<ara::core::Byte> ([SWS_DM_01504]).
الاستخدام ودورة الحياة
يخصص التطبيق المنفِّذ المحتوى بالكامل بنفسه ويمرر العرض إلى AraDiag. يجب الحفاظ على منطقة الذاكرة الأساسية دون تغيير حتى تتم الإشارة إلى التحرير عبر ReleaseHandler المُمرَّر بواسطة المُخطِر (Notifier) الخاص به أو الاستعلام عنه عبر فحص الحالة ([SWS_DM_01504]). يجب حفظ ReleaseHandler لنفس عميل UDS استنادًا إلى MetaInfo ([SWS_DM_01504]). عبر CancellationHandler، يمكن مراقبة عملية نقل جارية عبر IsCanceled() أو تسجيل مُخطِر إلغاء عبر SetNotifier() ([SWS_DM_01504]).
معالجة الأخطاء والتزامن
في حالة النجاح، تُرسل البيانات كـ transferResponseParameterRecord بعد blockSequenceCounter ([SWS_DM_01504]). إذا فشلت القراءة، فيجب إكمال Future برمز خطأ مناسب من DiagUdsNrcErrc وفقًا للمعيار ISO 14229-1 ([SWS_DM_01504]). إذا لم تكن واجهة التطبيق قد توفرت بعد أو لم تعد متوفرة عبر offer()، يبلغ الخادم بـ NRC 0x94 (ResourceTemporarilyNotAvailable) ([SWS_DM_01257]). تم تحديد الدالة كـ noexcept وآمنة من الاستثناءات، ولكنها تُعتبر غير آمنة مؤشريًا (not thread-safe) ([SWS_DM_01504]).
ترسيم الحدود
على عكس DataTransferReadByPullHandler::Read، حيث يتم نسخ كتل البيانات إلى مخزن مؤقت محدد مسبقًا ([SWS_DM_01513])، أو DataTransferReadByPushHandler::Read، الذي يوفر المتجهات عبر نقل الملكية ([SWS_DM_01522])، ينقل هذا المعالج المحتوى الإجمالي دون نسخ إلى المخزن المؤقت عبر ذاكرة مشتركة ([SWS_DM_01504]).
تم إنشاء ملاحظة الاستخدام هذه تلقائيًا بناءً على معيار AUTOSAR.
The release shared resource handler to be stored and used by the application until a new one is passed for the same meta_info (UDS client).
meta_info
Contains additional meta information.
cancellation_handler
This parameter is used to • Query the current cancellation status by calling cancellation_ handler.IsCanceled(). Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellation_handler.Set Notifier(). The registered notifier is called if the current conversation is cancelled.
Returns a Future, which either gets readied to ReadSharedOutput (transferResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in ReleaseSharedHandler.responseData will be placed after the blockSequenceCounter as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني