ইউএসবি ডিভাইস সনাক্তকরণ কীভাবে কাজ করে?


16

আমি কৌতূহল করছি কীভাবে উইন্ডোজে ইউএসবি ডিভাইস স্বীকৃতি কাজ করে। আমি ধারণা করি এটি এরকম কিছু:

  • আপনি যখন কোনও ডিভাইস প্লাগ ইন করেন, তখন এটি উইন্ডোজকে বলে "আমি কী তা আপনাকে বলার জন্য এখানে আমার ডিভাইস আইডি"
  • উইন্ডোজ দেখছে যে কোনও ড্রাইভার ইনস্টল করা হয়েছে that ডিভাইসের আইডির সাথে মেলে। ড্রাইভার সম্ভবত উইন্ডোজকে বলেছে ডিভাইসটি কী বলা উচিত - যেমন "ব্ল্যাকবেরি কার্ভ" বা "ক্যানন প্রিন্টার"
  • যদি তা হয় তবে এটি কোনওভাবে সেই ডিভাইসটিকে সেই ড্রাইভারের সাথে সংযুক্ত করে
  • অন্যথায়, এটি অনলাইনে মিলে যাওয়া ড্রাইভারের সন্ধান করে (যদি আপনি এটি ছেড়ে দেন)

আমি কি সঠিক? যদি তা হয় তবে তা এখনও কিছু প্রশ্ন রেখে যায়।

  • আপনি যখন ড্রাইভার ইনস্টল করেন, তারা কোথায় যায়? এগুলি কি কোনও ফোল্ডারে ফাইল রয়েছে, না তারা নিবন্ধে যুক্ত হয়?
  • উইন্ডোজ যখন ডিভাইসটিকে প্রথমে স্বীকৃতি দেয়, চিন্তা করে এবং অবশেষে বলে যে "আপনার নতুন ডিভাইসটি ইনস্টল হয়েছে এবং ব্যবহারের জন্য প্রস্তুত?"
  • উইন্ডোজ কোথায় হারিয়ে যাওয়া ড্রাইভারদের সন্ধান করে? এটা কি তাদের নিজস্ব ডাটাবেসে? ডিভাইস নির্মাতারা কি সেখানে মাইক্রোসফ্টের অন্তর্ভুক্তির জন্য ড্রাইভার জমা দেয়?

এই প্রক্রিয়াটি আসলে কীভাবে কাজ করে তা কি কেউ ব্যাখ্যা করতে পারেন? এছাড়াও, অন্যান্য ওএসগুলি কি এটি আলাদাভাবে করে?

উত্তর:


24

ইউএসবি বাসটি শারীরিকভাবে তৈরি করা হয়েছে যাতে কোনও প্লাগ সন্নিবেশ করানোর (এবং অপসারণের) কাজ হোস্ট কন্ট্রোলার দ্বারা স্বীকৃতি পেতে পারে। যখন এই "প্লাগ" ইভেন্টটি ঘটে তখন হোস্ট কন্ট্রোলার তার ডিভাইস ড্রাইভারকে অবহিত করে যা বাসটি স্ক্যান করে এবং প্রতিটি ডিভাইসকে নিজের সনাক্ত করতে বলে।

সমস্ত ইউএসবি ডিভাইসে ডিভাইস সম্পর্কিত তথ্যের একটি সংগ্রহ থাকে, যা বর্ণনাকারী বলে। ডিভাইস বর্ণনাকারী একই কমান্ড সহ সমস্ত ডিভাইস থেকে পুনরুদ্ধার করা হয়। এটি ইউএসবি বাসের জন্য একটি ডিভাইস ড্রাইভারকে কার্যকরভাবে নতুন সংযুক্ত ডিভাইসটি কী তা জিজ্ঞাসা করতে এবং যুক্তিসঙ্গত প্রতিক্রিয়া পাওয়ার আশা করতে পারে।

সমস্ত বর্ণনাকারীর মধ্যে, কয়েকটি বেশিরভাগ ডিভাইসে ড্রাইভারের সাথে সরাসরি মিল করতে ব্যবহৃত হয়। এটি কারণ ইউএসবি ডিভাইসগুলির ক্লাসগুলি সংজ্ঞায়িত করে এবং সাধারণত প্রতিটি ডিভাইস শ্রেণির জন্য সিস্টেম ড্রাইভার যে শ্রেণিতে বলে দাবি করে যে কোনও ডিভাইস পরিচালনা করতে যথেষ্ট।

উদাহরণস্বরূপ, সমস্ত কীবোর্ডগুলি এইচআইডি (হিউম্যান ইন্টারফেস) শ্রেণিতে থাকবে বলে দাবি করবে, যেমন ইঁদুর, ট্যাবলেট এবং গেম নিয়ন্ত্রণকারীরা। এইচআইডি ক্লাসে বেশ কয়েকটি সাবক্লাস রয়েছে (কিবোর্ড, ইঁদুর ইত্যাদি), তাই প্রতিটি প্রত্যাশিতভাবে পরিচালনা করা হয়।

বেশিরভাগ ডিস্কের মতো ডিভাইসগুলি গণ স্টোরেজ শ্রেণিতে থাকার দাবি করবে এবং সিস্টেম ড্রাইভার কেবল তাদের জন্য কাজ করে।

শ্রেণি এবং সাবক্লাসের পাশাপাশি, বর্ণনাকারীদের মধ্যে একজন বিক্রেতা আইডি (ভিআইডি), পণ্য আইডি (পিআইডি) এবং সংশোধনও অন্তর্ভুক্ত রয়েছে। বিক্রেতার আইডিগুলি স্ট্যান্ডার্ড কমিটি দ্বারা বরাদ্দ করা হয় (বেশিরভাগ ইস্যু অনুসারে তবে কিছু সংস্থার বিশেষ অনুরোধ পাওয়া যায়: উদাহরণস্বরূপ, ইন্টেল 0x8086 হয়)। পণ্য আইডি প্রতিটি বিক্রেতার দ্বারা নির্ধারিত হয় এবং ভিআইডি এবং পিআইডি সংমিশ্রণ প্রতিটি প্রকাশিত পণ্যের জন্য অনন্য হতে হবে।

যখন কোনও ডিভাইস প্রথম ইনস্টল করা হয় তখন ভিআইডি, পিআইডি, পুনর্বিবেচনা, শ্রেণি এবং সাবক্লাসটি বোঝা যায় এমন ডিভাইস ড্রাইভারটি বেছে নেওয়ার জন্য অনুমানযোগ্য পদ্ধতিতে ব্যবহার করা হয়। বিক্রেতার এবং পণ্যের নির্দিষ্ট নাম থাকার কারণে একজন বিক্রেতার পক্ষে এমন একটি ডিভাইস কাস্টমাইজ করা সম্ভব হয় যা অন্যথায় স্টক সিস্টেমের ড্রাইভার দ্বারা সঠিকভাবে পরিচালনা করা যায় (প্রায়) সঠিকভাবে।

আর একটি গুরুত্বপূর্ণ বর্ণনাকারী হ'ল ডিভাইস সিরিয়াল নম্বর। যদি কোনও ডিভাইসের একটি ক্রমিক নম্বর থাকে, তবে কোনও পৃথক শারীরিক ইউএসবি পোর্ট ব্যবহার করা হলেও আবার প্লাগ ইন করার সময় এটি সনাক্ত করা যায় এবং একইরূপে চিকিত্সা করা যায়। এটি স্টোরেজ ডিভাইসের জন্য গুরুত্বপূর্ণ যাতে তারা একই ড্রাইভ লেটার নির্ধারিত হয় এবং সিরিয়াল পোর্ট অ্যাডাপ্টার এবং মডেমগুলির মতো ডিভাইসের জন্য যাতে তাদের একই সিওএম পোর্ট উপাধি দেওয়া হয়।

এই পুরো প্রক্রিয়াটি এমএসডিএন- তে নথিভুক্ত করা হয়েছে , তবে বিশদটি বিভিন্ন জায়গায় ছড়িয়ে পড়ে।


পদ্ধতিগত ব্যাখ্যার জন্য ধন্যবাদ। অনেক আগ্রহব্যাঞ্জক!
নাথান লং

3
ডকুমেন্টেশন এবং নমুনাগুলি থেকে আমি এই বিবরণগুলি কাটিয়ে উঠার ঘন্টাগুলি একটি অপ্রত্যাশিত কাজ ছিল যখন আমি উইন্ডোজের জন্য আমার প্রথম ডিভাইস ড্রাইভারটি লিখেছিলাম। আমি এর ফলাফল ভাগ করে নেওয়ার জন্য আনন্দিত ...
RBerteig

7

প্রশ্নসমূহ:

  • ডিরেক্টরি: ড্রাইভার 2 ডিরেক্টরি ইনস্টল করা হয়। চলমান অংশটি% RootDir% \ system32 এ ইনস্টল হয়ে যায় (বেশিরভাগ ক্ষেত্রে), ডিভাইসের তথ্য অংশটি% RootDir% \ inf এ ইনস্টল হয়ে যায়। Inf dir এর অধীনে, ইনস্টল / নিবন্ধিত ড্রাইভারের জন্য একটি oem * .inf ফাইল তৈরি করা হয়। (* একটি সংখ্যা)। ভিস্তার অধীনে ড্রাইভার এখনও সম্মুখীন না হওয়া ডিভাইসগুলি ইনস্টল করার সময়% RootDir% \ system32 \ ড্রাইভারস্টোর ডিরেক্টরিতে রেফারেন্স হিসাবে অনুলিপি করে।
  • রেজিস্ট্রি: একটি ড্রাইভার কার্নেল মোড পরিষেবা হিসাবে ইনস্টল হয়ে যায়। এটির জন্য ড্রাইভার সার্ভিসের জন্য নির্দিষ্ট কিছু রেজিস্ট্রি কী তৈরি করা হয়। বাস ড্রাইভারের অধীনে অন্য একটি জায়গা রয়েছে, যেখানে সংশ্লিষ্ট ডিভাইসগুলি স্বতন্ত্র ডিভাইস উদাহরণ কী পায়। এই কীতে, ডিভাইসটির এই ডিভাইসের জন্য বর্তমানে ব্যবহৃত ড্রাইভারের একটি উল্লেখ রয়েছে।
  • ডিভাইস 'আগমন': বাস ড্রাইভার যখন তার বাসে একটি নতুন ডিভাইস খুঁজে পায়, তখন এটি নিজস্ব কী এর অধীনে একটি কী রেজিস্ট্রি তৈরি করে যা কোনও অনন্য ডিভাইস উদাহরণ আইডির সাথে সম্পর্কিত, যা সিস্টেমে কোনও ডিভাইস স্বতন্ত্ররূপে সনাক্ত করতে ব্যবহার করা যেতে পারে। এই কীটি ইতিমধ্যে উপস্থিত থাকলে, বাস ড্রাইভার এই নোড দ্বারা রেফারেন্সযুক্ত ডিভাইসটি লোড করার চেষ্টা করে। যখন এই নোডটি উপস্থিত না থাকে বা ড্রাইভার লোড না করে, সিস্টেমটি% RootDir% \ inf এর অধীন নিবন্ধিত ডিভাইস ড্রাইভারদের স্ক্যান করে ডিভাইসটির জন্য একটি সামঞ্জস্যপূর্ণ ড্রাইভার সন্ধান করার চেষ্টা করে। যে ড্রাইভারগুলি এই ডিভাইসের জন্য যোগ্যতা অর্জন করে, তারা গণনা করে এবং বাছাই করে। তারপরে সেরা ড্রাইভারটি নির্বাচিত এবং ডিভাইসের জন্য লোড করা হয়।
  • ড্রাইভার অনুসন্ধান: ইনফ ডিরেক্টরিতে চালকদের প্রথমে অনুসন্ধান করা হয়। যখন কোনও ড্রাইভার পাওয়া যায় না, উইন্ডোজ ব্যবহারকারীকে জিজ্ঞাসা করে, তিনি যদি চালক সরবরাহ করতে পারেন বা এটি মাইক্রোসফ্ট সার্ভারে দেখা উচিত কিনা। ড্রাইভার উত্পাদনকারীরা তাদের ড্রাইভারগুলি মাইক্রোসফ্ট ডিভাইস ড্রাইভার সার্ভারে অন্তর্ভুক্তির জন্য জমা দিতে পারে।

লুনাটিকের উত্তরটির প্রথম অংশ রয়েছে, তথাকথিত বাস ড্রাইভার কীভাবে ডিভাইসটি আবিষ্কার করে।


3

আমি ইউএসবি সম্পর্কে একটি ভাল বই সুপারিশ করতে চাই:

  • ইউএন এক্সেলসন দ্বারা ইউএসবি সম্পূর্ণ

আমি জানি যে আপনি এর জন্য জিজ্ঞাসা করেননি, তবে যে ইউএসবি ডিভাইসগুলি সংযুক্ত হওয়ার কথা রয়েছে সেগুলি সম্পর্কে কিছুটা জানা ভাল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.