PRB: نموذج HOOKS SDK Windows 3.1 يتسبب خطأ GP

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

110661
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
3.10 kbprb kbprg WINDOWS
الأعراض
سيؤدي تطبيق يثبت دالة ربط WH_CBT يتم تشغيله باستخدام التطبيق نموذج HOOKS خطأ حماية عام (GPF) في النظام إذا تم تمكين ربط التدريب (CBT) المستندة إلى الكمبيوتر يتلقى إجراء موضع الإضافة في الروتين إعلام CBT.
السبب
في عينة HOOKS CBTFunc() هو بشكل غير صحيح lParam النوع (قيمة DWORD) كلمة عند تستدعي CallNextHookEx() لتمرير المعلومات إلى ربط التالي في سلسلة موضع الإضافة في الروتين. يؤدي هذا دالة ربط الاستقبال لتلقي إعلام CBT مع معدلة lParam (تجريد HIWORD) ، وبذلك ترجمة إلى مؤشر غير صالح ثم أخيراً تسبب GPF.

يحدث GPF بشكل مشابه عند تشغيل أحد تطبيقات تثبيت موقع ربط WH_CALLWNDPROC مع نموذج HOOKS تحديد عنصر القائمة موضع الإضافة في الروتين CallWndProc. بنفس الطريقة casts دالة نموذج HOOKS CallWndProcFunc() lParam الخاص به (قيمة DWORD) إلى كلمة على المكالمة الخاصة به إلى CallNextHookEx() بشكل غير صحيح.

بالإضافة إلى ذلك، سوف نموذج HOOKs GPF عند تثبيت موقع ربط WH_JOURNALRECORDSetSysModalWindow() يستدعي بعض التطبيقات الأخرى. كما ذكر في تعليمات Windows 3.1 SDK

If a WH_JOURNALRECORD hook is in place when SetSysModalWindow is called,the hook is called with a hook code of <B>HC_SYSMODALON</B> (for turning on the system-modal window) or <B>HC_SYSMODALOFF</B> (for turning off the system-modal window).				
الحل
تعديل CBTFunc() و استدعاءات CallWndProcFunc()CallNextHookEx() تحويل lParam DWORD بشكل صحيح.

في حالة التي ربط سجل دفتر اليومية إجراء التغيير التالي الدالة JournalRecordFunc في hooksdll.c:
   if( nCode >= 0) {   // do not  record if SysModalOn or SysModalOff and let other filter know   // about it.      if(nCode == HC_SYSMODALON || nCode == HC_SYSMODALOFF)      {      // let other hook filters know about this         CallNextHookEx(hhookHooks[JOURNALRECORDINDEX], nCode, wParam,            lParam);         return;      }				
تصريح
يعتبر هذا السلوك حسب التصميم.
3.10 gpf GP-خطأ

تحذير: تمت ترجمة هذا المقال تلقائياً

خصائص

رقم الموضوع: 110661 - آخر مراجعة: 02/02/2014 18:24:59 - المراجعة: 1.1

  • Microsoft Windows Software Development Kit 3.1
  • kbnosurvey kbarchive kbmt kb16bitonly kbhook kbprb KB110661 KbMtar
تعليقات