डिवाइस ड्राइवर

From Vigyanwiki
Revision as of 21:22, 2 August 2022 by alpha>Samikshas (हालांकि इस जानकारी को रिवर्स इंजीनियरिंग द्वारा सीखा जा सकता है, यह सॉफ्टवेयर की तुलना में हार्डवेयर के साथ अधिक कठिन है।)

संगणक में, यंत्र चालक (डिवाइस ड्राइवर) एक संगणक क्रमादेश (प्रोग्राम) होता है, जो किसी विशेष प्रकार के यंत्र (डिवाइस) को संचालित या नियंत्रित करता है जो संगणक (कंप्यूटर) या स्वयं गतिशील वस्तु (ऑटोमेटन) से जुड़ा होता है।[1] चालक (ड्राइवर) धातु सामग्री (हार्डवेयर) उपकरणों को प्रक्रिया सामग्री (सॉफ्टवेयर) इंटरफ़ेस प्रदान करता है, ऑपरेटिंग सिस्टम और अन्य संगणक क्रमादेश (कंप्यूटर प्रोग्राम) को धातु सामग्री कार्यों (हार्डवेयर फ़ंक्शंस) के उपयोग के बारे में सटीक विवरण जानने की आवश्यकता के बिना हार्डवेयर कार्यों का उपयोग करने के लिए सक्षम करता है।

चालक (ड्राइवर) संगणक (कंप्यूटर) बस या संचार उपतंत्र (सबसिस्टम) के माध्यम से यंत्र (डिवाइस) के साथ संचार करता है जिससे धातु सामग्री (हार्डवेयर) सम्बंधित (कनेक्ट) होता है। जब एक कार्यक्रम कॉलिंग क्रमादेश चालक (प्रोग्राम ड्राइवर) में एक नियमित कार्यक्रम का उद्धृत करता है, तो यंत्र चालक (डिवाइस ड्राइवर) उपकरण को आदेश जारी करता है (इसे ड्राइव करता है)।एक बार जब उपकरण यंत्र चालक (डिवाइस ड्राइवर) को जानकारी (डेटा) वापस भेज देता है, तो (चालक) ड्राइवर मूल कॉलिंग क्रमादेश (प्रोग्राम) में रूटीन को लागू कर सकता है।

चालक (ड्राइवर) हार्डवेयर निर्भर और ऑपरेटिंग-सिस्टम-विशिष्ट हैं। वे आमतौर पर किसी भी आवश्यक अतुल्यकालिक समय-निर्भर हार्डवेयर इंटरफ़ेस के लिए आवश्यक अवरोध सेवा (इंटरप्ट हैंडलिंग) प्रदान करते हैं।[2]


उद्देश्य

यंत्र चालक (डिवाइस ड्राइवर) का मुख्य उद्देश्य हार्डवेयर यंत्र (डिवाइस) और इसका उपयोग करने वाले अनुप्रयोगों या ऑपरेटिंग सिस्टम के बीच अनुवादक के रूप में कार्य करके अमूर्तता प्रदान करना है।[1] क्रमादेशक (प्रोग्रामर) उच्च-स्तरीय अनुप्रयोग कोड को स्वतंत्र रूप से लिख सकते हैं, जो भी विशिष्ट हार्डवेयर का उपयोग कर रहे हैं। उदाहरण के लिए, सीरियल पोर्ट के साथ बातचीत करने के लिए एक उच्च-स्तरीय आवेदन (एप्लिकेशन) में जानकारी भेजने और जानकारी प्राप्त करने के लिए बस दो कार्य हो सकते हैं। निचले स्तर पर, इन कार्यों को लागू करने वाला एक यंत्र चालक (डिवाइस ड्राइवर) उपयोगकर्ता के संगणक (कंप्यूटर) पर स्थापित विशेष सीरियल पोर्ट नियंत्रकों (कंट्रोलर) को सूचित करेगा।16550 यूएआरटी को नियंत्रित करने के लिए आवश्यक आदेश एफटीडीआई सीरियल पोर्ट परिवर्त्तक (कनवर्टर) को नियंत्रित करने के लिए आवश्यक आदेशों से बहुत अलग हैं, लेकिन प्रत्येक हार्डवेयर-विशिष्ट उपकरण चालक इन विवरणों को एक ही (या समान) सॉफ्टवेयर इंटरफ़ेस में अमूर्त करता है।

विकास

यंत्र चालक (डिवाइस ड्राइवर) को लिखने के लिए किसी दिए गए प्लेटफ़ॉर्म फ़ंक्शन के लिए हार्डवेयर और सॉफ़्टवेयर कैसे काम करता है, इसकी गहन समझ की आवश्यकता होती है। क्योंकि चालक (ड्राइवर) को संचालित करने के लिए धातु सामग्री कार्यों (हार्डवेयर फ़ंक्शंस) तक निम्न-स्तरीय पहुंच की आवश्यकता होती है, चालक (ड्राइवर) आमतौर पर अत्यधिक विशेषाधिकार प्राप्त वातावरण में काम करते हैं और यदि कुछ गलत हो जाता है तो संचालन प्रणाली मुद्दों का कारण बन सकता है। इसके विपरीत, आधुनिक ऑपरेटिंग तंत्र पर अधिकांश उपयोगकर्ता-स्तरीय सॉफ़्टवेयर को बाकी तंत्र को बहुत प्रभावित किए बिना रोका जा सकता है। यहां तक कि उपयोगकर्ता प्रकार में निष्पादित करने वाले चालक (ड्राइवर) एक तंत्र को टक्कर कर सकते हैं यदि यंत्र (डिवाइस) को गलत तरीके से तंत्र किया जाता है। ये कारक समस्याओं का निदान करना अधिक कठिन और खतरनाक बनाते हैं।[3] इस प्रकार चालक (ड्राइवर) लिखने का काम आमतौर पर सॉफ्टवेयर इंजीनियरों या कंप्यूटर इंजीनियरों पर पड़ता है जो हार्डवेयर-विकास कंपनियों के लिए काम करते हैं। ऐसा इसलिए है क्योंकि उनके पास अपने हार्डवेयर के रचना (डिजाइन) के बारे में अधिकांश बाहरी लोगों की तुलना में बेहतर जानकारी है। इसके अलावा, यह पारंपरिक रूप से हार्डवेयर निर्माता की रुचि में माना जाता था कि उनके ग्राहक अपने हार्डवेयर का उपयोग इष्टतम तरीके से कर सकते हैं। आमतौर पर, लॉजिकल यंत्र चालक (डिवाइस ड्राइवर) (एलडीडी) ऑपरेटिंग तंत्र विक्रेता द्वारा लिखा जाता है, जबकि भौतिक यंत्र चालक (फिजिकल डिवाइस ड्राइवर) (पीडीडी) यंत्र (डिवाइस) विक्रेता द्वारा लागू किया जाता है। हालांकि, हाल के वर्षों में, गैर-वेंडर ने मालिकाना उपकरणों के लिए कई यंत्र चालक (डिवाइस ड्राइवर) लिखे हैं, मुख्य रूप से मुफ्त और खुले स्रोत ऑपरेटिंग तंत्र के साथ उपयोग के लिए। ऐसे मामलों में, यह महत्वपूर्ण है कि हार्डवेयर निर्माता इस बारे में जानकारी प्रदान करें कि कैसे यंत्र (डिवाइस) संचार करता है। यद्यपि इस जानकारी को रिवर्स इंजीनियरिंग द्वारा सीखा जा सकता है, यह सॉफ्टवेयर की तुलना में हार्डवेयर के साथ अधिक कठिन है।

Microsoft ने ड्राइवर विकास के लिए एक नया ढांचा बनाकर खराब लिखित डिवाइस ड्राइवरों के कारण सिस्टम अस्थिरता को कम करने का प्रयास किया है, जिसे विंडोज ड्राइवर फ्रेमवर्क (WDF) कहा जाता है। इसमें उपयोगकर्ता-मोड ड्राइवर फ्रेमवर्क (UMDF) शामिल है जो कुछ प्रकार के ड्राइवरों के विकास को प्रोत्साहित करता है-मुख्य रूप से वे जो अपने उपकरणों के साथ संचार करने के लिए एक संदेश-आधारित प्रोटोकॉल को लागू करते हैं-उपयोगकर्ता-मोड ड्राइवरों के रूप में। यदि ऐसे ड्राइवरों की खराबी है, तो वे सिस्टम अस्थिरता का कारण नहीं बनते हैं। कर्नेल-मोड ड्राइवर फ्रेमवर्क (केएमडीएफ) मॉडल कर्नेल-मोड डिवाइस ड्राइवरों के विकास की अनुमति देता है, लेकिन उन कार्यों के मानक कार्यान्वयन प्रदान करने का प्रयास करता है जो समस्याओं का कारण बनते हैं, जिसमें आई/ओ संचालन, बिजली प्रबंधन और प्लग और प्लग और प्लग और प्लग और प्लग को रद्द करना शामिल है। डिवाइस सपोर्ट प्ले।

Apple Inc. | Apple के पास MacOS पर ड्राइवरों को विकसित करने के लिए एक ओपन-सोर्स फ्रेमवर्क है, जिसे I/O किट कहा जाता है।

लिनक्स वातावरण में, प्रोग्रामर डिवाइस ड्राइवरों को कर्नेल के कुछ हिस्सों के रूप में बना सकते हैं, अलग-अलग लोड करने योग्य मॉड्यूल के रूप में, या उपयोगकर्ता-मोड ड्राइवरों के रूप में (कुछ प्रकार के उपकरणों के लिए जहां कर्नेल इंटरफेस मौजूद हैं, जैसे कि यूएसबी डिवाइस के लिए)। Makedev में लिनक्स में उपकरणों की एक सूची शामिल है, जिसमें TTYS (टर्मिनल), एलपी (समानांतर पोर्ट), एचडी (डिस्क), लूप और साउंड शामिल हैं (इनमें मिक्सर, सीक्वेंसर, डीएसपी और ऑडियो शामिल हैं)।[4] Microsoft Windows .sys फ़ाइलें और लिनक्स .KO फ़ाइलों में लोड करने योग्य डिवाइस ड्राइवर हो सकते हैं।लोड करने योग्य डिवाइस ड्राइवरों का लाभ यह है कि उन्हें केवल आवश्यक होने पर लोड किया जा सकता है और फिर अनलोड किया जाता है, इस प्रकार कर्नेल मेमोरी को बचाता है।

कर्नेल मोड बनाम उपयोगकर्ता मोड

डिवाइस ड्राइवर, विशेष रूप से पर modern Microsoft Windows प्लेटफ़ॉर्म, कर्नेल-मोड (X86 CPUs पर रिंग 0) या उपयोगकर्ता-मोड (रिंग & nbsp; 3 x86 CPU पर) में चला सकते हैं।[5] उपयोगकर्ता मोड में ड्राइवर चलाने का प्राथमिक लाभ स्थिरता में सुधार किया जाता है, क्योंकि एक खराब लिखित उपयोगकर्ता-मोड डिवाइस ड्राइवर कर्नेल मेमोरी को ओवरराइट करके सिस्टम को क्रैश नहीं कर सकता है।[6] दूसरी ओर, उपयोगकर्ता/कर्नेल-मोड संक्रमण आमतौर पर एक काफी प्रदर्शन ओवरहेड थोपते हैं, इस प्रकार कर्नेल-मोड ड्राइवरों को कम-विलंबता नेटवर्किंग के लिए पसंद करते हैं।

कर्नेल स्पेस को केवल सिस्टम कॉल के उपयोग के माध्यम से उपयोगकर्ता मॉड्यूल द्वारा एक्सेस किया जा सकता है।यूनिक्स शेल या अन्य जीयूआई-आधारित एप्लिकेशन जैसे अंतिम उपयोगकर्ता कार्यक्रम उपयोगकर्ता स्थान का हिस्सा हैं।ये एप्लिकेशन कर्नेल समर्थित कार्यों के माध्यम से हार्डवेयर के साथ बातचीत करते हैं।

अनुप्रयोग

की विविधता के कारण modern हार्डवेयर और ऑपरेटिंग सिस्टम, ड्राइवर कई अलग -अलग वातावरणों में काम करते हैं।[7] ड्राइवर इंटरफ़ेस के साथ हो सकते हैं:

  • प्रिंटर
  • वीडियो एडेप्टर
  • नेटवर्क कार्ड
  • साउंड कार्ड
  • विभिन्न प्रकार की स्थानीय बसें - विशेष रूप से, आधुनिक प्रणालियों पर बस महारत हासिल करने के लिए
  • कम-बैंडविड्थ इनपुट/आउटपुट | विभिन्न प्रकार के I/O बसें (चूहों, कीबोर्ड, आदि जैसे उपकरणों को इंगित करने के लिए)
  • कंप्यूटर स्टोरेज डिवाइस जैसे हार्ड डिस्क, सीडी-रोम और फ्लॉपी डिस्क बसें (एटीए, एसएटीए, एससीएसआई, एसएएस)
  • विभिन्न फ़ाइल सिस्टम के लिए समर्थन लागू करना
  • छवि स्कैनर
  • डिजिटल कैमरों
  • डिजिटल स्थलीय टेलीविजन ट्यूनर
  • वायरलेस व्यक्तिगत क्षेत्र नेटवर्क के लिए रेडियो फ़्रीक्वेंसी कम्युनिकेशन ट्रांसीवर एडेप्टर, जैसा कि होम ऑटोमेशन में शॉर्ट-डिस्टेंस और कम-दर वायरलेस संचार के लिए उपयोग किया जाता है, (जैसे कि उदाहरण ब्लूटूथ कम ऊर्जा (BLE), थ्रेड, Zigbee, और Z-Wave)।
  • इरदा एडेप्टर

डिवाइस ड्राइवरों के लिए अमूर्तता के सामान्य स्तर में शामिल हैं:

  • हार्डवेयर के लिए:
    • सीधे इंटरफेसिंग
    • डिवाइस कंट्रोल रजिस्टर से लिखना या पढ़ना
    • कुछ उच्च-स्तरीय इंटरफ़ेस का उपयोग करना (जैसे वीडियो BIOS)
    • एक और निचले स्तर के डिवाइस ड्राइवर का उपयोग करना (जैसे कि डिस्क ड्राइवरों का उपयोग करके फ़ाइल सिस्टम ड्राइवर)
    • पूरी तरह से अलग कुछ करते हुए, हार्डवेयर के साथ काम का अनुकरण करना[8]
  • सॉफ्टवेयर के लिए:
    • ऑपरेटिंग सिस्टम को हार्डवेयर संसाधनों तक सीधी पहुंच की अनुमति
    • केवल आदिम लागू करना
    • गैर-चालक सॉफ्टवेयर के लिए एक इंटरफ़ेस को लागू करना (जैसे ट्वेन)
    • एक भाषा को लागू करना, कभी-कभी काफी उच्च-स्तरीय (जैसे पोस्टस्क्रिप्ट)

इसलिए दिए गए हार्डवेयर के लिए सही डिवाइस ड्राइवरों को चुनना और स्थापित करना अक्सर कंप्यूटर सिस्टम कॉन्फ़िगरेशन का एक प्रमुख घटक होता है।[9]


वर्चुअल डिवाइस ड्राइवर

वर्चुअल डिवाइस ड्राइवर डिवाइस ड्राइवरों के एक विशेष संस्करण का प्रतिनिधित्व करते हैं। वे एक हार्डवेयर डिवाइस का अनुकरण करने के लिए उपयोग किए जाते हैं, विशेष रूप से वर्चुअलाइजेशन वातावरण में, उदाहरण के लिए जब एक डॉस प्रोग्राम को माइक्रोसॉफ्ट विंडोज कंप्यूटर पर चलाया जाता है या जब एक अतिथि ऑपरेटिंग सिस्टम चलाया जाता है, उदाहरण के लिए, एक एक्सन होस्ट। हार्डवेयर के साथ संवाद करने के लिए अतिथि ऑपरेटिंग सिस्टम को सक्षम करने के बजाय, वर्चुअल डिवाइस ड्राइवर विपरीत भूमिका निभाते हैं और हार्डवेयर के एक टुकड़े का अनुकरण करते हैं, ताकि एक वर्चुअल मशीन के अंदर चलने वाले अतिथि ऑपरेटिंग सिस्टम और उसके ड्राइवरों को वास्तविक हार्डवेयर तक पहुंचने का भ्रम हो सकता है। हार्डवेयर तक पहुंचने के लिए अतिथि ऑपरेटिंग सिस्टम द्वारा प्रयास होस्ट ऑपरेटिंग सिस्टम में वर्चुअल डिवाइस ड्राइवर को उदा।, और nbsp; फ़ंक्शन कॉल के रूप में रूट किए जाते हैं। वर्चुअल डिवाइस ड्राइवर सिम्युलेटेड प्रोसेसर-स्तरीय ईवेंट भी भेज सकता है जैसे वर्चुअल मशीन में रुकावट करता है।

वर्चुअल डिवाइस एक गैर-वर्टीयलाइज्ड वातावरण में भी काम कर सकते हैं। उदाहरण के लिए, एक वर्चुअल नेटवर्क एडाप्टर का उपयोग वर्चुअल प्राइवेट नेटवर्क के साथ किया जाता है, जबकि एक वर्चुअल डिस्क डिवाइस का उपयोग ISCSI के साथ किया जाता है। वर्चुअल डिवाइस ड्राइवरों के लिए एक अच्छा उदाहरण डेमॉन टूल हो सकता है।

वर्चुअल डिवाइस ड्राइवरों के कई वेरिएंट हैं, जैसे कि वीएक्सडी, वीएलएम और वीडीडी।

ओपन सोर्स ड्राइवर्स

  • फ्री एंड ओपन-सोर्स ग्राफिक्स डिवाइस ड्राइवर | ग्राफिक्स डिवाइस ड्राइवर
  • प्रिंटर: कप
  • छापे: CCISS[10] (SCSI-3 समर्थन के लिए COMPAQ कमांड इंटरफ़ेस[11])
  • स्कैनर: sane
  • वीडियो: Vidix, डायरेक्ट रेंडरिंग इन्फ्रास्ट्रक्चर

आमतौर पर इस्तेमाल किए जाने वाले डिवाइस ड्राइवरों के सोलारिस विवरण:

  • एफएएस: फास्ट/वाइड एससीएसआई कंट्रोलर
  • HME: फास्ट (10/100 Mbit/s) ईथरनेट
  • ISP: डिफरेंशियल SCSI कंट्रोलर और SunSwift कार्ड
  • GLM: (Gigabaud लिंक मॉड्यूल[12]) अल्ट्राससी नियंत्रक
  • SCSI: छोटे कंप्यूटर सीरियल इंटरफ़ेस (SCSI) डिवाइस
  • एसएफ: एसओसी+ या सोशल फाइबर चैनल आर्बिट्रेटेड लूप (एफसीएएल)
  • SOC: SPARC स्टोरेज एरे (SSA) कंट्रोलर और कंट्रोल डिवाइस
  • सामाजिक: FCAL (SOC+) के लिए सीरियल ऑप्टिकल कंट्रोलर

एपिस

  • विंडोज डिस्प्ले ड्राइवर मॉडल (WDDM) - विंडोज विस्टा और बाद में ग्राफिक डिस्प्ले ड्राइवर आर्किटेक्चर।
  • एकीकृत ऑडियो मॉडल (UAM)[13]
  • विंडोज ड्राइवर फाउंडेशन (WDF)
  • घोषणात्मक घटक हार्डवेयर (DCH) - यूनिवर्सल विंडोज प्लेटफॉर्म ड्राइवर[14]
  • विंडोज ड्राइवर मॉडल (WDM)
  • नेटवर्क ड्राइवर इंटरफ़ेस विनिर्देश (NDIS) - एक मानक नेटवर्क कार्ड ड्राइवर एपीआई
  • एडवांस्ड लिनक्स साउंड आर्किटेक्चर (ALSA)-स्टैंडर्ड लिनक्स साउंड-ड्राइवर इंटरफ़ेस
  • स्कैनर एक्सेस नाउ ईज़ी (SANE)-एक पब्लिक-डोमेन इंटरफ़ेस जो कि रैस्टर-इमेज स्कैनर-हार्डवेयर के लिए है
  • इंस्टॉल करने योग्य फ़ाइल सिस्टम (IFS) - IBM OS/2 और Microsoft Windows NT के लिए एक फाइलसिस्टम API
  • ओपन डेटा-लिंक इंटरफ़ेस (ODI)-NDIS के समान नेटवर्क कार्ड API
  • यूनिफ़ॉर्म ड्राइवर इंटरफ़ेस (UDI)-एक क्रॉस-प्लेटफ़ॉर्म ड्राइवर इंटरफ़ेस प्रोजेक्ट
  • Dynax ड्राइवर फ्रेमवर्क (DXD)-C ++ KMDF और IOKIT के लिए ओपन सोर्स क्रॉस-प्लेटफॉर्म ड्राइवर फ्रेमवर्क[15]


पहचानकर्ता

PCI बस या USB पर एक डिवाइस की पहचान दो IDs द्वारा की जाती है, जिसमें प्रत्येक में 4 हेक्साडेसिमल नंबर होते हैं।विक्रेता आईडी डिवाइस के विक्रेता की पहचान करता है।डिवाइस आईडी उस निर्माता/विक्रेता से एक विशिष्ट डिवाइस की पहचान करता है।

एक पीसीआई डिवाइस में अक्सर डिवाइस की मुख्य चिप के लिए एक आईडी जोड़ी होती है, और एक सबसिस्टम आईडी जोड़ी भी होती है जो विक्रेता की पहचान करती है, जो चिप निर्माता से अलग हो सकती है।

यह भी देखें

  • ड्राइवर (सॉफ्टवेयर)
  • क्लास ड्राइवर
  • डिवाइस ड्राइवर संश्लेषण और सत्यापन
  • ड्राइवर रैपर
  • मुफ्त सॉफ्टवेयर
  • फर्मवेयर
  • लोड करने योग्य कर्नेल मॉड्यूल
  • Makedev
  • माइक्रोकंट्रोलर
  • ओपन-सोर्स हार्डवेयर
  • छपाई यंत्र का चालक
  • प्रतिकृति (ऑपरेटिंग सिस्टम)
  • udev (Userspace /dev)


संदर्भ

  1. 1.0 1.1 "What is all device driver?". WhatIs.com. TechTarget. Archived from the original on 13 February 2021. Retrieved 19 March 2018.
  2. EMC Education Services (2010). Information Storage and Management: Storing, Managing, and Protecting Digital Information. John Wiley & Sons. ISBN 9780470618332. Archived from the original on 2021-02-13. Retrieved 2020-11-10.
  3. Burke, Timothy (1995). Writing device drivers: tutorial and reference. Digital Press. ISBN 9781555581411. Archived from the original on 2021-01-26. Retrieved 2016-08-05.
  4. "MAKEDEV — Linux Command — Unix Command". Linux.about.com. 2009-09-11. Archived from the original on 2009-04-30. Retrieved 2009-09-17.
  5. "User-mode vs. Kernel-mode Drivers". Microsoft. 2003-03-01. Archived from the original on 2008-03-09. Retrieved 2008-03-04.
  6. "Introduction to the User-Mode Driver Framework (UMDF)". Microsoft. 2006-10-10. Archived from the original on 2010-01-07. Retrieved 2008-03-04.
  7. Deborah Morley (2009). Understanding Computers 2009: Today and Tomorrow. Cengage Learning. ISBN 9780324830132. Archived from the original on 2021-06-09. Retrieved 2020-11-10.
  8. Computer Peripherals and Interfaces. Technical Publications Pune. January 2008. pp. 5–8. ISBN 978-8184314748. Retrieved 2016-05-03.
  9. "What are Device Drivers and why do we need them?". drivers.com. April 17, 2015. Archived from the original on November 20, 2016. Retrieved March 19, 2018.
  10. "CCISS". SourceForge. 2010. Archived from the original on 2010-08-21. Retrieved 2010-08-11. Drivers for the HP (previously Compaq) Smart Array controllers which provide hardware RAID capability.
  11. Russell, Steve; et al. (2003-10-21). Abbreviations and acronyms. p. 207. ISBN 0-7384-2684-9. Retrieved 2011-08-14. {{cite book}}: |work= ignored (help)[permanent dead link]
  12. "US Patent 5969841 - Gigabaud link module with received power detect signal". PatentStorm LLC. Archived from the original on 2011-06-12. Retrieved 2009-09-08. An improved Gigabaud Link Module (GLM) is provided for performing bi-directional data transfers between a host device and a serial transfer medium.
  13. "Unified Audio Model (Windows CE 5.0)". msdn.microsoft.com. Archived from the original on 2017-06-22. Retrieved 2016-09-19.
  14. Dell US. "What are DCH drivers and why do you need to know about them? | Dell US". www.dell.com (in English). Retrieved 2020-10-29.
  15. "dxd - dynax driver framework: Main Page". dxd.dynax.at. Archived from the original on 2016-05-29. Retrieved 2016-09-19.


बाहरी संबंध