কেমন করে সামঞ্জস্যতা মোড উইন্ডোজে অভ্যন্তরীণভাবে কাজ করে?
কেমন করে সামঞ্জস্যতা মোড উইন্ডোজে অভ্যন্তরীণভাবে কাজ করে?
উত্তর:
সামঞ্জস্যতা মোড তথাকথিত শিম ব্যবহার করে অর্জন করা হয়। টেকনেটে একটি ভাল নিবন্ধ রয়েছে যা এই কাজগুলি বর্ণনা করে।
উইন্ডোজ অ্যাপ্লিকেশন ফাইলগুলিতে একটি আমদানি সারণী থাকে যা অ্যাপ্লিকেশন লোডারকে অ্যাপ্লিকেশনটির জন্য প্রয়োজনীয় ডিএলএল প্রয়োজন এবং সেগুলি থেকে এটি কোন ফাংশন ব্যবহার করে তা জানিয়ে দেয়। উদাহরণস্বরূপ রেফারেন্সের জন্য একটি প্রক্রিয়া শক্তি GetVersionEx
মধ্যে kernel32.dll
। একটি প্রোগ্রাম সামঞ্জস্য মোডে চালানোর হইবে, তখন shim আবেদন এবং shim প্রতিস্থাপিত মধ্যে রাখা হয় GetVersionEx
ফাংশন, যাতে আবেদন কল না GetVersionEx
থেকে kernel32.dll
কিন্তু GetVersionEx
shim হবে। শিমড ফাংশনগুলি তারপরে পূর্ববর্তী উইন্ডোজ সংস্করণগুলির আচরণ বাস্তবায়ন করে। GetVersionEx
একটি সহজ নমুনা, প্রতিটি উইন্ডোজ সংস্করণ তার নিজস্ব সংস্করণ নম্বরগুলি ফেরত দেয় GetVersionEx
, তাই কোনও পুরানো উইন্ডোজ দ্য নকল করার সময়GetVersionEx
ফাংশন এখন উইন্ডোজ 7 সংস্করণ নম্বরগুলি দেয় না তবে উদাহরণস্বরূপ উইন্ডোজ এক্সপি সংস্করণ নম্বরগুলি দেয়। সুতরাং অ্যাপ্লিকেশন বিশ্বাস করবে এটি উইন্ডোজ এক্সপিতে চলছে।
উইন্ডোজ সংস্করণ থেকে উইন্ডোজ সংস্করণে আরও কিছু পরিবর্তন হয়েছে। পুরানো সংস্করণগুলিতে উদাহরণস্বরূপ, যদি কোনও প্রোগ্রাম কোনও ডিএলএল লোড করে, ডিএলএল অনুসন্ধানের পথে বর্তমান ডিরেক্টরিও অন্তর্ভুক্ত থাকে। এটি একটি সুরক্ষা সমস্যা, সুতরাং উইন্ডোজের নতুন সংস্করণগুলি ডিফল্টরূপে বর্তমান ডিরেক্টরিটিতে অনুসন্ধান করে না। সঠিক শিমের সাহায্যে আপনি পুরানো আচরণ অনুকরণ করতে পারেন।
যেহেতু শিমগুলি অ্যাপ্লিকেশন এবং উইন্ডোজ এপিআইয়ের মধ্যে কেবল একটি স্তর তাই কোনও শিম অ্যাপ্লিকেশন নিজেই যা করতে পারে তা করতে পারে। শিমটি ইউএসি বা রক্ষিত ফাইল অ্যাক্সেস করার জন্য উদাহরণস্বরূপ ব্যবহার করা যাবে না।
আপনি যদি আরও জানতে চান তবে এখানে কয়েকটি লিঙ্ক আপনাকে আকর্ষণীয় মনে হতে পারে:
বিশেষত মাইক্রোসফ্ট অ্যাপ্লিকেশন সামঞ্জস্যতা টুলকিট এক নজর দেখার মতো। এই সরঞ্জামটি আপনাকে জ্ঞাত সমস্যাগুলি সহ সমস্ত উপলভ্য সামঞ্জস্যতা ফিক্স এবং মোডগুলি এবং প্রতিটি অ্যাপ্লিকেশনে কোনগুলি স্থির করা হয়েছে সেগুলি সম্পর্কিত অ্যাপ্লিকেশনগুলির উপর একটি ওভারভিউ দেয়।
আমার মনে হয় অনেক কিছু ঘটে যায়। একটি সহজ উদাহরণটি হ'ল কোনও প্রোগ্রাম আপনার উইন্ডোজ সংস্করণটি পরীক্ষা করতে পারে তবে নতুন অপারেটিং সিস্টেমের রিটার্ন মান দ্বারা বিভ্রান্ত হয়। সুতরাং সামঞ্জস্যতা মোড ব্যবহার করে উইন্ডোজকে কোনও ভুল সংস্করণ রিপোর্ট করতে বলত। রেমন্ড চেন আরও কিছু বিষয় উল্লেখ করেছেন: http://blogs.msdn.com/oldnewthing/archive/2003/12/23/45481.aspx#45590
সামঞ্জস্যতা মোড সম্পর্কে আমার জ্ঞানটি হ'ল এটির কারণে বেশ কয়েকটি উইন্ডোজ সিস্টেম কল প্রোগ্রামকে মিথ্যা বলে।
এর একটি সুস্পষ্ট উদাহরণ হ'ল getVersionEx এবং GetVersion ফাংশন যা প্রকৃতটির পরিবর্তে নির্দিষ্ট উইন্ডোজ সংস্করণটির প্রতিবেদন করে।
পুরানো শৈলীর ফাইল পাথগুলি স্বয়ংক্রিয়ভাবে অনুবাদ করা হয় যখন সামঞ্জস্যতা মোডে কোনও প্রোগ্রাম সুপরিচিত সিস্টেম ফোল্ডারে কোনও ফাইলকে বোঝায়। উদাহরণস্বরূপ
, এক্সপি সামঞ্জস্যতা মোডে একটি প্রোগ্রাম উইন্ডোজ 7 এ চলার সময় C:\Documents and Settings
অনুবাদ করা হয় C:\Users\<user>\Documents
।
এই নিবন্ধটি এটি ব্যাখ্যা করার জন্য একটি ভাল কাজ করে।
http://arstechnica.com/information-technology/2010/01/windows-xp-mode/
উইন্ডোজ With এর সাথে, রেডমন্ড সমস্যার সমাধান দিয়েছে: উইন্ডোজ এক্সপি মোড। উইন্ডোজ এক্সপি মোড ভার্চুয়ালাইজেশন প্রযুক্তি ব্যবহার করে উইন্ডোজ এক্সপির ভার্চুয়ালাইজড অনুলিপিটিতে চলমান অ্যাপ্লিকেশনগুলিকে উইন্ডোজ 7 স্টার্ট মেনুতে এবং উইন্ডোজ 7 ডেস্কটপে প্রদর্শিত হতে দেয়।