فهم وظائف برنامج التشغيل القلم ضمن Windows

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

اضغط هنا لرابط المقالة باللغة الانجليزية94701
إخلاء مسؤولية من محتوى قديم في قاعدة المعارف
عن تقديم الدعم التقني لهاو لذلك تظهر هذه المقالة كما هي و لن يتم تحديثها Microsoft تمت كتابة هذه المقالة بخصوص منتجات توقفت
الموجز
تم تصميم هذا المقال لإعطاء القارئ مقدمة عامة ثيفونكتيوناليتي من برنامج تشغيل Windows القلم بشرح ما دوساند المصدر في كيف يفعل. يفترض أن القارئ لها وظيفة سائق قلم أونديرستاندينجوف أساسية وعلى دراية دريفيركيت الجهاز Windows (DDK).

يمكن العثور على الملفات التي تشكل برنامج القلم في Windows لمجموعة التهيئة الخاصة ب OEM بينكومبوتينج وفي دليل Windows DDK الإصدار 3.1. الملفات ذات الاهتمام: تعطيل. الحرفي والصغير الحجم، تمكين. الحرفي والصغير الحجم، عامل التصفية. الحرفي والصغير الحجم, التثبيت. الحرفي والصغير الحجم، التحميل. الحرفي والصغير الحجم، متنوعة الحرفي والصغير الحجم، التشغيل. الحرفي والصغير الحجم، لوحة WACOM. الحرفي والصغير الحجم ومربعات الحوار. Isimportant ت. قراءة هذه الملفات المصدر بالاقتران مع هذه المادة.

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

معلومات أساسية

  1. س: ما هي برنامج قلم؟

    برنامج تشغيل قلم أ. يتم تثبيت برنامج تشغيل Windows، مما يعني أنه من مكتبة الارتباط الحيوي (DLL) التي تتوافق مع معايير معينة كما هو موضح في الفصل 25 من إصدار Windows 3.1 مجموعة تطوير البرامج (SDK) "مرجع مبرمجي، المجلد 1: نظرة عامة" يدوياً. يجب على برنامج قلم:

    • معالجة رسائل تشغيل قياسي الحصول على المرسلة إليها من Windows بشكل صحيح.
    • معالجة رسائل معينة تعتبر فريدة بالنسبة إلى برنامج تشغيل القلم.
    • جمع معلومات من جهاز الكمبيوتر اللوحي وحزم في بنية حزمة القلم مستقلة عن الأجهزة الإرسال إلى PENWIN. DLL للمعالجة.
  2. س: أين تأتي رسائل تشغيل قياسي من؟

    أ. تشغيل قياسي، مثل DRV_LOAD، DRV_DISABLE، وهكذا، يتم إرسال الرسائل من Windows (على وجه التحديد من المستخدم. EXE) لتثبيت برامج التشغيل عند حدوث أحداث النظام الهامة، مثل تشغيل Windows، Windows الانتقال إلى مربع MS-DOS، وعند تطبيق تريد بدء محادثة ببرنامج لتثبيت.
  3. س: رسائل برنامج التشغيل الخاصة بقلم من أين؟

    أ. بعض الرسائل (مثل DRV_GetPenInfo) غالباً ما ترسل التطبيقات التي ترغب في الحصول على معلومات حول برنامج تشغيل القلم. يتم إرسال بعض الرسائل (مثل DRV_SetCalibration) بتطبيقات "لوحة التحكم" لتغيير بعض معلمات تشغيل قلم. وترسل بعض الرسائل (مثل DRV_SetEntryPoints) PENWIN. DLL عندما يكون مستعدا لقبول حزم القلم. برنامج التشغيل الخاصة بقلم الرسائل تأتي من DLLs التي تعرف حول برنامج تشغيل القلم وتريد تبادل المعلومات معها والتطبيقات المستندة إلى Windows.
  4. س: المقاطعات من أين؟

    أ. يمكن أن تأتي المقاطعات لبرنامج تشغيل قلم من أحد الأماكن الثلاثة، اعتماداً على وضع Windows (القياسي أو المحسن) ووضع المعالج (محمية أو الحقيقي) عندما يريد إرسال معلومات إلى جهاز الكمبيوتر المتوافقة مع IBM أجهزة الكمبيوتر اللوحي. في الحالة الأكثر شيوعاً (Windows "الحوسبة القلم" قيد التشغيل على كمبيوتر يستند إلى 386 في الوضع المحسن ل Windows)، اعتراض مقاطعات الأجهزة الفعلية ومعالجتها بواسطة برنامج ظاهري منفصل تماما. مجرد برنامج التشغيل هذا الظاهري قد جمعت حزمة كاملة قلم، يعلم برنامج القلم عبر مقاطعة. قام برنامج التشغيل القلم ثم مهمة سهلة لإجراء أي تعديلات (معايرة والتصفية، وهكذا)، وإرسال الحزمة القلم إلى PENWIN. DLL.

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

ملفات المصدر

هناك تسعة ملفات في مصدر برنامج تشغيل قلم الحاجة إلى برنامج تشغيل بويلدثيس. يحتوي كل ملف على وظائف تجميعها منطقياً. Thefollowing هي قائمة الدالات التي تم العثور عليها في هذه الملفات:
   Files and Functions            Description of Functions   -------------------------------------------------------   INSTALL.ASM      DriverProc                  Message processing routine   LOAD.ASM      Load                        Initializes variables   DISABLE.ASM      Disable                     Turns off serial interrupts   ENABLE.ASM      Enable                      Turns on serial interrupts      setup_tablet                Makes tablet connection   MISC.ASM      OutTabletChar               Sends character to COM port      OutTabletString             Sends character string to COM port      SetPenSamplingRate          Sets sampling rate      SetPenSamplingDist          Sets sampling distance      GetPenInfo                  Fills PenInfo structure      GetName                     Returns name of driver      SetPenDriverEntryPoints     Gets function addresses      RemovePenDriverEntryPoints  Sets function pointers to NULL      GetCalibration              Returns width and height      SetCalibration              Sets width and height      WEP                         Windows exit procedure   WACOM.ASM      int_stuff                   Global entry point for interrupts      rm_DWPP_cb                  Real-mode pen packet entry location      deal_with_pen_packet        Processes pen packet      do_mouse_event              Causes driver to act like a mouse      deal_with_playmode          Works with PLAY.ASM functions      shut_up                     Prevents out-of-range pen packets      speak_up                    Initiates in-range pen packets      out_tablet_bl               Transmits characters to tablet   FILTER.ASM      FFilterPacket               Removes incorrect pen packets   PLAY.ASM      PenPlayStart                Routines for simulating tablet events      PenPlayBack      PenPlayStop   DIALOGS.C      ConfigDlgProc               Handles configurable dialog box messages      ConfigDialog                Function that loads driver-configurable                                  dialog box      LibMain                     Entry point				
الجزء المتبقي من هذه المقالة تركز على الإجراءات التي تتخذها كل من ثيفونكشنز المذكورة أعلاه.

كيفية تشغيل قلم عملها

إجراءات تشغيل قلم قد قسمت إلى ثلاث فئات: تحميل وقت العمل، العمل وقت المقاطعة وخدمات متنوعة.

العمل وقت التحميل

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

برنامج تشغيل قلم برنامج قابل لتثبيت، وكافة برامج التشغيل القابلة للتثبيت، على غرار على معالج رسالة التي يتم إرسال رسالة DRV_LOAD في المرة الأولى التي يتم تحميلها في الذاكرة. معالج الرسالة لبرنامج القلم هو inINSTALL.ASM. لأن التعليمات البرمجية وقت التحميل المعقدة، هاندليرماكيس رسالة مكالمة بعيدة لإجراء التحميل، موجودة في التحميل. الحرفي والصغير الحجم. بوصفها جانبا، معالج ثيميساجي ليست بالتأكيد إجراءات معقدة، كما أنها تستخدم أنيسبيسيال التسجيل أو الحيل الذاكرة وأنه يجب عدم كتابة إيناسيمبلي. يجب كتابة جزء كبير من برنامج التشغيل القلم بلغة تومينتين أكثر وضوحاً وأسهل، مثل c.

عندما يتم تحميل برنامج التشغيل القلم في الذاكرة، فإنه يقرأ. تبديل الملف INI أندبيرفورمس DPMI بعض الحيل للتعامل مع التبديل من الحقيقي إلى الوضع المحمي. أنه لا يشارك بالمقاطعات أو الاتصالات بعد؛ thathappens عند تمكين برنامج التشغيل القلم.

خطوط 119 و 120 من التحميل. يسجل ASM التحميل بواسطة المؤشرات أقرب إلى سلاسل. يتم استخدام المؤشرات كثيرا عند استدعاء GetPrivateProfileInt(). الأولى. يتم تبديل الملف INI قراءة في بيفوريلونتش الذين لا يحملون وثائق أندافتيرلاونتش = = رموز التبديل. رموز التبديل هذه مفيدة للتصحيح السائقين القلم. يتسع القيم 0 أو 1 أو 2، وهي تصف كيف إيسوبوسيد برنامج تشغيل قلم تصرف قبل وبعد PENWIN. تم تشغيل DLL (0means تجاهل كافة الإدخالات من الكمبيوتر اللوحي، يعني 1 تشغيل كل قرص بيانات إينتوموسي الأحداث، تجاوز Windows "الحوسبة القلم"، يعني 2 تشغيل كافة تابليتداتا إلى أحداث القلم بحيث يمكن إجراء التعرف على خط اليد). تكون القيم ثيديفولت بيفوريلونتش = 1 وأفتيرلاونتش = 2، مما يعني زبين هذا سلوك مشابهة لماوس عندما يكون Windows "الحوسبة القلم" نوتبريسينت ويشبه قلم عند وجود Windows "استخدام قلم الكمبيوتر".

اقرأ البنود 137-154 في الضغط. تبديل الملف INI. إذا كان ضغط نوتسوبورتيد (الضغط = 0)، فليس هناك حاجة لقراءة الاستقرائي = فلاجاند القوة = القيمة. يجعل لوحة WACOM نوعان من الضغط الأقلام، أندنونيندوكتيفي الاستقرائي. تمثل القيمة قوة يجب تطبيق مقدار القوة (على مقياس من 0-70) التسبب في رسالة WM_LBUTTONDOWN سيتم إنشاؤها؛ إيتديفولتس إلى 35.

خطوط 155-159 تصحيح بنية بينينفو. ستروكتوريديفاولتس بينينفو أن "أي ضغط". إذا تحرك برنامج ضغط قلم، يجب إصلاحها بنية ثيبينينفو لوصف قلم لضغط. يتم تعيين الحقل ثيكبومداتا الأول إلى 2، لأنه سيكون هناك بيانات أوفوم (كلمة واحدة) 2 بايت في كل حزمة القلم. قم بتعيين الفتحة الأولى من فيلدس رجومبينينفو إلى بينداتاتيبي الضغط، MaximumValue = = 70، ديستينكتفالويس = 70. ثيسمينس أنه بالإضافة إلى ثلاث كلمات ل X، Y، الحالة المضمنة في الحزمة افيريبين، سيكون هناك كلمة إضافية ببيانات OEM. هذا هو بريسورينفورميشن، الذي يتم تمثيله برقم من 0 إلى 69، مثل تحرير 70 قيم مميزة في هذا النطاق.

خطوط الاختيار 168 180 لرمز التبديل Wacom510. قرص برنامج التشغيل القلم ديفولتدريفيس لوحة الرسم WACOM HD-648A (اكوم 648)، ولكن في حالة التبديل Wacom510 isset، برنامج تشغيل قلم بعض التعديلات للقياسات الكمبيوتر اللوحي (خطوط 172-177) ومسح بت المتكاملة (البند 178) لأن الكمبيوتر اللوحي theWacom510 غير المتكاملة مع العرض. البند 179 يقفز فوق ثيكاليبريشن. تبديل الملف INI لأنه لا معنى لمعايرة اللوحي أنوباكوي مع الشاشة.

إذا لم يكن الكمبيوتر اللوحي كمبيوتر لوحي Wacom510، ومع ذلك، قراءة أسطر 186 215 في رموز التبديل ثيكاليبريشن. تبديل الأربعة الأولى (ككسراويدث، سيراوهيت، وديستينكتويدث ووديستينكثيت) تجاوز القيم الافتراضية في بنية ثيبينينفو. يتم القيمتين الأخيرتين، ووفسيتكس وووفسيتي، ثيفالويس إضافة إلى مكونات X و Y لكل لون القلم الحزمة قبل أن أريسوبميتيد إلى PENWIN. DLL، بالإضافة إلى 1000. وبذلك يطرح برنامج القلم 1000 من القيم (خطوط 208 و 214) قبل حفظها في المتغيرات العمومية. بدأ ثيبراكتيسي إضافة 1000 إلى القيمة الفعلية لأن في سوميارلير في الإصدارات من Windows، ببرنامج التشغيل القلم صعوبة في قراءة قيم إينيجاتيفي. وقد اختير 1000 القيمة الفعلية إذا ايسوف الكمبيوتر اللوحي بأكثر من 1 بوصة (1000 وحدة الخام وكل وحدة الخام = 1/1000 من أنينتش)، ثم هناك عيب رئيسي في الأجهزة التي يمكنها تصحيح لم كاليبراتيونبروجرام. عادة تتم كتابة قيم المعايرة بواسطة برنامج أكاليبريشن، مثل أبليكاتيونديستريبوتيد "معايرة لوحة التحكم" مع Microsoft Windows "الحسابات على القلم".

خطوط القراءة 223-230 في الحد الأقصى المسموح به وتغيير في X (وديلتاكسماكس) و Y(wDeltaYMax) إذا تم تمكين التصفية. خوارزمية التصفية اكسبلينالدين مقطع لاحق.

237-248 القراءة في Com2 خطوط العلامة =، واستنادا إلى القيمة سوميجلوبال يتم تعيين متغيرات التي تتعامل مع الاتصالات التسلسلية.

256-261 القراءة في ديسبلايورينتيشن خطوط = قيمة من النظام. INIfile. خطوط 262 287 صفقة ذات القيمة، تدوير ميسوريمينتسوف X و Y الكمبيوتر اللوحي بشكل صحيح إذا كان يتم استدارة العرض الافتراضية من 0, 0، وهو الزاوية العلوية اليمنى.

293-296 خطوط كتابة متغيرات أكثر عمومية. إحضار خطوط 302 و 303 سيليكتورثات يشير إلى نفس الذاكرة كمحدد البيانات لكن تعيين سمة التعليمات البرمجية هاسثي برنامج تشغيل قلم. يتم ذلك لأن المقاطعة معالجة رمز الرقم العالمي محدد البيانات، ولكن برنامج تشغيل قلم يحتاج محدد التعليمات برمجية سوميسيرفيسيس.

من المتغيرات الهامة في برنامج تشغيل قلم هي rglpfn_DWPP أتو عنصر الصفيف من مؤشرات طويلة إلى deal_with_pen_packet الدالة. عند تشغيل قلم معالجة مقاطعة، وقد جمعت بينباكيت، أنه سوف يستدعي rglpfn_DWPP [0] إذا كان برنامج تشغيل في الوضع المحمي, andrglpfn_DWPP [4] إذا كان في الوضع العادي. خطوط تعبئة 309-311 في 4bytes الأولى من هذا الصفيف باستخدام محدد وازاحه محمية موديدريس من deal_with_pen_packet.

يحفظ السطر 317 محدد البيانات الوضع المحمي في متغير عمومي. سيتم مسح عند مناقشة معالج المقاطعة ثيريسون لذلك. Lines323 327 تحويل محدد البيانات الوضع المحمي من برنامج التشغيل القلم إلى مقطع البيانات المساحية الوضع. يحصل هذه القيمة المخزنة 4 بايت بعد محدد البيانات بروتيكتيدمودي في متغير عمومي DS_reg. مرة أخرى، سيتم مسح عند مناقشة معالج المقاطعة forthis الأسباب.

تخصيص خطوط 333-342 رد وضع حقيقي خلال سحر DPMI. وقد ذكر سيفيرالتيميس هذا المستند "التبديل من الوضع الحقيقي بروتيكتيدمودي." الإجراء الفعلي للتبديل من الحقيقي إلى الوضع المحمي إيسدوني من خلال رد وضع حقيقي. عند تخصيص رد وضع حقيقي، يشير ES:DI إلى إجراء وضع محمي الذي يتم تشغيله عند بروسيسوريس بالتبديل من الحقيقي إلى الوضع المحمي. تسجيل نقاط DS:SI إلى بنية موديداتا محمية حيث وضع DPMI الوضع الحقيقي القيم عند تبديل ثيبروسيسور من الحقيقي للوضع المحمي. وأخيراً، يتضمن AX عدد ثيسيرفيسي من الروتين "تخصيص-الحقيقي-وضع-رد الاتصال". بعد كالينجدبمي عبر مقاطعة برمجية، يشير CX:DX إلى دالة، إذا كان الوضع الحقيقي كاليدفروم (معادل مقطع التعليمات برمجية غير محدد التعليمات برمجية)، ويلسويتش المعالج في الوضع المحمي واﻻنتقال السريع إلى بروسيدوريسبيسيفيد في ES:DI. يتم حفظ التسجيلات CX و DX في rglpfn_DWPP، بدءاً من إزاحة البايت 4 (خطوط 349 و 350).

خطوط 352 356 التحقق من تشغيل Windows في الوضع المحمي (أي إيتموست في حالة تشغيل Windows 3.1، ومطلوب من أجل Windows فربين Windows 3.1 الحوسبة). إذا عملية التحميل بإرجاع 0 في DX:AX، سيتم تحميل برنامج التشغيل إينستالابليبين.

تجدر الإشارة إلى أن مرة أخرى إجراء كتب في أسيمبليثات يجب أن تتم كتابة في c الجزء الصعب فقط التعليمات البرمجية التعليمات البرمجية ثيدبمي في بنود 333-343، والتي لا يمكن القيام به باستخدام استدعاءات int86()، يمكن إدراج رمز التجميع مع توجيهات {} _asm. لسهولة أوفمينتينانسي، يجب كتابة التعليمات البرمجية هذا في c

الرسالة التالية الحصول على برنامج التشغيل القلم هو DRV_ENABLE. عندما يكون Windows غير الوضع المحسن رونينجين، يحصل إرسال رسالة DRV_ENABLE مرة واحدة، بعد بيندريفير يتم تحميله إلى الذاكرة. يحصل ميساجيونسي DRV_DISABLE المقابلة، عند تحميل برنامج تشغيل قلم أثناء إيقاف تشغيل Windows. الوضع مشابه عند تشغيل Windows في الوضع القياسي، يحصل إرسال رسالة DRV_DISABLE اكسسيبتثات إلى برنامج التشغيل كل مرة ويندووسويتشيس إلى مربع MS-DOS، فإنه يحصل DRV_ENABLE عند سويتشيسباك Windows إلى Windows.

يبدأ الإجراء تمكين البند 99 لتمكين. الحرفي والصغير الحجم. تهيئة بعض تسجيلات على مكدس والبنود 105 و 106 البنود 101-103preserve توفاريابليس المستخدم في خوارزمية الكشف عن أجهزة استخدامه لاحقاً.

لربط الروتينية لتمكين المقاطعات مع الحفاظ على المتجهات أولدينتيروبت، سيكون كارثية إذا كان الروتينية لتمكين كاليدتويسي دون الفترات الفاصلة بين استدعاء تعطيل. كما يعتبر مقاطعة توهووك فكرة سيئة إذا لم يتم استدعاء الرسالة DRV_LOAD مرة واحدة. فبينيكسيستس تووفلاجس وفبينينابليد تعقب حالة الرسالة، وإذا، على سبيل المثال، لم يتم استدعاء التحميل أو إذا تم ربط هافيلريدي موجهات المقاطعة القلم، تم إحباط عملية تمكين.

برنامج تشغيل قلم لوحة الرسم WACOM محركات أقراص الجهاز التسلسلي، الكثير من روتينيديلس تمكين تنجزا الاتصالات التسلسلية في الكمبيوتر. بيستديسكريبشنز للاتصالات التسلسلية الشخصي يعتبر من الفصلين 6 و 13 من "في MS-DOS الموسوعة،" المنشورة من قبل Microsoft press.

خطوط 133 141 إيقاف المقاطعات التسلسلي في شريحة 8259، وحفظ حالة ثيبريفيوس على شريحة. الرجاء ملاحظة استخدام CLI و STI على خطوط 134and 140. إذا حدث مقاطعة بين هذه الخطوط، وإينتيروبثاندلير تعديل وحدات البت في MASK_PORT، ثم وولدوفيروريتي برنامج تشغيل قلم معالج المقاطعة التغييرات.

خطوط 144 و 145 تحقق تحسين وضع Windows يعمل في ثيسيشن. إذا كان، ثم ربط برنامج التشغيل القلم الظاهري كافة المقاطعات الكمبيوتر اللوحي، وليس هناك حاجة لبرنامج القلم لربط أي. وهكذا، خط ويلسكيب 145 عبر المقاطعة ربط العملية إذا تم تعيين بت WF_ENHANCED. لأن برنامج التشغيل القلم يحفظ فقط الكلمة منخفض من إعلام Windows في الصندوق العالمي للطبيعة، البند 143 يتحقق من بت WF_ENHANCED في كلمة theWindows كلمة مزدوجة إشارات منخفضة. في بعض الإصدارات المستقبلية من Windows نقل بت theWF_ENHANCED من أصل الكلمة منخفض، سيتم إنشاء هذا الملف لا يتم ترجمة اروراند وسوف يتعين إعادة كتابة التعليمات البرمجية.

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

154-158 بنود حفظ إينلبولدبموديفيكتور متجه المقاطعة الوضع المحمي القديمة. تعيين خطوط 164-172 إينتيروبتفيكتور الوضع المحمي الجديد. لاحظ كيف المحدد إينتكس، الاسم المستعار للقلم المحدد driver'sdata. تعطي الإزاحة pmode_int، تسمية في اكوم. الحرفي والصغير الحجم.

178-182 بنود حفظ متجه المقاطعة الوضع الحقيقي القديم، استخدام DPMI للحصول على أتريال ميزات وضع من الوضع المحمي مؤشر الترابط الذي إيسرونينج برنامج التشغيل القلم في. مقاطعة خطوط تعيين الوضع العادي الجديد 192 188 متجهة، أجاينوسينج DPMI. لاحظ كيف الجزء سيجمينتكوريسبوندينج بيانات الوضع الحقيقي لمحدد بيانات برنامج التشغيل القلم والإزاحة rmode_int ثيلابيل، وجدت في اكوم مرة أخرى. الحرفي والصغير الحجم. لا حاجة لتحويل قطعة ثيداتا إلى مقطع التعليمات برمجية لعكس محددات الوضع المحمي، لا تملك قطع الوضع الحقيقي خصائص التعليمات البرمجية أو البيانات.

تعيين خط 195 في فبينينابليد (ويجب إعادة تسميته إلى شيء موريبروبرياتي مثل فينتشوكيد).

بنود 201-230 تعيين المعلمات المتنوعة للاتصالات التسلسلية الشخصي. يتم تنفيذ الجدول الزمني اتخذته 230، ما يكفي من معلمات الاتصالات تم تعيين برنامج تشغيل قلم يمكن إرسال معلومات إلى القرص. خط 237calls setup_tablet روتين الأجهزة المستقلة لوضع الكمبيوتر اللوحي في حالة ثيبروبير.

Setup_tablet (خطوط 429 478) بإعادة تعيين الكمبيوتر اللوحي باستخدام الأمر "أ" (الخط 436) أولاً. استناداً إلى الوثائق اكوم، بعد إعادة تعيين، دريفيرموست الانتظار قبل إرسال كذلك الأوامر، حيث انتظر بنود 442-451 مشغول. انظر إلى قيمة الوقت في BIOS هذه البنود، ولكن يجب إعادة كتابة ل GetTickCount() أوسيويندووس بدلاً من ذلك. خط 458 يرسل المزيد من أوامر الكمبيوتر اللوحي، أندلينيس 464 467 وضع الكمبيوتر اللوحي في وضع الضغط إذا. يتم استخدام القلم للضغط إينديكاتيسا ملف INI. وأخيراً، تحدد setup_tablet سامبلينجراتي القلم (خط 474) عن طريق استدعاء سيتبينسامبلينجراتي (التي يتم شرحها لاحقاً).

بعد إرجاع setup_tablet، يستمر التنفيذ في سطر 243. تم تعطيل المقاطعات في شريحة 8250 (243-247) للتأكد من وصول لم مقاطعات الاتصالات حينلم الكمبيوتر يتم تغييرها. تعيين خطوط 243 257 DTR و RTS إلى القيم المناسبة، وثم قراءة حرف في منفذ الإدخال/الإخراج. أنها شاءت بنية "إدخال/إخراج جهاز الكمبيوتر" أنه إذا لم يتم قراءة حرف نقطة أتثيس، إدخال/إخراج لن يحدث. تكون خطوط 272 291 من برنامج تشغيل الماوس ثيسيريال التعليمات البرمجية. لم يتضح تماما ما هذه التعليمات البرمجية يحقق.

297-303 تمكين المقاطعات في شريحة 8259 (لاحظ أندستي CLI مرة أخرى على أسطر 299 و 303)، بنود 309 312 تمكين المقاطعات "البيانات جاهزة" على رقاقة 8250 بنود وبنود 318 324 رفع OUT2 على رقاقة 8250، التي إيسنيسيساري لشريحة 8250 إنشاء المقاطعات التسلسلي. في هذه المرحلة، يجب إنشاء الكمبيوتر اللوحي المقاطعات وشولدبي معالج المقاطعة معالجتها.

حان الآن الوقت لإعلام برنامج التشغيل القلم الظاهري أن برنامج تشغيل قلم موجود، مستعدة لقبول المقاطعات، وإعطاء سيفيرالبيسيس برنامج تشغيل القلم الظاهري للمعلومات المطلوبة. برنامج تشغيل قلم الظاهرية يجب أن نوتيفيدونلي مرة واحدة، حيث خطوط 330-332 التأكد من أن أوككورسونلي تهيئة فبيند مرة واحدة.

برنامج تشغيل القلم لاستدعاء برنامج التشغيل القلم الظاهري، يحتاج برنامج تشغيل القلم تكنو عنوان تطبيق برمجة واجهة (API) بروسيدوريوف برنامج التشغيل القلم الظاهري. يشبه الإجراء API برنامج التشغيل الافتراضي لمعالج الرسالة درفبروك من برنامج قابل للتثبيت-هو قطع ويريوثير وضع التعليمات البرمجية استدعاء برنامج التشغيل الظاهرية ويطلب إجراء فورسيرفيسيس. طلب خطوط 334-343 الوضع المحسن ل Windows (خط 338) نقطة أبينتري (خط 336) برنامج التشغيل القلم الظاهري (خط 337). يتم وضع العنوان (مؤشر الوضع طويلاً على أبروتيكتيد) في ES:DI. إذا كانت هذه القيمة 0:0, يوجد أي برنامج تشغيل القلم الظاهري لتهيئة ويتم تخطي أوفكودي القطع القليلة التالية (خط 342).

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

وبعد ذلك، برنامج تشغيل قلم يستدعي إجراء API القلم الافتراضية لبرنامج التشغيل. تذكر عنوان الإجراء API في ES:DI، ولكن قد 386architecture أي تعليمات "نداء ES:DI". بدلاً من القيام سوميثينجسيمبلي مثل حفظ ES:DI في dword وإجراء استدعاء غير مباشر، يقوم بيندريفير بعض الخداع المكدس لحفظ 4 بايت من البيانات الفضائية. ثيسشولد إعادة كتابة التعليمة البرمجية لتسهيل فهم.

الخطة إعداد المكدس لجعله يبدو كما لو كان ماديا برنامج تشغيل قلم الآن استدعاء للإجراء API، وثم الضغط الانتقال إلى الموقع في ES:DI.First "عنوان المرسل" إلى المكدس. هذا عنوان isCS:E_done_VPenD_init، في البند 381. خطوط 368 و 370 ثيسفالوي دفع إلى المكدس. عند هذه النقطة، يريد برنامج تشغيل القلم للانتقال إلى ثيلوكيشن في ES:DI، ولكن هناك أي تعليمات "أحزاب اللقاء المشترك ES:DI" أما ذلك برنامج التشغيل زبين بدلاً من ذلك يدفع ES:DI على المكدس (خطوط 371 و 372) ولاتيريكسيكوتيس عودة المتطرف الذي يجعل المعالج 386 من pop addressof طويلة المكدس والانتقال إليها. تحميل الخط 374 AX بطلب الخدمة/VPEND_ENABLEmessage، ويحمل سطر 375 ح بإزاحة بنية thevpend_data. هذا البروتوكول بسيطة بين قلم برنامج التشغيل أندفيرتوال القلم برنامج التشغيل فقط، وأي OEM مجاني لتغييره، أو إضافة موريسيرفيسيس، وهكذا. وأخيراً، ينفذ البند 378 ويتشكوسيس عودة, المعالج للانتقال إلى الموقع الذي تم في ES:DI؛ عند إرجاع ثاتبروسيدوري، المعالج سيتم الانتقال إلى الموقع التالي على ثيستاك، إلا وهي CS:E_done_VPenD_init. لاحظ كيف أخذت عدة خطوط توديسكريبي كيف برنامج تشغيل قلم سجل مكالمة بعيدة غير مباشرة وحفظ 4bytes البيانات. يجب إعادة كتابة التعليمات البرمجية هذه.

383-385 بنود قراءة حرف من منفذ COM. هذا هو بروبابليونيسيساري، ويجب إزالتها.

غالباً يتم إجراء روتين تمكين الآن. إذا تم إدخال/إخراج كافة بيرفورميدبروبيرلي، يجب إنشاء الكمبيوتر اللوحي المقاطعات وإينتيروبثاندلير أن يتم معالجتها. من تجربتنا في Microsoft، بيد أن كافة الإدخال/الإخراج لا يتم دائماً إجراء بشكل صحيح. في بعض الأحيان موصول تابليتساري عند أول تشغيل كمبيوتر سطح مكتب. Acharacter في بعض الأحيان يتم إرسال ك "R" ويحصل تلقيها ك "P". وهذا يعني أن ثيتابليت قد لا يمكن إنشاء المقاطعات، وستظهر اللوحة ديدتو المستخدم.

كل مرة يعالج برنامج التشغيل القلم بمقاطعة، يعين في فجوتانينتفلاج إلى TRUE. عند هذه النقطة (خط 387)، ينتظر الروتينية لتمكين تعيين العلامة ثيفجوتانينت. بعد 20 دقات الساعة BIOS إينتيروبثاس لا يزال لم يتم اكتشاف، يحاول برنامج التشغيل القلم تهيئة في تابليتاجين بالانتقال إلى E_enable_tablet مرة أخرى. ويعطي الروتينية لتمكين حتى بعد محاولة إينيتياليزيثي مرات cEnableTry اللوحي دون نجاح،.

الرجاء ملاحظة أنه تم تكوين لوحة WACOM tablet حيث تابليتويل تقوم بإنشاء المقاطعات حتى عندما لا تكون القلم اللوحي القرب. إيسوفتين هذه الحالة مع مصنعي الأجهزة الأخرى، وبالتالي إذا ذلك OEMs هذه الخطوات نوتاكي لتعديل هذه التعليمات البرمجية، سيتم دوماً ينتظرون 20 * إنهاء روتين تمكين تيكسبيفوري سينابليتري. هذا ملحوظ (في ثيوردير ثانية) ومضايقات تأخير عند تشغيل Windows. تأكد من أويمسشولد كافة يمكنهم فهم التعليمات البرمجية هذه الحلقات وإزالتها إذا لم تكن قادرة على دعم إنشاء مقاطعة فيريفيكاتيونليكي لوحة WACOM tablet يمكن ثيرهاردواري.

يتم عكس DRV_ENABLE DRV_DISABLE. يتم إرسال هذه الرسالة بيندريفير عند التبديل إلى مربع MS-DOS الوضع القياسي ل Windows وإيقاف تشغيل وينويندووس. معالج تعطيل المفترض للتراجع عن عمل معالج ثينابل، وترك النظام في أقل أو أكثر نفس الدولة أسبيفوري تم تمكين برنامج التشغيل.

عندما يحصل برنامج رسالة DRV_DISABLE، تستدعي إجراء تعطيل، بدءاً من السطر 58 من تعطيل. الحرفي والصغير الحجم. نفس الطريقة روتينيتشيكس تمكين إعادة الدخول، تعطيل عمليات التدقيق الروتينية على البند 64 جعل قلم سرت ممكناً الآن، وإذا لم يكن، تخطي تعطيل التعليمات البرمجية.

أنه لا يوجد برنامج تشغيل لوحة WACOM MS DOS وضع القلم للانتقال مع برنامج تشغيل قلم واكومويندووس، تعطيل برنامج التشغيل القلم ثم المقاطعات التسلسلي في افيريبوسيبلي الطريق حيث أنه سيتم كشف لم مقاطعات اللوحي خلال إلى MS-DOS. تم إيفثيري برنامج تشغيل قلم لوحة الرسم WACOM MS DOS وضع، قد تحتاج بيندريفيرس Windows و MS-DOS للاتفاق على ترك أجهزة الإدخال/الإخراج لجهاز الكمبيوتر في حالة أبارتيكولار.

72-76 من بنود تعطيل المقاطعات في شريحة 8250. مسح البنود 82 إلى 88 ثيوبسكوري بت OUT2 على رقاقة 8250 للتأكد من أنه قد تم تعطيل المقاطعات. 98-94 بنود أيضا إيقاف المقاطعات في الصورة. هناك خطأ في ثيسيكشن قانون. يمكن أن تصل إلى مقاطعة بين البندين 95 و 98 على جهاز سوميوثير، أن تعديل معالج المقاطعة بتات الموافقة المسبقة عن علم، وبعد ذلك سيتعارض البند 98 أعماله. بوشف والمبادرة القطرية ينبغي أن بينسيرتيد قبل البند 95، وإضافة POPF بعد مقاطعات توريستر 98 سطر إلى حالتها السابقة.

الآن بعد أن تم تعطيل المقاطعات من المنفذ التسلسلي تماما، مقاطعة ثيبروتيكتيد (خطوط 104-111) والوضع الحقيقي (البنود 113 إلى 117) فيكتورساري استعادة الحالة السابقة.

استعادة البنود 124-131 هذا الجدول BIOS غامضة، ولكن هناك خطأ التعليمات البرمجية inthis جداً. هذه التعليمات البرمجية والتعليمات البرمجية المقابلة في تمكين. استخدم ASM وبيوسبورتينديكس ثيفاريابل للإشارة إلى ما إذا كان تم إجراء أي عمل BIOS. إذا كانت القيمة 0، أي عمل قد تم تنفيذ/يجب أن يكون التراجع عنه. لسوء الحظ، 0 هو أيضا rs232 المقابل في الجدول BIOS الخاص بأحد منافذ COM. وبالتالي، إذا كان يتم القيام بالعمل على منفذ COM الأول في جدول BIOS ومكتوبة ثيوفسيت 0 إلى وبيوسبورتينديكس ثم سيتم العمل بوندوني بعدم تعطيل. الحرفي والصغير الحجم. واحد الحلول الممكنة إضافة أكسينستروكشن لجنة التفاوض الحكومية الدولية على سطر 289 لتمكين. الحرفي والصغير الحجم، و CX ديسمبر على ofDISABLE.ASM البند 126. إذا تركت التعليمات البرمجية في حالته الراهنة، تعزيز الأجهزة على COM1 العمل ويلستوب بعد تشغيل قياسي ثم وضع Windows.

تعطيل كالمعتاد. يجب ربما إعادة كتابة الحرفي والصغير الحجم في فوريدابيليتي ج.

مقاطعة وقت العمل

عند حدوث مقاطعة في أي من ثلاثة أوضاع المعالج (مقاطعة انهانسيدبروتيكتيد الوضع الظاهري، المقاطعة الوضع المحمي في الوضع القياسي، مقاطعة حقيقية الوضع المحمي)، ينتقل إلى نقطة إدخال قرب ofWACOM.ASM العليا.

وكما ذكر من قبل، التعليمات البرمجية التي يتم تشغيلها في وقت المقاطعة كله في مقطع ثيداتا. البند 54 من لوحة WACOM. يبدأ ASM قطعة بيانات، وأنه لا نوتيند حتى سطر 809 في نهاية الملف. في وقت لاحق، سافينجسجينيد عن طريق وضع التعليمات البرمجية في مقطع البيانات قد لا تبرر وادي ثيكونفوسيون.

معالجات مقاطعة كافة اتبع نفس الاستراتيجية. أولاً، حاول إنشاء حزمة أبين. ثانيا، الحصول على المعالج في وضع مناسب (بروتيكتيدمودي). ثالثا، استدعاء deal_with_pen_packet.

Emode_int، في البند 124 من لوحة WACOM. الحرفي والصغير الحجم، يتم تمرير نقطة الإدخال للمقاطعة الظاهري انهانسيدمودي إلى برنامج تشغيل القلم الظاهري كجزء من تمكين. عند تشغيل هذه التعليمات البرمجية، يوجد بالفعل حزمة قلم في متغير pp (الحزمة القلم) (تم وضعها هناك برنامج تشغيل قلم الظاهري)، وإيسالريادي المعالج في الوضع المحمي. وبالتالي عمل هذا إيسريلاتيفيلي معالج المقاطعة سهلة.

نظراً لعدم إدخال برنامج التشغيل القلم الظاهري emode_int، خط انابليسينتيروبتس 125. تسجيل بنود 126 و 127 حفظ BP وتعبئتها ثيفالوي 2. خلال معالج المقاطعة، يتم تسجيل عمليات المستخدمة كيبتراك الوضع ما كان المعالج في عند وقوع المقاطعة؛ 0 = 2، المحمي القياسي = 4 الظاهري، محمية المحسن = الحقيقي القياسية.

128-130 بنود حفظ سجلات أخرى، والبند 131 الحصول على محدد البيانات بروتيكتيدمودي بالإشارة إلى إزاحة DS_reg من مقطع التعليمات البرمجية. الآن بعد أن سجل DS قيمة المناسبة، يمكن أن تعاني فجوتانينت علامة حتى يعرف تمكين المقاطعات تتدفق.

ثم سطر deal_with_pen_packet المكالمات 134 وتستعاد تسجيلات IRET لإرجاع التحكم إلى فيرتوالدريفير تنفيذ معالج ثينتيروبت.

عندما تصل إلى مقاطعة في الوضع المحمي القياسي الحقيقي أو القياسية، يجب تنفيذ برنامج التشغيل زبين الإدخال/الإخراج لقراءة بايت المعلومات من تابليتاند محاولة إنشاء حزمة قلم. وصول المقاطعات الوضع الحقيقي في line153، والمقاطعات الوضع المحمي التوصل إلى البند 169. في كلتا الحالتين، ثييريستوري المقاطعات (لن يكون هناك أي تسلسل أكثر المقاطعات حتى إرسال للموافقة المسبقة عن علم اوييس)، يتم حفظ السجل بي بي ومحملة بالمناسبة (4or 0) قيمة والتنفيذ ينتقل إلى التسمية int_286 على البند 185.

186-188 بنود حفظ السجلات الهامة، وتحميل البند 189 بروبيرسيجمينت (الوضع الحقيقي) أو بيينديكسينج من سجل عمليات تسجيل محدد (الوضع المحمي) في DS.

196-201 بنود تحقق من حرف جاهزة على سطر الإدخال/الإخراج. يتم إنشاء سوميتيميسينتيروبتس لأسباب أخرى، ولا برنامج قلم نوتوانت لقراءة قيمة غير صالحة خارج الخط التسلسلي في هذه الحالة.

خطوط 213 217 قراءة حرف إلى تسجيل AL ثم ثم تحقق من تجاوز فورداتا. إذا كان جهاز الكمبيوتر اللوحي بتوليد معلومات أسرع ثانثي PC يمكن معالجتها، ثم يحدث تجاوز البيانات التسلسلية والبت أو جيتسيت في سجل LSR على شريحة الاتصالات. في هذه الحالة، ثينتيروبت واكسيكوتيونجوس إلى البند 204، حيث طرد كافة البيانات التي تم تجميعها في قرص مؤشر ترابط عمليات العودة.

وضع البنود 223 267 البايت في المكان المناسب في رجبيتيبوفير، بينما أخذ المزامنة بت الحالة في الاعتبار. COUNT_ERRORS (and252 خطوط 231) هو خيار وقت تجميع سجلات الأخطاء أندونيكسبيكتيد نونسينك بت غير متوقع بت المزامنة في مناطق بينينفوستروكتوري كلمة محجوزة. عند اختبار برنامج تشغيل على الأجهزة الجديدة هو هذه الميزة مفيدة كثيرا ما تونابل ولاحظ كيف خالية من الأخطاء الاتصالات التسلسلية. قد يكون من المفيد لمراقبة أخطاء التجاوز أيضا.

سطر 273 بالتحقق مما إذا كان قد تم سحبها معلومات كافية إيقاف ثيتابليت لإنشاء حزمة قلم. إذا لم يكن (خط 275)، روتينيريتورنس المقاطعة. إذا تم انتشال 7 بايت معلومات إيقاف الكمبيوتر اللوحي، تتم إعادة تعيين فهرس ثيبيتيبوفير ويتم تعيين علامة فجوتانينت. يمكن إعادة تسمية شولدبروبابلي فجوتانينت إلى فجوتاباكيت، لأنه بذلك مرة واحدة على الأقل تم خدمتها 7interrupts.

خطوط 285 و 286 تحقق اكوم بت أووتوفرانجي. مجموعة, X, Y، وحقول الحالة لا تحتاج إلى معالجة. يحصل pp (الحزمة القلم) مجموعة بت itsPDK_OUTOFRANGE، وتنتقل إلى WI_constructed_pen_packetlabel التعليمات البرمجية.

أو خطوط تحويل 302 322 بيانات الكمبيوتر اللوحي إلى س والإحداثي ص و 328 بنود-352 تعيين بت حزب كمبوتشيا الديمقراطية الحزمة القلم وربما بريسوريفيلد أول حقل البيانات OEM أيضا.

في سطر 359، تم إنشاء حزمة قلم صالح ووضع في بفاريابل. استدعاء معالج المقاطعة الآن أما deal_with_pen_packet(protected mode) أو دالة رد الاتصال الوضع العادي (الوضع الحقيقي)، ويتشسويتشيس إلى deal_with_pen_packet المكالمات والوضع المحمي. عندما كالريتورنس هذا إذا كان المعالج في الوضع المحمي، الطلب بالفعل بينسينت للموافقة المسبقة عن علم من دوب (deal_with_pen_packet). البند 361 يتحقق وضع فوربروتيكتيد، وإذا كان صحيحاً، يتخطى عبر التعليمات البرمجية للطلب على بنود 366 370. خطوط 371 375 استعادة تسجيلات والعودة من المقاطعة.

إذا كان المعالج في الوضع العادي عند حدوث المقاطعة أو بند سطر استدعاء 359will في موقع غامضة داخل الجداول الخاصة دمبي وتنفيذ ويلبوب بها في 397 مع المعالج في الوضع المحمي. تسجيل بنود 397-404simulate العودة في مؤشر ترابط الوضع الحقيقي مجموعة، التي موستدو حيث أن يستمر مؤشر الترابط الحقيقي وضع التنفيذ في إينستروكتيونافتير الحاجة إلى بند 359. تعيين السطر 405 تسجيل BP الوضع العادي إلى 0، حيث أنها لن ترسل الطلب إضافي للموافقة المسبقة عن علم.

عند إدخال إجراء استرجاع الوضع الحقيقي، يشير ES:DI إلى بنية therm_callback يحتوي على المعلومات التي DPMI يحتاج إلى بروبيرليريتورن مرة أخرى في الوضع العادي. إذا دخلت مرة أخرى هذا الروتين، ستتم الكتابة فوق القيم oldrm_callback وليكيليكراش معظم سيقوم برنامج التشغيل القلم. لمنع هذا، نسخ برنامج تشغيل قلم rm_callbackstructure الحالي فتحه فارغة في لوح بني rm_callback.

خطوط البحث 411 417 الجدول لفتحه فارغة. يمكن العثور على أي، إرسال الطلب بنود 422-425 والعودة بسرعة إلى الوضع المحمي لأنه لا يمكن معالجة ثيسينتيروبت. هناك خطأ هنا. هناك سليغتشانسي هذا الكمبيوتر اللوحي 7 مقاطعات يصلون بعد إرسال الطلب ويمكن أن يكون thelast أحد في الوضع الحقيقي يمكن إجراء استرجاع الوضع الحقيقي بيرينتيريد. بينما بعيد احتمالات حدوث ذلك، يمكن أن يحدث، وثم يمكن أن تعطل برنامج القلم. ما يجب القيام به في ثيسبوينت التعليمات البرمجية هو بدلاً من إرسال الطلب، مجرد تعيين ريجيستيرباك الوضع الحقيقي بي بي إلى قيمته الأصلية 4 وثم العودة. استخدام هذا الأسلوب، ثيتيست على سطر 362 ستفشل، وتشغيل قلم إينتيروبتسديسابليد (CLI على سطر 366) من الطلب إلى نهاية إينتيروبثاندلير.

في الحالة الأكثر شيوعاً، برنامج القلم في سطر 428، حيث العثور على سلوتيس فارغة ووضع علامة عليه الكامل. بعد الزيادة على بوينتستو DS:BX 429، خط الفضاء حيث سيتم نسخ بنية rm_callback. حفظ هذا فالويجيتس على المكدس (خطوط 431-432) كمرجع في المستقبل، وبنية therm_callback المنسوخة (خطوط 433 437).

خط 439 الأصفار السجل بي بي حتى يعرف دوب هذا هو هاندلينجثريد الإدخال/إخراج بدلاً من مؤشر ترابط المقاطعة الظاهرية غير أنا/س (عند BP = 2). Line441 يستدعي دوب، وثم خطوط استعادة 443 444 intoES:DI مؤشر rm_callback، كما يتطلب DPMI لعودة. تعطيل سطر 445 المقاطعات ووصل إلى مقاطعة بيكوسيف بين وضع علامة الفتحة فارغة مرة أخرى (خط 446) ويمكن الكتابة فوق عودة إلى الوضع العادي (خط 449)، هناك بنية rm_callback تشانسيثي طفيف في ES:DI و DPMI.

يتم Deal_with_pen_packet يبدأ في السطر 474، حيث المواضيع ثريينتيروبت معا. ومن هذا الإجراء التي تم تمريرها بينباكيتس وأخيراً إلى PENWIN. DLL.

474-495 خطوط تدوير قيم س وص في بنية pp استناداً إلى ثيورينتيشن الشاشة. خطوط 501 531 معايرة حقول X و Y الحزمة القلم وتحويل القيم من نظام الإحداثيات الأولية (ثيفالويس قادمة من الكمبيوتر اللوحي) إلى وحدات الكمبيوتر اللوحي (ألف جزء أنينتش).

خط 537 يجعل DS:SI أشر إلى الحزمة القلم. وهذا ما PENWIN. دليكسبيكتس.

خطوط 538 546 (التي هي فقط تم تجميعها في حالة إيسديفينيد موجها التشغيل) التحقق مما إذا كان برنامج تشغيل قلم هو إعادة تشغيل القلم الحزم راثيرثان إنشاء أخرى جديدة. إذا كان برنامج التشغيل القلم في وضع التشغيل، فإنه callsdeal_with_play_mode (البند 541)، التي ستحل محل باكيتويث القلم الحالي الذي يتم تشغيل. هذه الدالة اختيار أبورت الحزمة القلم الحالي (إذا كان هناك أي شيء للعب) بإرجاع 0; إذا إيتدوس، برنامج التشغيل القلم بالانتقال إلى نهاية دوب.

تكون خطوط 547 551 التعليمات البرمجية الشرطية المزيد استدعاء فيلتيرينجالجوريثم. مرة أخرى، إذا خوارزمي الترشيح بإرجاع صفر، لن يتم إرسال بينباكيت الحالي إلى PENWIN. DLL.

خطوط 552 568 استخدام الميزات الخاصة اكوم اللوحي لضمان ذلك الحدث anout نطاق إنشاؤها بواسطة الكمبيوتر اللوحي لن تحصل على فقدت بسبب أنيرونيوس بايت في الاتصالات التسلسلية. إنشاء أقراص معظم الأحداث خارج نطاق واحد فقط عندما ينتقل القلم خارج النطاق. يعرف هذا الوضع "متابعة إيقاف التشغيل". إنشاء أقراص بعض المقاطعات في سامبلينجراتي المناسب حتى عندما يكون القلم خارج النطاق. يعرف هذا الوضع "التحدث إلى أعلى".

إذا حدث خارج نطاق يضيع بسبب تجاوز تسلسلية، سلك تالف أو وحدة المعالجة مركزية بطيئة يتعذر متابعة الاتصال مع أجهزة الكمبيوتر اللوحي، ثم سيتم القلم خارج النطاق لكن أعتقد القلم نظام التشغيل لا يزال إينرانجي. نظام التشغيل قد تفكر لا يزال لمس القلم ثيتابليت. يمكن أن يسبب هذا العديد من مشاكل عالقة مثل الأزرار، ريكوجنيتيونابيرينج تعليق، وما إلى ذلك. برنامج تشغيل تابليتدوس NCR 3125 القلم تماما هذا المجلس الوطني للمقاومة، وتلقى مراجعة رهيبة في الأخيرة (آب/أغسطس 1992) قضية INFOWORLD.

الحصول على برنامج تشغيل قلم لوحة الرسم WACOM حول هذه المشكلة بوضع طريقة التحدث الهاتفي تابليتينتو اكوم عندما يكون القلم في النطاق ووضع الوضع الاحتياطي إينتوشوت الكمبيوتر اللوحي (لأسباب تتعلق بالكفاءة) فقط عندما تمت معالجتها number(OUT_COUNT_MAX) المعطاة للحزم خارج النطاق. حالما تتم إعادته في بيناس في النطاق، يضع برنامج تشغيل قلم الوضع مرة أخرى إينتوسبيك لأعلى اللوحة عدة مرات (IN_COUNT_MAX).

عندما يحصل برنامج التشغيل القلم إلى السطر 572، لديه حزمة قلم في بفاريابل ويجب شيء مع استناداً بيفوريلونتش = أندافتيرلاونتش = القيم المحددة في. الملف INI وتخزينها في رجبتودواراي. خط 572 يضع علامة فلاونتشيد في عاشرا (true إذا PENWIN. DLL قد بدأت، false إذا لم)، يحمل الإجراء المناسب في ال (خط 573)، ومن ثم الفروع استناداً إلى تسجيل AL.

إذا كانت تساوي 0، ينتقل برنامج القلم إلى نهاية روتين دوب. إذا is1، تستدعي do_mouse_event، الذي يتحول موسيباكيت pp (الحزمة القلم)، كما يوجه MOUSE_EVENT المستخدم. EXE. إذا كان 2، يقوم باستدعاء نقطة الإدخال ثيدبينيفينت في PENWIN. DLL، يرسل الطلب للموافقة المسبقة عن علم (إذا I/أبحر معالجته بواسطة برنامج التشغيل القلم وبرنامج تشغيل القلم الظاهري لا) للمقاطعات القلم اللووفورثير, ثم تستدعي بروسيسبينيفينت في PENWIN. DLL. تم توثيق أدبينيفينت أنها صغيرة وسريعة، ونونرينترانت، ويليبروسيسبينيفينت تم توثيق كبيرة، بطيئة، وقيامه حيث يمكن بأمان تشغيل تابليتينتيروبتس (ويجب أن يكون قيد التشغيل) بعد كالتو أدبينيفينت.

يبدأ الإجراء do_mouse_event في السطر 614. تتمثل مهمتها في أن حزمة أبين في DS:SI واستدعاء نقطة الإدخال MOUSE_EVENT المستخدم بتعيين القيم المناسبة للاتصال ثيريجيستيرس. التحقق من thingdo_mouse_event الأولى خارج النطاق. إذا كان القلم خارج النطاق، ليست هناك حاجة لإرسال أي شيء إلى المستخدم. وبعد ذلك، قيم X و Y 617 631 تحويل زبين الحزمة في الكمبيوتر اللوحي الإحداثيات (ألف جزء بوصة) إلى بنود تسوية الإحداثيات (س 0000 FFFFH) ووضعها في BX و CX. وضع بنود 633 641 الزر وعلامات الحركة المطلقة في أكسريجيستير، وتعيين خطوط 643 646 باقي السجلات إلى قيم ثيبروبرياتي. بعد استدعاء MOUSE_EVENT في بند 647، do_mouse_eventreturns. تم توثيق MOUSE_EVENT في موقع MSDN.

تنفيذ بنود 667 746 إجراء deal_with_playmode. الأمر متروك ثيسبروسيدوري جعل DS:SI أشر إلى الحزمة القلم المراد تشغيلها toPENWIN.DLL، أو لإرجاع 0 في AX لمنع أي حزمة القلم من بينجبلاييد مرة أخرى أثناء هذه المقاطعة. خطوط 667 669 جعل tosee الاختيار الواضح إذا كان برنامج التشغيل القلم في وضع التشغيل. إذا لم تكن تقوم بإرجاع النجاح؛ يتم، تشغيل الحزمة قلم موجود بالفعل في DS:SI.

بنود تم تمرير 667 669 التحقق مما إذا كان برنامج التشغيل القلم بالقراءة القلم باكيتسثات إليه عبر رسالة DRV_PenPlayBack. إذا كان هناك نمر الحزم القلم للتشغيل، لأن المخزن المؤقت للحزم القلم امبتياند تم تعيين علامة fPlaying إلى FALSE، ثم deal_with_playmode بإرجاع 0؛ وهذا، عدم تشغيل أية حزم القلم الآن.

خطوط 675 و 676 الحصول على ES:DI للإشارة إلى الحزمة القلم التالية في المخزن المؤقت. يمكن أن تكون أحد نوعي الحزم القلم في المخزن المؤقت، القلم الحزم عرمانة ذلك سيقدم إلى PENWIN. DLL في تسلسل وحزم مؤقتاً. بوسيباكيتس لدى مجموعة بت PDK_PAUSE في حقل وبدك، وقيم ص وإكسكورديناتي معا تصف عدد الميللي ثانية التي يجب أن يتوقف باكيتبلايير القلم قبل إرسال مزيد من الحزم القلم. إذا بينباكيت الحالية حزمة مؤقتاً، رعاية بنود 680 696 التحقق من tosee ساعة في حالة مرور العدد اللازم من ميلي ثانية. أن لم يكن، برنامج التشغيل القلم بإرجاع 0 (خط 704) لإحباط anddoes الحزمة القلم الحالي زيادة مؤشر إيببلاي. إذا انقضى الوقت الكافي، بيندريفير زيادة مؤشر إيببلاي (خط 699) حتى في المرة القادمة سيتم معالجة بينباكيت التالي في قائمة الانتظار. خط 680 ينبغي كالجيتيككونت، ولم جيتسيستيممسيككونت قديمة.

إذا لم يكن الحزمة القلم في ES:DI حزمة مؤقتاً، لكن بدلاً من ذلك بينباكيت عادية PENWIN. DLL، نسخ برنامج تشغيل قلم fromES:DI الحزمة القلم إلى DS:SI (خطوط 708 726). وهذا يتطلب كثير من movsb تعليمة 8086 يفترض المصدر موجود في DS:SI وثيديستينيشن في ES:DI مانيبولاتيونسبيكاوسي تسجيل. وأخيراً، يتم تعيين تسجيل AX لإرجاع true (خط 727).

بنود الاختيار 730 732 لترى ما إذا كانت الحزمة القلم تشغيل المخزن المؤقت فارغاً أم لا. إذا كان كذلك، يتم تعيين علامة fPlaying إلى FALSE (خط 733)، وعدد كورينتيك (مرة أخرى، سطر 734 يجب استخدام GetTickCount) وضع في ثيبوينتير التي تم تمريرها إلى برنامج تشغيل القلم كجزء من رسالة DRV_PenPlayStart.

خطوط 756 807 تنفيذ الإجراءات التي وضعها في اكوم في أوضاع متابعة إيقاف التشغيل upand التحدث. الروتينية لإخراج حرف إلى كمبيوتر لوحي يجب أن بيدوبليكاتيد هنا (خطوط 794 806) لأن روتينيس أووتابليتشار العادية ليس في محدد مؤمنة وقد لا تكون متاحة في وقت المقاطعة.

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

الخوارزمية هي الحفاظ على قائمة انتظار حزم القلم صالحة، حيث إيسديفينيد صحيح أنها ليست أكثر من 1 بوصة بعيداً عن السابق القلم الحزمة. عندما قائمة الانتظار يصل إلى حجم محدد (3) الحزم القلم سوبميتسثي خوارزمية التصفية من رأس قائمة الانتظار.

47-52 من تصفية بنود. نسخ ASM الحزمة القلم إلى ذيل قائمة الانتظار. تعيين البنود 59 64 ح السجل للإشارة إلى الحزمة القلم الحالي وسجل مندي للإشارة إلى حزمة القلم سابقة لعمليات المقارنة. تحقق من البنود 71-93 تصلح إحداثيات س وص، والبنود 99 103 تأكد من تم ثيبوتون الحالة نفسها بالنسبة للحزم القلم القليلة الأخيرة. إذا فشل أي من هذه الاختبارات بينباكيت ثم يتم مسح قائمة الانتظار كافة الأخرى بينباكيتس، الرئيس ويتم تعيين مؤشرات ذيل قائمة الانتظار بشكل مناسب (خطوط 154-162)، والروتين بإرجاع 0. إلا إدخال باكيتيس قلم جديد في قائمة الانتظار بتزايد الذيل (البنود 110-115)؛ لم يكن تيكو كامل (خطوط 122-124)، لم توجد بينباكيتس صالح كافية على التوالي والروتينية بإرجاع 0 (البند 125). إذا إيسفول قائمة انتظار، حان الوقت لإرسال الحزم القلم بإجراء DS:SI أشر إلى تيد قائمة الانتظار (البند 133) وتزايد المؤشر الرئيسي (خطوط 135-141) بإرجاع 1 (البند 143). خلال أنديكريمينتس زيادات مؤشرات قائمة انتظار دائرية، تم إيلاء اهتمام خاص ملفوف بايدتو.

خدمات متنوعة

وتشمل الخدمات المتنوعة كل وظائف داخلية ومعالجات الرسالة ريمينينجدريفير. يمكن العثور في المتنوعة الحرفي والصغير الحجم، التشغيل. الحرفي والصغير الحجم، andDIALOGS.C.

المتنوعة الحرفي والصغير الحجم تحتوي على معظم هذه الوظائف. أووتابليتشار، البنود 108-119، إرسال حرف واحد للكمبيوتر اللوحي، بانتظار ترانسميتريجيستير 8250 أن تكون فارغة (البنود 108 114) وثم إرسال حرف (البنود 116-119). أووتابليتسترينج، في البنود 142-165، إرسال سلسلة منتهية بقيمة خالية null بكامل للكمبيوتر اللوحي، يفيد سينتو سلاسل طويلة تمكين القرص في نفس الوقت.

سيتبينسامبلينجراتي، خطوط 191-231، يعالج في DRV_SetPenSamplingRatemessage. يجب أن ترجع هذه الدالة وضع معدل القديم من الكمبيوتر اللوحي، حيث يتم ثيسفالوي الأول على المكدس على البند 191. خطوط 202-212 محاولة فيندثي أقرب تساوي أو تفوق معدل العينات المعتمدة WACOM (أو أسفل إيفثيري أي معدل أعلاه) المعدل المحدد في الوسيطة. يتم الاحتفاظ بمعدلات سوبورتيدسامبلينج (التي للوحة WACOM tablet of200 الأرباح لا يتجزأ) في الكمبيوتر لوحي (رجوراتيتابل) للبحث السريع. حالما يتم العثور على سعر بروبيرواكوم المعتمدة، يتم إنشاء الأمر المناسب وسينتو اللوحي (خطوط 221 226). خطوط 228 231 تخزين المعدل الجديد في بنية ثيبينينفو وموسيقى البوب معدل أخذ العينات القديمة في القيمة المرجعة للدالة.

خطوط 257-278، سيتبينسامبلينجديستانسي، تنفيذ عملية مشابهة مع بعد ثيسامبلينج من لوحة WACOM tablet. حفظ بند 257 مسافة القديمة في المكدس وبنود حساب 258-262 المسافة التي سيتم استخدامها (أي قصاصة القيمة المطلوبة للأجهزة)، البند 266 حفظ القيمة الجديدة في بنية PenInfo خطوط بناء 268-273 وارسال أمر الكمبيوتر لوحي وخطوط pop 277-278 مسافة القديم إلى قيمة الإرجاع.

يتم تطبيق معالج الرسالة DRV_GetPenInfo في بنود 311-328. Line311 التدقيق لمعرفة ما إذا كانت معلمة الإدخال فارغة، مما يعني إيسونلي الطالب مهتما بوجود أو عدم وجود الكمبيوتر اللوحي. 315-319copy خطوط بنية PenInfo إلى وسيطة مؤشر طويلة وخطوط 327-328always إرجاع true. تحتوي هذه الدالة على عدة مشاكل. أولاً، إذا كان يتم تمرير مؤشر أنينفاليد لهذه الوظيفة، سوف GP () حدوث خطأ حماية عام، هو أمر غير مقبول. يجب استدعاء هذه الدالة فيرستاند التحقق من منطقة الذاكرة المحددة التي يمكن كتابتها إلى إيسبادوريتيبتر. ثانيا، ثيسفونكشن دوماً بإرجاع true، حتى إذا لم يتم إرفاق القرص إلى ثيهاردواري. ربما يجب أن هذه الدالة بإرجاع قيمة FGotAnInt.Better، بعد إجراء التحميل أو روتين تمكين ينبغي إرسال سلسلة واكومدياجنوستيك، التحقق من نتيجة إرجاع صالحة، وتخزين ثيكسيستينسي/عدم وجود قرص في متغير عمومي. في حالة أوفدريفيرس للأقراص التي تشكل جزءا من جهاز الكمبيوتر دائماً إرجاع true إيساكسيبتابل.

تنفيذ بنود 338 359 DRV_GetName. هذا إجراء بسيط بكتابة سلسلة حجم معرف مسبقاً قدر ما تستطيع في المعلمة الخاصة به، وترجع أوفتشاراكتيرس الأرقام المكتوبة في DX:AX. مرة أخرى، كما ينبغي هذه الدالة كاليسبادوريتيبتر للتأكد من نسخ السلسلة لا تعطل.

سيتبيندريفيرينتريبوينتس (خطوط 414 456) يعالج DRV_SetPenEntryPointsmessage التي PENWIN. يرسل ملف DLL إلى برنامج تشغيل قلم عندما يكون جاهزاً لحزم ريسيفيبين. قبل أن يحصل على إرسال هذه الرسالة إلى برنامج تشغيل القلم، يجب إلا نقع بيندريفير أية مراجع إلى PENWIN. DLL أو إرسال أي باكيتستو القلم أنه. تحويل أية أحداث التي تأتي من خارج الجهاز قبل أما يجب أن يتم طرح هذا جيتسينت رسالة (الأرجح) أو بعيداً إلى الماوس افينتساند قد مرت للمستخدم. EXE. معالجة بنود 423 414 الحصول على وحدة نمطية بيندريفير (بشكل افتراضي PENWIN. DLL) عن طريق استدعاء أندجيتدريفيرمودوليهاندلي أوبيندريفير. 429-442 بنود الحصول على مؤشرات الدالة إلى نقاط ثريينتري في PENWIN. DLL برنامج تشغيل قلم يهتم-أدبينيفينت وبروسيسبينيفينت وأوبداتيبينينفو. والآن بعد أن يتم تشغيل قلم فينيشيدويث PENWIN. DLL، يستدعي كلوسيدريفير برنامج التشغيل القلم، مجموعات فلاجتو فلاونتشيد TRUE (حيث سيتم التبديل معالج المقاطعة إلى أفتيرلاونتش به = كوديباث)، وتقوم بإرجاع true.

تنفيذ بنود 473-484، ريموفيبيندريفيرينتريبوينتس، الفذ المعاكس، وضع برنامج التشغيل القلم إلى حالته الأصلية قبل أن يعرف ofPENWIN.DLL ثاتوف. للتأكد من أن لم إشارات إلى مؤشرات رمز غير صالح، يتم مسح المؤشرات الثلاثة لوظائف PENWIN. إذا أريفيدميدواي في المقاطعة خلال مؤشر دالة مسح، قد حاول استدعاء منهذه واحد مؤشرات الدالة والتأكيد تحطم ذلك مقاطعات تورنيدوف قبل المسح (خط 473)، وتتم استعادة إلى بريفيوستاتي الخاصة بهم بعد المسح (خط 482). علامة فلاونتشيد أيضا إعادة تعيين ويلينتيروبتس معطلة، حيث سيتابع معالج المقاطعة ثيبيفوريلاونتش = مسار رمز، المسار الذي تم استخدامه قبل وجود knewPENWIN.DLL برنامج تشغيل القلم. وأخيراً، ترجع هذه الدالة true في بنود 483 484.

الدالات التالية اثنين في المتنوعة ASM تطبيق معايرة واكومتابليت. معايرة مشكلة OEM، وتختلف احتياجات إيتشبيسي أجهزة المعايرة. لا تحتاج أقراص المعتمة أي كاليبراتيونويث الشاشة، نظراً للشاشة واللوح الموجودة في مواقع مختلفة. طبقت بعض شركات Oem بروتوكول أندكاليبريشن تطبيقات المعايرة الخاصة بهم مع سائقيها القلم.

برنامج تشغيل قلم قراءة معلومات المعايرة من. ملفات INI (كتابة تطبيق معايرة بيا) أثناء تشغيل Windows. ويستخدم ثيسينفورميشن لمعايرة حزم القلم به وقت المقاطعة. سامبليكاليبريشن "لوحة التحكم" توزيع التطبيق مع دريفيرنيدس قلم لوحة الرسم WACOM رسائل إضافية بين تنفيذ-andDRV_GetCalibration DRV_SetCalibration، وقراءة أو كتابة كونتينينجوفسيتس بني المعايرة وقياسات حجم اللوحة. هاندليركوبيس DRV_GetCalibration في بنية معلومات المعايرة الحالية. وكالعادة، يجب استخدام ثيسروتيني إيسبادوريتيبتر لترى ما إذا كانت الوجهة isvalid بناء.

معالج الرسالة DRV_SetCalibration (خطوط 530 579) أكثر تعقيداً لأنه يجب إيقاف المقاطعات (سيكون كارثية لعملية الحزم أبين عندما يتم تحديث نصف القياسات الكمبيوتر اللوحي فقط)، ويجب أن اتجاه الشاشة في الاعتبار (إذا كان الشاشة درجة rotated90، يتم عرض الارتفاع وهو ارتفاع العرض). خطوط يستدعي 550 568 ثيداتا نسخة من هيكل إلى قياسات اللوحة المحلية، ثم تشغيل زبين أوبداتيبينينفو في PENWIN. DLL، كجميع السائقين القلم يجب دووهينيفير القياسات الكمبيوتر اللوحي أو تغيير حقول أويمداتينفو بينينفوستروكتوري.

إجراء آخر في المتنوعة الحرفي والصغير الحجم هو إنهاء Windows إجراء بيندريفير DLL، يجب أن يكون لديك كافة DLLs Windows (WEP). تجدر الإشارة إلى مجرد أجاينثات كافة الإجراءات في المتنوعة يجب كتابة الحرفي والصغير الحجم في C، لجعلها thatwould الصيانة أكبر وأسهل للقراءة.

تشغيل. يطبق ASM ثلاث رسائل المقترنة مع قراءة بينباكيتس إلى PENWIN. DLL. أثناء تنفيذ هذه الرسائل غير ستريكتليريكويريد لنظام التشغيل Windows "استخدام قلم الكمبيوتر" الإصدار 1.0، فهي فورال المطلوبة في الإصدارات المستقبلية من Windows للحوسبة القلم ول OEM الذين ريموفيسثيس الرمز فقط سيجعل تطوير برامج تشغيل قلم thatmuch الإصدارات المستقبلية أكثر صعوبة.

بينبلايستارت (خطوط 68-90 من اللعب. ASM) لا تفعل الكثير. الأولى أنه ديسابليسينتيروبتس، لأن الإشارة إلى مجموعة من المتغيرات العمومية في مقاطعة كودينيدس بإمكانية التحكم في حركة واحدة. بدلاً من استخدام CLI و STI، يجب استخدام هذا الإجراء الماكرو انتيركريت وليفيكريت، ويلريستوري أي إشارة المقاطعة الخاصة به الحالة السابقة بدلاً من الوايسرينابلينج بمقاطعة عند مغادرة هذا الإجراء. Isset علامة فبلايمودي إلى TRUE في بند 70 لأن برنامج تشغيل قلم الخوض في مزيد من الأحداث القلم من الأجهزة التي يجب إرسالها إلى PENWIN أندنو وضع التشغيل. تم تعيين إشارة DLL. ثيفبلايينج إلى FALSE على البند 71 لأن برنامج التشغيل القلم نوتبلايينج أية حزم القلم حتى الآن. سيتم إرسال أية حزم القلم دريفيرشولد القلم تشغيلها فيما بعد في رسالة DRV_PenPlayback. وضع البنود 73-80 في اكوم في وضع أعلى الكلام. وهذا يعني أن واكومتابليت سيقوم بإنشاء حزم القلم في الحالية الآن حالة حتى معدل أخذ العينات القلم غير قرب الكمبيوتر اللوحي. سيكون القلم الأجهزة تعتمد أوبمودي التحدث إلى إيجاد طريقة أخرى إنشاء المقاطعات معدل أخذ العينات ثيكورينت، ربما باستخدام جهاز توقيت. حفظ البنود 82 إلى 85 مؤشر ثيلونج للمتغير في مساحة البيانات المتصل (الذي يجب أن تكون الصفحة تأمين حيث أن أنه لن يمكن مبادلتها في وقت المقاطعة)، ويلريسيفي أي حساب التجزئة Windows عند الانتهاء من التشغيل سلسلة من بينباكيتس. البند 87 يفرض المقاطعات أن تكون قيد التشغيل، وهو problem(bug) التي تمت مناقشتها سابقا في هذه الفقرة، وبنود 89 و 90 المتصل ترويتو العودة. وكالعادة، هذا الإجراء من المحتمل استخدام إيسبادوريتيبترتو التحقق من صحة متغير لبدوتيميسوب.

123-142 بنود تطبيق معالج الرسالة DRV_PenPlayback. مرة أخرى، استخدم الأسطر 139 و 123 CLI و STI، عند فعلا يجب استخدام وحدات الماكرو ليفيكريت وثينتيركريت. نسخ البنود 125 128 موقع المخزن المؤقت بينباكيت في لبب، حيث يتوقع معالج المقاطعة؛ استخدام إيتشولد IsBadReadPtr للتحقق من صحة المؤشر. خط 130resets إيببلاي في بنية لبب 0 وازاحه البايت التي يتم نهاية المخزن المؤقت الحزمة القلم 132-135compute خطوط مؤشر ووضع ثيريسولت في كبماكس. بعد ذلك يتم تعيين علامة فبلايينج العالمية (البند 137) لأنه يجب تشغيل معالج المقاطعة حزم القلم من لبب، إينتيروبتساري ممكن (البند 139)، وتقوم الدالة بإرجاع true (البند 141-142).

معالج بينبلايستوب هو أبسط من المعالجات الثلاثة-من علامة سيمبليريسيتس فبلايمودي لأن برنامج التشغيل القلم لم يعد في بلايمودي. هذا يفرض معالج المقاطعة لمعالجة الأحداث القلم كالتي كوميوف الكمبيوتر اللوحي. علما بأن ترك الكمبيوتر اللوحي في وضع أعلى الكلام. إذا كان سيتم الحصول على بعض العمل-من-رانجيفينتس من الأجهزة القضيب بعيداً عن الكمبيوتر اللوحي، معالج المقاطعة وإرسالها إلى PENWIN. DLL ولكن في نهاية المطاف معالج ثينتيروبت سيتم وضع الكمبيوتر اللوحي في إيقاف التشغيل حتى يمكن بلا داع مقاطعة الوضع و tabletwon't الكمبيوتر. لأنه تم تغيير واحد فقط جلوبالفاريابل في بينبلايستوب، هناك حاجة إلى تعطيل أو انابلينتيروبتس في هذا الإجراء، ويجب إزالة بنود 169 و 171.

الخدمات المتنوعة الأخير في برنامج التشغيل القلم هو ديالوجبوكس تكوين. تدعم برامج تشغيل Windows للتثبيت مفهوم ديالوجبوكس تكوين، تكوين خيارات متنوعة لبرنامج التشغيل التي تعتبر فريدة بالنسبة إلى إيتشدريفير. إذا كان برنامج تشغيل يعتمد مربع حوار تكوين، فإنه يجب إرجاع ترويتو رسالة DRV_QUERYCONFIGURE (خطوط 144-149 من التثبيت. الحرفي والصغير الحجم). تطبيق لوحة دريفيرسكونترول وتطبيق "لوحة التحكم القلم" إرسال ثيسميساجي إلى برنامج التشغيل القلم. إذا كان برنامج تشغيل قلم يرجع true، ثم تيسير يمكن إظهار مربع حوار تكوين باختيار الزر "إعداد" في برامج التشغيل أو القلم تطبيق لوحة التحكم. عندما إيسكليكيد زر الإعداد، يتم إرسال رسالة DRV_CONFIGURE إلى برنامج تشغيل القلم.

برنامج تشغيل قلم معالجة هذه الرسالة في البنود 159 169 من التثبيت. بيكالينج ASM إجراء كونفيجديالوج في مربعات الحوار. ج. كونفيجديالوج (البنود 37 73) كما سيتم توزيعه في برنامج تشغيل نموذج لوحة WACOM إحضار مربع حوار بسيط الذي يمكن اختيار COM1 أو COM2 كمنفذ الاتصالات. في أبرودوكشن القلم من برنامج تشغيل الفئة، يجب أن يكون المستخدم قادراً على ضبط كل. INIfile التبديل من مربع الحوار هذا، ولم يكن لتحرير. بيهاند الملف INI. وبالتالي، عندما يكتب اكوم برنامج التشغيل الخاص به، يجب أن تتضمن حقول فوربريسوري وقوة إشارة استقرائية.

أول شيء لا كونفيجديالوج الحصول على Com2 الحالية = القيمة من. INI. هذه القيمة ضرورية لعرض مربع الحوار في حالة أولية ثيبروبير واكتشاف ما إذا كان المستخدم بإجراء تغييرات على thesystem. وبعد ذلك، إظهار البنود 46 48 مربع الحوار. جرافيكالديسكريبشن مربع الحوار في مربعات الحوار. حوار الذي تم إنشاؤه بواسطة theWindows 3.1 محرر مربع الحوار مجموعة تطوير البرامج (SDK). بوكسبروسيدوري الحوار قيد كونفيجدلجبروك، البنود 7-35 من مربعات الحوار. ج.

علامة كونفيجدلجبروك _loadds (البند 7) لأنه كالباكفونكشن، و DS المتصل من المؤكد تقريبا أن لا تكون DS من برنامج التشغيل القلم. WM_INITDIALOG، مربع حوار التدقيق (COM1 أو COM2) الزر المناسب استناداً إلى قيمة fCom2Now التي تم تعيين أتينيتياليزيشن إلى القيمة الموجودة في. INI الملف، ولكن قد يكون المستخدم اتخذته المتغيرة. زرين فقط في مربع الحوار بحاجة إلى أية معالجة خاصة والزر تيوك والزر "إلغاء الأمر". "إلغاء الأمر" (البنود 24-27)، fCom2Now انتكاسة للقيمة الموجودة في. الملف INI (fCom2). على موافق (البنود 20-23)، يتم تعيين علامة thefCom2Now إلى اختيار المستخدم بقراءة حالة الاختيار الزر COM2. في كلتا الحالتين، يسمى انديالوج لإغلاق ديالوجبوكس.

بعد مربع الحوار إغلاق مربع، يستمر التنفيذ في البند 48 من مربعات الحوار. ج تحرير مؤشر مثيل كونفيجدلجبروك الحصول على بيماكيبروسينستانسي على البند 46. باقي التعليمات البرمجية في وظيفة إيسيكسيكوتيد فقط إذا كان هذا (وفقا للبند 50) fCom2! = fCom2Now؛ في أنوثيرووردس، إذا اختار المستخدم منفذ COM آخر بدلاً من ذلك الذي يتم في النظام. INI.

تم تصميم برنامج التشغيل القلم عينة اكوم في وضعها الحالي لا منافذ تشانجيكوم بشكل فوري-مجرد تغيير النظام. Ini وريستارتسويندووس. تغيير منافذ COM بشكل فوري سيكون رمز إينبرودوكشن ميزة مفيدة. نظراً لأن Windows إعادة تشغيل خيار تعقيداً، اسريس فرصة لدعم من العملية (خطوط 52-55). إذا أوسيرتشوسيس "نعم، إجراء التغيير وإعادة تشغيل Windows"، ثم يكتب البند 61 Com2 جديد = القيمة في النظام. Ini، والبند 62 يحاول ريستارتويندووس. إذا أرجعت تلك الدالة، حدث خطأ إعادة تشغيل Windows، حيث يجب عليك نسخ برنامج تشغيل قلم بعناية من أي تغييره. ملفات INI (خطوط 67-69) ووضع المستخدم مرة أخرى في again(line 71) المربع الحوار.

هذا الملف لم يقم أي المعالجات سجل وهمي، ويجب كتابة في C.Most القلم برنامج تشغيل التعليمات البرمجية يجب أن تحذو حذوها.
1.00

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

Свойства

ИД на статията: 94701 – Последен преглед: 06/11/2016 02:30:00 – Редакция: 2.0

  • kb16bitonly kbmt KB94701 KbMtar
Обратна връзка