كيف يمكنني مشاركة HWND بين 32 و 64 تطبيقات الشيء في الفوز إلى x64؟

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

  •  10-07-2019
  •  | 
  •  

سؤال

وMSDN يقول لي ان مقابض النوافذ (HWND) يمكن أن تكون مشتركة بين 32- و 64 بت التطبيقات، في <لأ href = "http://msdn.microsoft.com/en-us/library/aa384203٪28VS 0.85٪ 29.aspx "يختلط =" noreferrer "> الاتصال Interprocess (MSDN). ومع ذلك، في Win32 على HWND هو 32 بت، بينما في ويندوز 64 بت هو 64 بت. فكيف يمكن أن تكون مشتركة مقابض؟

وأعتقد ينطبق نفس السؤال على مقابض إلى الكائنات المسماة مثل كائنات المزامنة، الإشارات ومؤشرات الملفات.

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

المحلول

ولا حقيقة أنها يمكن أن تكون مشتركة يعني أن تستخدم فقط في أقل 32 بت في عمليات Win64؟ مقابض النوافذ المؤشرات لا مؤشرات، على الأقل بقدر ما استطيع ان اقول، لذلك إلا إذا أراد MS للسماح أكثر من 2 ^ 32 نافذة / ملف / مزامنة / الخ. يعالج ليس هناك سبب لاستخدام عالية 32 بت من void* على Win64.

نصائح أخرى

وكما يشير دانييل روز أعلاه، و ثائق MSDN تنص الآن :

<اقتباس فقرة>   

... أنها آمنة لاقتطاع مقبض (عند تمريرها من 64 بت إلى 32 بت) أو تسجيل الدخول تمديد مقبض (عند تمريرها من 32 بت إلى 64 بت).

وهناك لا يزال يبدو أن هناك بعض الخلط هنا، بالنظر إلى أن قيل لي الصفر التمديد هو الطريقة الصحيحة من قبل ديف WOW64. إذا كنت تكتب وحدة نمطية 64 بت التي يحصل مقابض من 32 وحدات قليلا، قد يكون الرهان الأكثر أمانا للمقارنة فقط وانخفاض 32 بت من التعامل معها (أي اقتطاع). خلاف ذلك، قد اشتعلت بها على لافتة تمديد مقابل فرق صفر-التمديد.

وأنا تلقيت للتو رسالة بالبريد الالكتروني من مطور مايكروسوفت WOW64 الذي يؤكد:

ومقابض هي 32bit و يمكن أن تكون مبتورة بأمان / صفر الموسعة. صحيح لكل من مقابض الكائن نواة وUSER / GDI يعالج.

وإلقاء نظرة في Microsoft واجهة تعريف اللغة (MIDL) دليل ترقية، صفحة 12 (http://msdn.microsoft.com/en-us/library/ms810720.aspx)

وهنا يكون للمستخدم نظرة ع ومقابض GDI وتمديد علامة 32B القيم

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

وعلى نحو مماثل، لx64 و البرمجيات 32BIT ولتشغيل بشكل متزامن على آلة معينة، وعلى الجميع أن تحصل على طول، HWNDs (وكثير مقابض) يجب أن يظل 32bit و متوافقة.

وأعتقد أن ما أقوله هو أنني أعتقد أن هذا هو رهان آمن جدا، على الأقل لعمر من ويندوز 7، ويندوز المحتمل "التالي".

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