উইন্ডোজ ৭-এর ৬৪-বিট রিলিজের সাথে উইন্ডোজ ডিরেক্টরিতে ফোল্ডার বণ্টনের সাধারণ নিয়মে একটি ছোট পরিবর্তন আনা হয়েছিল। উইন্ডোজ ১০, উইন্ডোজ ৮, এবং উইন্ডোজ ৭-এর ৬৪-বিট সংস্করণে দুটি নতুন ফোল্ডার অন্তর্ভুক্ত রয়েছে। সেগুলো হলো Sysnative এবং SysWOW64 ফোল্ডার। এটি শুধু ৬৪-বিট উইন্ডোজে পাওয়া যায়। আপনি যদি ৬৪-বিট মেশিনে ৩২-বিট উইন্ডোজ চালান, তবে আপনি এগুলো দেখতে পাবেন না। ৩২-বিট মেশিনে ৩২-বিট উইন্ডোজ চালালেও এগুলো দেখা যাবে না।
উইন্ডোজ ডিরেক্টরির বাইরে একটি আরো ফোল্ডার আছে, যেটিকে Program Files (x86) বলা হয়। আমরা Program Files ফোল্ডারের নামজনিত অভ্যস্ত, যা আমাদের প্রোগ্রামের এক্সিকিউটেবল ফাইলগুলো সংরক্ষণ করে। ৬৪-বিট সিস্টেমে, ৬৪-বিট প্রোগ্রামগুলো Program Files ফোল্ডারে থাকেحينकि ৩২-বিট প্রোগ্রামগুলো Program Files (x86)-এ থাকে। যাইহোক, ৬৪-বিট মেশিনে ৩২-বিট প্রোগ্রাম চালানোর জন্য উইন্ডোজ একটি এমুলেশন ব্যবহার করে। এবং তাই উইন্ডোজ (৬৪ বিট) এর সিস্টেম ফোল্ডারগুলো সম্পর্কে জানা ও বোঝা প্রয়োজন যাতে আপনি আপনার প্রয়োজনীয় ফাইলটি কিভাবে খুঁজে পাবেন সেটি জানতে পারেন।
৩২-বিট মেশিনের বিপরীতে, যেখানে ৩২-বিট DLL গুলো System32 ফোল্ডার-এ সংরক্ষিত থাকে, ৬৪-বিট সংস্করণের উইন্ডোজ ৬৪-বিটের সাথে সম্পর্কিত DLL গুলো System32 ফোল্ডারে সংরক্ষণ করে। এটি প্রোগ্রামিং সুবিধা ও পশ্চাদ্ভাগী সামঞ্জস্যতা প্রদানের জন্য করা হয়েছে। অর্থাৎ, যদি একটি ৬৪-বিট প্রোগ্রাম তার কোডে System32-কে রেফারেন্স দেয়, তবে কল করার সময় এটি স্বয়ংক্রিয়ভাবে ৬৪-বিট DLL পাবে। এটি ডেভেলপারদের সাহায্য করে কারণ তাদের প্রোগ্রামের কোড উইন্ডোজ ৬৪-বিটের জন্য পরিবর্তন করতে হয় না।
সংক্ষেপে, উইন্ডোজ উইন্ডোজ ডিরেক্টরির System32 ফোল্ডার থেকে সকল ৩২-বিট DLL গুলো হটাত যেন পिछলে লেখা প্রোগ্রামগুলো API ব্যবহার করার পরেও ৬৪-বিট আপগ্রেড করার পর সঠিক DLL পাওয়ার জন্য অন্য কোনো ফোল্ডারে সরিয়ে দিয়েছে। সমস্যাটি তখন হয় যখন একটি ৩২-বিট অ্যাপ্লিকেশন System32 ফোল্ডার অ্যাক্সেস করার চেষ্টা করে। এই ক্ষেত্রে, প্রোগ্রামটি ক্র্যাশ করবে কারণ এটি ৬৪-বিট DLL হ্যান্ডল করার জন্য লেখা হয়নি।
পড়ুন: Panther ফোল্ডার কী?
উইন্ডোজ ৬৪-বিটে SysWOW64 ফোল্ডার
সকল ৩২-বিট DLL গুলো উইন্ডোজ ১০, উইন্ডোজ ৮, এবং উইন্ডোজ ৭-এর ৬৪-বিট সংস্করণে নতুন SysWOW64 ফোল্ডার-এ সরিয়ে দিয়া হয়েছে, যাতে ৩২-বিট প্রোগ্রামগুলো ৩২-বিট DLL কল করার সময় SysWOW64 ফোল্ডারএ পৌঁছাতে পারে।
আপনি মনে করতে পারেন যে ডেভেলপারদের তাদের প্রোগ্রাম ও অ্যাপ্লিকেশন স্ক্যান করে DLL ফাংশনগুলো SysWOW64 ফোল্ডার तरफ পয়েন্ট করতে হবে। কিন্তু মাইক্রোসফ্ট এটা ইতিমধ্যে খেয়াল করেছে। যদি এটি একটি ৩২-বিট প্রোগ্রাম হয় যা C:\Windows\System32 কল করছে, তবে একটি এমুলেটর পথটিকে C:\Windows\SysWOW64-এ রিডাইরেক্ট করবে। অর্থাৎ, উইন্ডোজ ৬৪-বিটে ৩২-বিট প্রোগ্রাম চালানোর জন্য একটি এমুলেটর ব্যবহার করা হয়, যাতে সঠিক পশ্চাদ্ভাগী সামঞ্জস্যতা থাকে এবং DLL ফাইল কল করার সময় ত্রুটি এড়ানো যায়।
পড়ুন: FOUND.000 ফোল্ডার কী?
উইন্ডোজ ৬৪-বিটে Sysnative ফোল্ডার

একটি ৩২-বিট প্রোগ্রাম বা অ্যাপ্লিকেশন একটি ৬৪-বিট DLL প্রয়োজন হতে পারে। সেক্ষেত্রে, আপনাকে রিডাইরেকশন ফোল্ডার Sysnative ব্যবহার করতে হবে। আপনি SysNative কে একটি ভার্চুয়াল ফোল্ডার ও আলিয়াস বলে বিবেচনা করতে পারেন যা System32 ফোল্ডারকে পয়েন্ট করে। এটি শারীরিকভাবে আপনার সিস্টেমে বিদ্যমান নয়।
তাই যদি আপনার ৩২-বিট প্রোগ্রামকে একটি ৬৪-বিট DLL অ্যাক্সেস করতে হয়, তবে C:\Windows\System32 ব্যবহার করবেন না কারণ ৩২-বিট প্রোগ্রাম এমুলেটর এটি ৩২-বিট DLL ফোল্ডার SysWOW64-এ নিয়ে যাবে। বরং C:\Windows\SysNative পথটি DLL প্রোগ্রামের জন্য ব্যবহার করুন। পথে Sysnative ব্যবহার করলে এটি System32 ফোল্ডারএ রিডাইরেক্ট হবে, SysWOW64-এ না।
আপনি যদি ফাইল উইন্ডোজ এক্সপ্লোরার খুলেন, তবে C:\Windows-এ Sysnative ফোল্ডারটি খুঁজে পাবেন না। এমনকি ফোল্ডার অপশন থেকে হিডেন ও সিস্টেম ফোল্ডার দেখানো সেট করলেও। এর কারণ হলো, ৬৪-বিট উইন্ডোজে চলাকালীন উইন্ডোজ ফাইল এক্সপ্লোরার একটি ৬৪-বিট প্রোগ্রাম, এবং Sysnative ফোল্ডার শুধু ৩২-বিট প্রোগ্রাম থেকে দৃশ্যমান ও অ্যাক্সেসযোগ্য।
সংক্ষেপে:
- System32 ফোল্ডার ৬৪-বিট DLL ফাইল সংরক্ষণ করে।
- SysWOW64 ৩২-বিট DLL ফাইল সংরক্ষণ করে, এবং ৩২-বিট প্রোগ্রামগুলো স্বয়ংক্রিয়ভাবে এই ফোল্ডারএ রিডাইরেক্ট হয়।
- Sysnative একটি রিডাইরেকশন ফোল্ডার যা ৩২-বিট প্রোগ্রামকে ৬৪-বিট DLL কল করার অনুমতি দেয়।
অতিরিক্ত পড়ুন: MSDN।
System32 এবং SysWOW64 ফোল্ডারের পার্থক্য জানতে চান?
