Perangkat apa yang membutuhkan driver. Bagaimana saya tahu driver suara mana yang saya butuhkan

Jika Anda merakit sendiri komputer Anda, membeli komponennya secara terpisah, maka dalam hal ini semua driver untuk komputer tidak lagi dapat ditemukan di satu situs web pabrikan, karena akan mudah dilakukan saat membeli komputer yang sudah jadi (ini dijelaskan dalam artikel "Cara menemukan driver jika laptop atau komputer desktop yang sudah jadi dibeli!"). Lagi pula, Anda membeli komputer yang belum selesai milik beberapa pabrikan, akan memiliki model dan drivernya sendiri yang dapat Anda unduh sekaligus dari satu situs. Karena komputer dirakit dari suku cadang yang Anda pilih sendiri, itu berarti tidak lagi sesuai dengan model apa pun dan milik beberapa pabrikan, karena ini sudah kreasi Anda :) Oleh karena itu, Anda harus mencari driver secara terpisah untuk semua perangkat tempat komputer dirakit. Ini juga termasuk kasus ketika, setelah membeli komputer yang sudah jadi (sudah dirakit), setelah beberapa waktu Anda memutuskan untuk mengganti beberapa "sepotong besi".

Sekarang saya akan menunjukkan kepada Anda bagaimana menemukan semua driver yang diperlukan untuk komputer yang dikonfigurasi sendiri secara manual, melalui Internet.

Tentang apa yang dijelaskan pengemudi dalam artikel:

Jadi, Anda sendiri yang mengambil semua komponen, merakit komputer, menginstal Windows dan melihat bahwa driver tidak diinstal untuk semua perangkat, dan bahkan mungkin tidak diinstal untuk hampir semua perangkat. Anda dapat mengetahui apakah semua driver diinstal dari utilitas Device Manager standar. Bagaimana melakukan ini, saya ceritakan di artikel terpisah.

Dan untuk menginstal driver dalam hal ini, ada beberapa opsi.

Catatan!
Jika Anda bahkan belum menginstal driver untuk kartu jaringan secara otomatis, yang tidak memberi Anda kesempatan untuk mengakses Internet dari komputer ini, maka semua langkah di bawah ini harus dilakukan dari beberapa komputer lain dengan akses Internet. Dan setelah Anda mengunduh semua driver, Anda harus mentransfernya ke komputer yang diinginkan, misalnya melalui flash drive atau disk.

Opsi nomor 1. Cari driver secara manual dengan kode perangkat melalui situs devid.drp.su

Saya menganggap opsi ini sebagai yang terbaik. Caranya adalah dengan menentukan kode perangkat dan mencari driver di internet menggunakan kode ini di berbagai situs.

Misalkan di pengelola perangkat kita melihat sesuatu seperti ini:

Itu. driver untuk beberapa perangkat tidak diinstal di komputer. Namun, sulit untuk menentukan melalui pengelola perangkat perangkat mana yang tidak memiliki driver, karena namanya agak kabur. Hanya bisa dipahami secara kasar. Misalnya, "pengontrol Ethernet" kemungkinan besar kartu LAN untuk koneksi internet kabel. " Pengontrol Jaringan' mungkin adaptor wifi, yaitu kartu jaringan untuk mengakses Internet melalui Wi-Fi.

Tetapi setiap perangkat memiliki nomor uniknya sendiri, yang dapat ditunjukkan oleh pengelola perangkat kepada kami. Dan setelah mengetahui nomornya, kita dapat menemukan driver untuk perangkat tersebut melalui Internet.

Mari kita lihat beberapa contoh cara menemukan driver secara manual berdasarkan kode perangkat:

Pada awalnya, saya akan menemukan driver untuk perangkat yang tidak dikenal "Simple Communications PCI Controller".

    Tentukan kode perangkat yang ingin kita cari drivernya.

    Untuk menentukan kode perangkat, klik kanan padanya di pengelola perangkat dan pilih "Properties" dari menu yang muncul:

    Di jendela yang terbuka, pilih tab "Detail", lalu di bagian bawah, di bawah tulisan "Properti", pilih "ID Perangkat Keras":

    Pertama-tama, kami mencoba mencari berdasarkan kode dari baris terendah (ke-4). Klik kanan di bawah pada baris ke-4 dengan kode dan pilih "Salin".

    Mencoba mencari driver dengan kode di devid.drp.su.

    Setelah menyalin kode, buka situs:

    David.drp.su

    Mari kita coba temukan drivernya. Situs ini milik program Solusi Paket Pengemudi, yang mengumpulkan hampir semua kemungkinan driver. Di sini, dengan kemungkinan besar, Anda dapat menemukan driver untuk perangkat apa pun.

    Setelah membuka situs, hal pertama yang perlu Anda lakukan adalah menempelkan kode perangkat yang disalin pada langkah sebelumnya ke baris panjang paling atas dan menghapus semua yang ada di kode ini yang berasal dari simbol "&" sampai akhir.

    Misalnya, Anda menyalin kode:
    PCI\VEN_8086&DEV_0166 &CC_0300

    Jadi setelah menghapus karakter dari "&" Anda harus memiliki kode:
    PCI\VEN_8086&DEV_0166

    Jika Anda tidak tahu sistem apa yang Anda miliki, buka pencarian jendela dan masukkan "Informasi Sistem" di sana, lalu pilih program yang muncul dari daftar:

    Dalam program yang terbuka, di jendela sebelah kiri, pilih "Informasi Sistem" dan di sebelah kanan di baris "Nama OS", versi Windows Anda akan ditampilkan (dalam contoh saya pada gambar di bawah "Windows 10") , dan di baris "Type" - kedalaman bit: x64 atau x86:

    Berdasarkan data ini, kami menunjukkan jenis dan kedalaman bit sistem di situs devid.drp.su.

    Setelah kode perangkat ditentukan dan versi Windows dipilih, klik tombol "Search Drivers".

    Hasilnya, halaman tersebut akan menampilkan daftar driver yang cocok dengan kode perangkat keras yang Anda tentukan dan untuk Anda Versi Windows. Menggunakan tombol "Unduh", unduh salah satu driver ke komputer.

    Catatan!
    Jika muncul beberapa driver yang identik (seperti pada gambar di atas), maka download driver yang memiliki tanggal rilis terbaru pada kolom Driver Version.

    Dengan mengklik tombol "Unduh", driver akan diunduh ke komputer Anda dan Anda hanya perlu menginstalnya. Tidak ada yang rumit sama sekali dalam menginstal driver, dan saya menyentuh poin ini di artikel terpisah.

    Catatan!

    Kebetulan driver yang berbeda akan ditampilkan dalam daftar driver, misalnya:

    Artinya, kode perangkat keras bisa serupa untuk beberapa perangkat. Dalam hal ini, Anda cukup mengunduh dan mencoba menginstal semua opsi yang diusulkan hingga diinstal pengemudi yang benar.

Seperti yang Anda lihat, pengemudi tidak sulit ditemukan. Sekarang saya akan melihat contoh lain untuk membuatnya lebih jelas :) Misalnya, saya akan menemukan driver untuk perangkat yang ditetapkan sebagai "pengontrol Ethernet" di pengelola perangkat.

Saya klik kanan pada perangkat, buka properti:

Di jendela, pilih tab "Detail", pilih item "ID Perangkat Keras" dari daftar dan salin kode dari baris ke-4:

Saya buka situs devid.drp.su, tunjukkan nomor yang disalin di sana, hapus semua yang ada di dalamnya, mulai dari simbol "&". Selanjutnya, saya memilih versi Windows dan melakukan pencarian:

Untuk perangkat saya dan versi Windows yang saya pilih, hanya ada satu versi driver yang dapat saya unduh dan instal:

Itu saja!

Namun, terkadang masih terjadi bahwa situs devid.drp.su tidak menemukan driver untuk kode perangkat keras yang Anda tentukan. Dalam hal ini, ada opsi alternatif, yang akan kami pertimbangkan di bawah ini.

Cara alternatif untuk mencari driver berdasarkan kode perangkat

Jika tidak ada driver untuk perangkat yang Anda perlukan di situs terkenal devid.drp.su, Anda dapat menggunakan metode sederhana ini:

    Tentukan kode perangkat. Demikian pula, salin baris kode peralatan (ke-4):

    Kami mencari driver di berbagai situs.

    Sekarang kita pergi ke situs web Google.com dan menempelkan kode yang disalin langsung ke bilah pencarian, setelah itu kita menghapus simbol "&" dan semua yang mengikutinya dari kode, misalnya:

    PCI\VEN_8086&DEV_1C3A &SS_0780= PCI\VEN_8086&DEV_1C3A

    Kami menekan tombol pencarian dan kami melihat daftar situs yang cocok dengan kueri kami:

    Sekarang Anda perlu membuka situs secara bergantian, mulai dari yang pertama (atas) dan lihat apakah Anda dapat mengunduh driver di situs tersebut.

    Perlu dicatat segera bahwa tidak semua situs Anda akan menemukan driver yang Anda butuhkan, karena beberapa dari mereka tidak akan memiliki driver untuk versi Windows Anda, dan beberapa akan memiliki omong kosong apa pun, bukan driver.

    Pada contoh gambar di atas, saya melingkari situs-situs di mana driver paling sering ditemukan dan diunduh tanpa masalah. Berikut situs-situsnya:

    Jika Anda menggali lebih dalam pencarian, Anda dapat menemukan situs lain tempat Anda dapat mengunduh driver yang Anda butuhkan. Tapi jangan mencari driver di forum, karena ini jalan terpanjang. Anda harus membaca semua pesan berturut-turut untuk memahami di mana tautan ke driver yang Anda butuhkan diberikan.

    Dan sekarang mari kita lihat beberapa contoh pengunduhan driver dari berbagai situs.

    Contoh mengunduh driver dari driver.ru:

    Saat Anda masuk ke situs dari hasil pencarian, halaman tersebut sudah menampilkan driver, yang sebagian besar kompatibel dengan perangkat Anda.

    Di sini Anda cukup mengunduh secara bergiliran semua driver yang ditampilkan situs dan mencoba menginstal hingga driver yang diinginkan diinstal. Semua driver yang tidak kompatibel tidak akan diinstal atau tidak akan berfungsi, jadi Anda tidak perlu takut menginstal sesuatu yang salah.

    Ingatlah untuk memperhatikan versi Windows yang menjadi tujuan driver.

    Mengingat!
    Driver untuk Windows 8, Windows 8.1 dan Windows 10 sangat sering kompatibel dan jika, misalnya, Anda tidak dapat menemukan driver khusus untuk Windows 8.1, coba instal driver untuk Windows 8. Atau jika Anda tidak dapat menemukan driver untuk Windows 10, coba menginstal dari Windows 8.1 atau Windows 8. Kebetulan driver untuk Windows 7 akan kompatibel dengan Windows 8, 8.1 dan Windows 10. Yaitu. Anda dapat mencoba menginstal driver dari sistem yang berbeda.

    Perhatikan contoh proses pengunduhan dari situs ini. Setelah menemukan driver yang Anda butuhkan, klik tombol unduh di bawah ini:

    Di jendela berikutnya, Anda perlu mengonfirmasi bahwa Anda bukan robot dengan mencentang kotak yang tersedia (lihat gambar di bawah). Kemudian klik tombol "Unduh" di bawah ini:

    Dan terakhir, di halaman selanjutnya kita akan melihat di bagian paling atas link download berupa nama file dengan ekstensi:

    Klik dan unduh file.

    Contoh download driver dari members.driverguide.com:

    Dengan membuka situs dari mesin pencari, halaman tersebut akan menampilkan daftar driver yang kemungkinan kompatibel dengan perangkat Anda:

    Mengklik tombol unduh akan terbuka lembaran baru di mana sejumlah besar iklan menarik perhatian.

    Perhatian!
    Jangan klik di mana pun jika ada banyak iklan di situs, hati-hati, jika tidak, Anda dapat terkena virus dan infeksi lain di komputer Anda!

    Di jendela berikutnya, sebuah jendela akan muncul di tengah untuk mengonfirmasi bahwa Anda adalah orang sungguhan, dan bukan program :) Anda harus menunggu konten jendela dimuat dan klik tombol "Tampilkan":

    Jendela baru akan terbuka, di mana lagi kami menunggu beberapa detik hingga konten dimuat. Sebuah kode akan muncul di jendela di sebelah tulisan: "Enter". Kode ini perlu ditulis ulang persis seperti pada baris di bawah ("Jawaban Anda") dan klik "Kembali ke Halaman":

    Anda akan dikembalikan ke halaman asli di mana tombol "Lanjutkan" sekarang akan muncul. Mengkliknya akan mulai mengunduh driver ke komputer:

seperti ini cara alternatif Anda dapat mencoba mencari driver secara manual berdasarkan kode perangkat. Tentu saja, untuk opsi ini, saya menunjukkan contoh mengunduh driver hanya dari 2 situs, dan jumlahnya sangat banyak. Tetapi prinsip mengunduh di semua situs adalah sama. Hanya antarmuka yang berbeda untuk sebagian besar dan terkadang urutan pengunduhan.

Tapi saya lebih cenderung bahwa Anda dapat dengan mudah menemukan driver menggunakan metode utama yang diusulkan dalam opsi #1.

Opsi nomor 2. Cari driver di situs web resmi produsen perangkat

Jika Anda tidak dapat menemukan driver untuk perangkat Anda menggunakan opsi pertama, maka ini dapat dilakukan dengan cara ini.

Anda perlu mencari pabrikan dan model setiap perangkat di komputer Anda melalui dokumentasinya atau program khusus(misalnya, Aida64 atau Sysinfo Detector), lalu cari driver untuk setiap perangkat secara terpisah melalui situs web resmi pabrikan atau (jika tidak ada driver di situs web resmi) di Internet sesuai dengan model perangkat.

Mari kita ambil contoh ini. Di pengelola perangkat, saya dapat melihat bahwa driver untuk kartu video dan beberapa perangkat aneh lainnya tidak terpasang di sistem:

Bagaimana Anda menentukan apa yang ada di kartu video? Tetapi karena jika ada perangkat "Standard VGA graphics adapter" dalam daftar perangkat di bagian "Video adapters", maka tidak ada driver untuk kartu video tersebut, jika tidak, perangkat tersebut akan memiliki nama kartu video Anda, misalnya “NVIDIA GeForce GTX980”.

Mari kita lihat urutan tindakan Anda:

    Cari tahu pabrikan dan model perangkat.

    Catatan!
    Jika Anda memiliki "Perangkat tidak dikenal" di pengelola perangkat, driver untuk beberapa perangkat mungkin tidak diinstal papan utama atau program khusus untuk motherboard. Oleh karena itu, Anda harus terlebih dahulu menginstal semua driver untuk motherboard Anda dan program untuk itu.

    Jika Anda merakit komputer dari komponen terpisah, Anda dapat memiliki dokumen untuk setiap perangkat yang dibeli, yang menunjukkan apa yang kami butuhkan - pabrikan dan modelnya. Jika tidak ada dokumentasi yang tersisa, maka salah satu program yang menentukan perangkat keras komputer Anda akan membantu Anda mengetahui modelnya. Saya merekomendasikan Aida64 atau Sysinfo Detector. Yang pertama berbayar, tetapi Anda dapat menggunakannya secara gratis selama 30 hari. Dan yang kedua memiliki edisi yang sepenuhnya gratis. Jika Anda berpikir apa yang harus dipilih, pilih sementara - Aida64, karena kualitas program ini masih akan lebih tinggi.

    Cara menginstal dan menggunakan program Aida64 dijelaskan dalam artikel:

    Cara menginstal dan menggunakan Sysinfo Detector dijelaskan dalam artikel:

    Jika Anda mendeteksi perangkat melalui program Aida64 maka Anda dapat menentukan perangkat seperti apa tanpa driver dengan memilih bagian “Perangkat\u003e\u003e perangkat Windows” lalu di sebelah kanan buka kategori “Unknown” (tidak diketahui). Informasi tentang perangkat yang dipilih akan muncul di bawah:

    Jadi, dalam contoh saya, perangkat yang tidak dikenal disebut "Asus ATK-110 ACPI Utility".

    Saya sebutkan di atas bahwa perangkat yang tidak dikenal kemungkinan besar adalah sesuatu di motherboard, jadi mari kita segera tentukan motherboard mana yang ada di perangkat tersebut. Untuk melakukan ini, buka bagian "Motherboard" dan buka subbagian yang sama. Di sebelah kanan jendela kita akan melihat pabrikan dan model motherboard: Asus P5KPL-AM EPU.

    Sekarang mari kita berurusan dengan kartu video. Kartu video biasanya diidentifikasi dengan benar di Aida64 di bawah "Display" > "Video PCI/AGP". Seperti yang Anda lihat, program mendeteksi kartu video: NVIDIA GeForce GT430":

    Jika Anda menonton perangkat melalui Sysinfo Detector, maka Anda dapat melihat perangkat dengan driver yang dihapus dengan 2 cara. Yang pertama ada di bagian "Penyimpangan":

    Seperti yang Anda lihat, perangkat yang sama terdeteksi melalui program Aida64: ACPI / ATK0110

    Dan cara kedua - di bagian "Perangkat PCI", pilih subbagian "Perangkat tidak dikenal". Di sini program langsung melihat 3 perangkat "bermasalah" dan salah satunya, hanya motherboard: Asus P5KPL-AM EPU.

    Lebih baik untuk melihat pabrikan dan model kartu video di bagian "Perangkat PCI". Dalam daftar, temukan subbagian "Pengontrol tampilan":

    Contoh menunjukkan bahwa pabrikan kartu tersebut adalah NVIDIA, dan modelnya adalah GeForce GT 430.

    Jadi, kami mempelajari data yang diperlukan dan sekarang kami akan mencari drivernya.

    Kami mencari driver di situs web produsen perangkat.

    Kami menemukan bahwa drivernya hilang, kemungkinan besar untuk beberapa perangkat di motherboard, atau mungkin beberapa program khusus untuk motherboard. Pabrikan papannya adalah Asus, dan model dalam contoh saya adalah P5KPL-AM EPU. Karena pabrikannya adalah Asus, maka kami akan mencari di situs web resmi Asus.

    Cara mencari situs web resmi pabrikan perangkat dan mengunduh driver dijelaskan secara mendetail. Singkatnya, Anda perlu membuka mesin pencari sistem Google, ketikkan nama pabrikan di sana dan buka situs pertama di hasil pencarian. Selanjutnya, buka bagian "Layanan" atau "Dukungan" dan tentukan model perangkat, misalnya:

    Selain driver, perhatikan bagian "Utilities" (dapat dilihat pada daftar pada gambar di atas), karena terkadang "Unidentified Device" adalah semacam program khusus untuk motherboard yang tidak terpasang. Lebih baik menginstal seluruh kit motherboard yang disediakan di situs untuk memeriksa apakah ini masalahnya.

    Contoh ini menunjukkan menemukan driver untuk motherboard. Jika Anda menginstal semua driver dan utilitas untuknya, maka "Perangkat tidak dikenal" dari pengelola perangkat akan hilang.

    Sekarang mari kita cari driver untuk kartu video. Dilihat dari data yang diambil dari program Aida64 dan Sysinfo Detector, pembuat kartu video adalah NVIDIA, dan modelnya adalah GeForce GT 430. Karena pabrikannya adalah NVIDIA, maka kami mencari situs web resmi perusahaan ini di tempat yang sama cara melalui Google:

    Di situs tersebut, kita langsung melihat bagian "Drivers" dan di dalamnya ada item "Download driver". Kita buka:

    Sebuah jendela akan terbuka di mana Anda perlu menentukan data tentang kartu video. Jenis produk dalam contoh saya adalah “GeForce”, jika modelnya adalah GeForce GT 430, maka seri produknya adalah “GeForce 400 Series”. Tidak sulit untuk mendapatkan bantalan Anda di sini. Selanjutnya, dalam daftar "Family of Products", pilih model spesifik - "GeForce GT 430". Dan tetap memilih hanya versi Windows yang diinstal di komputer Anda dan bahasa drivernya. Kemudian klik "Cari":

    Halaman untuk mengunduh driver yang benar akan terbuka. Klik tombol "Unduh Sekarang":

    Di halaman berikutnya, kami menerima persyaratan perjanjian dan mengklik tombol "Terima dan unduh":

Dengan cara yang sama, Anda dapat mengunduh driver, pada prinsipnya, untuk perangkat apa pun, mengetahui pabrikan dan modelnya. Anda hanya perlu menemukan situs web resmi pabrikan dan menunjukkan modelnya di sana.

Sebagai upaya terakhir, jika, misalnya, Anda tidak dapat menemukan driver di situs web resmi, Anda dapat mencarinya di situs lain dengan menentukan pencarian Google Permintaan contoh adalah: "driver untuk Asus P5KPL-AM EPU". Alih-alih Asus P5KPL-AM EPU, Anda, oleh karena itu, perlu menentukan pabrikan dan model perangkat khusus yang Anda cari drivernya.

Nah, sebagai kesimpulan, saya perhatikan bahwa jika Anda menggunakan Windows 8 dan yang lebih lama, kemungkinan besar Anda tidak akan mengalami masalah dengan driver. Sistem ini menginstal dalam banyak kasus semua driver secara otomatis segera setelah Windows diinstal. Saya mencoba menginstal ulang Windows 8.1 dan Windows 10 di beberapa laptop, dan semua driver diinstal secara otomatis di masing-masing laptop, sehingga tidak perlu mencarinya sendiri.

Pada artikel ini saya anggap selesai. Sekarang Anda dapat menemukan driver yang tepat berdasarkan kode perangkat atau pabrikan dan modelnya. Izinkan saya mengingatkan Anda bahwa Anda mungkin memerlukan opsi pencarian driver seperti itu jika Anda memilih sendiri komponen untuk komputer Anda atau mengubah beberapa detail di komputer yang telah selesai dibeli.

Dimungkinkan juga untuk menginstal driver secara otomatis di komputer menggunakan program khusus. Kemungkinan ini dijelaskan dalam artikel terpisah:

Semua yang terbaik! Sampai jumpa di postingan lainnya :)

Hari ini kita akan melihat:

Ada berbagai alasan mengapa Anda membutuhkan komputer pribadi. Ini tidak selalu dilakukan dengan menggunakan program dengan pemilihan driver otomatis.

Selain itu, apa pengemudi suara diperlukan untuk PC Anda, Anda juga perlu mengetahui penyebab kerusakan perangkat suara di komputer Anda.

Kartu suara tidak terdeteksi oleh OS

Pertimbangkan kasus ketika sistem operasi tidak dapat secara mandiri memilih driver untuk kartu suara komputer pribadi. Dalam proses menginstal ulang sistem dan reboot lebih lanjut, ini ditentukan oleh tidak adanya sinyal suara.

Alasan untuk menciptakan situasi seperti itu mungkin sudah mapan peralatan suara di komputer pribadi, yaitu: langka; tanggal rilis lebih tua dari OS yang diinstal.
Dalam hal ini, Anda perlu menginstal driver suara secara manual. Ada beberapa cara untuk menentukan driver suara yang tepat untuk PC Anda.

Microsoft membantu mengidentifikasi driver suara

Sistem operasi komputer menawarkan bantuannya dalam menentukan driver suara yang benar. Anda perlu mengarahkan kursor ke folder "My Computer" klik tombol kanan mouse (RMB), lalu "Properti", lalu "Perangkat Keras". Anda dapat membuatnya lebih mudah: folder "Komputer Saya", klik kanan, buka bagian pengelola perangkat.

Daftar akan terbuka di pengelola perangkat, pilih kartu suara (tidak ada driver, ada tanda seru di sebelahnya). Kami memilih baris, di atas ada opsi "Perbarui driver", lalu item "Cari driver", ketika semuanya terjadi dengan hasil positif, jendela "Instal" akan ditawarkan.

Opsi manual untuk mencari driver suara

Ketika pemilihan otomatis driver suara gagal, Anda perlu mencoba menemukannya secara manual, untuk ini kami pergi ke mesin pencari mana pun (Google, Yandex). Kemudian, di kotak pencarian, masukkan nama perangkat suara Anda di PC dan tambahkan "+ driver", di jendela yang terbuka, pilih yang Anda butuhkan untuk kami.

Driver apa yang dibutuhkan untuk komputer pribadi? Ini mudah dilihat di tab Device Manager. Disarankan untuk mengunduh driver di situs web resmi pabrikan motherboard yang diinstal (ketika kartu suara tertanam di dalamnya). Disarankan juga untuk mengunduh driver dari situs web yang berspesialisasi dalam memperbarui perangkat keras PC ini.

Setelah driver diunduh, kita kembali ke tab "Device Manager", buka "Cari driver di PC", tunjukkan tempat penyimpanannya, "Instal".

Menginstal driver suara dengan program

Ada kalanya pengguna komputer kesulitan mencari sound driver secara manual dan menggunakan OS, maka ditawarkan program khusus untuk mencarinya. Saat ini, ada beberapa program untuk keperluan tersebut: Driver Checker, Sam Drivers, Device Doctor, dan program lainnya.

Untuk bekerja dengan antarmuka program semacam ini, jelas, pada tingkat yang intuitif.

Ada beberapa kasus berbeda di mana Anda perlu menentukan driver suara untuk PC Anda, saran para ahli:

  • Tentukan model perangkat suara yang dipasang di PC (baca di komputer). Mungkin kurangnya suara karena peralatan yang tidak terpasang, melarang penggunaannya di BIOS.
  • Saat suara terintegrasi pada PC, disarankan untuk mengunduh driver suara hanya dari situs web pabrikan "motherboard", atau dalam kasus instalasi terpisah kartu suara untuk menghapus tanda chip darinya. Temukan driver yang diperlukan melalui sistem pencarian penandaan.
  • Dianjurkan untuk menggunakan program AIDA 64, itu tidak hanya menampilkan driver suara yang diperlukan, tetapi semuanya peralatan terpasang, Anda dapat menentukan penandaan chip.

Cari tahu cara menemukan driver yang tepat untuk menjalankan perangkat apa pun yang terhubung ke komputer Anda dengan mudah.

Terlepas dari kenyataan bahwa abad ke-21 sudah di depan mata dan hampir setiap orang memiliki komputer, banyak yang memperlakukannya sebagai semacam keajaiban teknologi yang tidak dapat diganggu gugat. Selain itu, sangat yakin bahwa mereka memiliki PC terbaik (karena penjual berkata demikian :)), pengguna tersebut tidak menginstal program apa pun di dalamnya dan tidak repot-repot memeriksa apakah komputer berfungsi dengan baik ...

Kenapa aku? Selain itu, baru-baru ini saya harus berurusan dengan kasus ketika beberapa kawan selama hampir satu setengah tahun setelah membeli komputer tidak memiliki driver kartu video biasa !!! Keluhannya seperti biasa - "" :) Dan mengapa dia tidak memperlambat jika tidak ada pengemudi ?!

Secara umum, hari ini kami akan memeriksa PC kami untuk mengetahui keberadaan semua driver yang diperlukan di dalamnya ...

Apa itu driver dan bagaimana cara menginstalnya?

Driver adalah sekumpulan komponen perangkat lunak yang memastikan interaksi normal komputer dengan peralatan yang terhubung dengannya dan kartu ekspansi. Dengan kata lain, ini adalah program utilitas khusus yang dapat mentransfer perintah dari periferal ke prosesor dan sebaliknya.

Tanpa driver, peralatan yang terhubung tidak akan berfungsi sama sekali (printer, pemindai, dan peralatan kantor lainnya), atau akan berfungsi, tetapi tidak dalam mode paling optimal (kartu video, chipset, dll.). Itu sebabnya untuk operasi normal Tidaklah cukup hanya menginstal ulang sistem untuk PC, penting juga untuk menemukan driver untuk semua komponennya!

Pengemudi dapat disediakan dalam tiga versi:

  1. instalasi .EXE(atau MSI);
  2. shell grafis dengan kemungkinan pemilihan dan pemasangan massal;
  3. satu set perpustakaan dan file layanan, dilengkapi dengan file INF.

Opsi pertama untuk mengirimkan driver paling sering ditemukan di Internet dan di disk instalasi yang disertakan dengan peralatan yang Anda beli. Cukup mengunduh (atau membuka di disk) dan menjalankan file EXE, dan Wisaya Instalasi akan muncul di depan kami, yang memungkinkan Anda untuk mengonfigurasi semuanya langkah demi langkah. Dalam hal ini, menginstal driver tidak lebih sulit daripada menginstal program apa pun.

Opsi pengiriman kedua dapat ditemukan pada disk dengan rakitan berbeda yang berisi beberapa driver berbeda (misalnya, driver untuk motherboard atau yang disebut paket driver). Rakitan semacam itu biasanya memungkinkan Anda untuk menginstal driver individu (atau sekaligus) secara selektif dan tidak lebih rumit dari penginstal biasa, tetapi ukurannya besar.

Menginstal driver dengan cara ketiga adalah yang paling tidak jelas. Driver semacam itu sering ditemukan untuk teknologi lama dan tidak berisi penginstal grafis, tetapi menyertakan file (terkadang lebih dari satu) dengan ekstensi INF, yang berisi semua jalur instalasi untuk paket perpustakaan agar peralatan yang terhubung berfungsi:

Untuk menginstal driver dengan cara ini, Anda perlu memanggil menu konteks di "Device Manager" ("Ikon Komputer" - RMB - "Properti" (pada sistem yang lebih lama, tab "Perangkat Keras")) perangkat tidak dikenal dan kemudian pilih "Perbarui Driver".

Sebuah jendela akan terbuka dari mana kita harus pergi ke sini (dengan mengklik tombol yang sesuai): "Cari driver di komputer ini" - "Pilih driver dari daftar yang sudah diinstal" - "Instal dari disk", lalu klik tombol "Jelajahi" dan tentukan lokasi file INF yang Anda butuhkan:

Setelah mengonfirmasi pilihan file INF, sebuah pesan akan muncul tentang instalasi yang berhasil, atau bahwa file yang Anda pilih tidak cocok dan Anda harus memilih yang lain (jika ada). Jika tidak ada file INF yang memungkinkan Anda menginstal driver yang benar, maka Anda harus mencari perangkat lunak alternatif atau bahkan mengubah perangkat keras atau sistem agar perangkat tersebut kompatibel dengan PC Anda.

Nah, sekarang Anda sudah tahu apa itu driver, mengapa Anda membutuhkannya dan bagaimana cara menginstalnya, saatnya mencari tahu cara mencari driver.

Cari berdasarkan nama perangkat

Perangkat apa pun (jika itu bukan kerajinan Cina yang tidak disebutkan namanya) memiliki namanya sendiri. Mengetahui nama ini dan versi sistem Anda, dalam banyak kasus, Anda dapat merumuskan yang benar permintaan pencarian untuk masuk ke dalam mesin pencari. Misalnya: "pengemudi Pencetak kanon IP1500 untuk Windows 7 64-bit" atau "driver Radeon HD 8700M Windows 8".

Hasil pencarian akan berisi situs tempat Anda dapat mengunduh driver yang Anda butuhkan. Namun, tidak semua situs dapat mengunduh secara gratis! Untuk menghindari kekhawatiran yang tidak perlu karena keuangan atau penginstalan perangkat lunak berkualitas rendah, saya sarankan Anda menggunakan portal berbahasa Rusia yang sudah terbukti:

Situs ini berisi salah satu dari koleksi lengkap driver dari seluruh Internet dengan volume total lebih dari 300 TB! Di sini Anda dapat mencari driver berdasarkan jenis perangkat (daftar utama "Kategori perangkat keras"), dan berdasarkan nama pabrikan (indeks abjad di bagian atas halaman).

Pada halaman dengan komponen yang diperlukan, akan ada sejumlah opsi pengunduhan. Perhatikan bidang "Jenis program" (kata "driver" harus ada di sana, jika tidak, Anda dapat mengunduh utilitas layanan atau plug-in), "Deskripsi" (juga mengatakan untuk apa file ini atau itu), dan juga "Sistem". Anda dapat mengunduh driver itu sendiri dari tautan setelah deskripsi, mengonfirmasi bahwa Anda bukan robot :)

Selain mencari driver di repositori khusus, terkadang masuk akal untuk mencari di situs pengembang! Misalnya, driver untuk kartu video populer cukup sering diperbarui dan diunduh versi terbaru Anda bisa, seringkali, hanya di situs web resmi. Oleh karena itu, saya akan memberikan daftar kecil tautan untuk mengunduh halaman untuk driver dari delusi yang paling umum.

Kartu video:

Kartu suara:

Peralatan Kantor:

Dengan mengunduh driver dari sumber tepercaya, Anda tidak perlu khawatir driver tersebut tidak berfungsi atau mengandung virus. Selain itu, keuntungan mengunduh dari situs resmi adalah jaminan bahwa Anda akan mengunduh driver terbaru dan terbaru, yang sayangnya tidak dapat dijamin saat mengunduh dari sumber pihak ketiga.

Cari berdasarkan ID perangkat

Menemukan driver dengan nama perangkat Anda adalah tugas yang cukup sederhana. Namun, jika perangkat itu sendiri berasal dari pabrikan yang tidak dikenal, maka kami juga tidak dapat mengetahui namanya! Jika Anda dihadapkan pada situasi seperti itu, metode pencarian alternatif akan membantu Anda - dengan pengenal peralatan.

Setiap perangkat, bahkan di dalam blok sistem, meskipun terhubung dengan kabel eksternal, memiliki pengenal atau ID sendiri di sistem. Kita dapat mengenalinya di "Pengelola Perangkat" yang sudah familiar dengan memanggil "Properti" dari komponen yang diinginkan, membuka tab "Detail" dan memilih item "ID Perangkat Keras" atau "ID" di drop-down "Properti". daftar:

Dimulai dengan Windows Vista, Anda dapat menyalin nilai string pengidentifikasi ke clipboard menggunakan menu konteks. Di versi sebelumnya, tidak ada fungsi salin, sehingga ID harus ditulis ulang secara manual.

Sekarang, mengetahui pengidentifikasi perangkat yang kita butuhkan, kita dapat menemukan driver yang cocok untuknya menggunakan layanan khusus. Di sini sekali lagi, Driver.ru yang telah disebutkan dapat membantu kami:

Untuk melakukan ini, klik tombol "Cari" di pojok kanan atas dan tempel ID perangkat yang disalin ke bidang di halaman yang terbuka, lalu pastikan untuk mencentang item "Cari berdasarkan ID" dan klik tombol "Cari" di bawah bidang masukan. Di antara hasil yang terbuka, Anda dapat dengan mudah menemukan driver yang cocok untuk sistem Anda dan Anda dapat mengunduhnya.

Beberapa portal pencarian driver yang lebih besar bekerja dengan cara yang sama. Yang terbaik adalah DevID.info dan DevID.drp.su. Omong-omong, kedua layanan memiliki kliennya sendiri yang memungkinkan Anda mendeteksi driver yang Anda perlukan secara otomatis dan menginstalnya. Kami akan berbicara tentang perangkat lunak khusus tersebut lebih lanjut.

Program untuk mencari driver

Di atas, kami mempertimbangkan kasus ketika Anda harus mencari driver secara manual. Namun, untuk ini ada juga program khusus yang memungkinkan Anda menemukan dan mengunduh semuanya secara otomatis. Semuanya dapat dibagi menjadi dua jenis.

Program jenis pertama biasanya berupa modul klien kecil (hingga sepuluh megabita) yang memungkinkan Anda memindai komputer untuk mencari driver yang sudah usang atau dihapus instalannya, lalu mengunduhnya dari Internet dan menginstalnya dengan beberapa klik. Di situs kami, perwakilan terkemuka dari program semacam ini adalah:

Namun, mayoritas keputusan serupa ada satu kekurangan besar: Anda hanya dapat mengunduh beberapa driver per hari secara gratis. Jika Anda melebihi batas, Anda akan dilarang mengunduh sepenuhnya, atau kecepatan unduh akan dikurangi seminimal mungkin, sehingga Anda tetap membeli akun premium.

Untuk alasan ini, program jenis ini dapat digunakan secara gratis hanya untuk pembaruan driver tunggal, tetapi tidak untuk penginstalan batch pada Windows yang baru diinstal. Jika Anda menginginkan semuanya sekaligus, pilihan Anda adalah paket driver!

Paket driver (dari bahasa Inggris. " paket pengemudi"-" satu set driver ") adalah, paling sering, satu set database offline dengan driver yang dipilih dan program shell. Program memindai PC Anda, setelah itu menawarkan untuk menginstal atau memperbarui sejumlah driver. Anda hanya perlu untuk menandai yang Anda butuhkan dan mengonfirmasi pilihan Anda. Pemasangan akan terjadi secara otomatis!

Dalam luasnya Runet, paket driver paling lengkap dan populer adalah:

Hingga saat ini, ukuran paket pengiriman maksimum paket driver ini lebih dari 10 gigabyte. Ini tidak mengesankan seperti database 30 terabyte dari Driver.ru, tetapi, jumlah driver seperti itu sudah cukup sehingga setelah menginstal ulang sistem Anda tidak perlu mencari disk instalasi yang datang dengan papan utama, kartu video dan komponen lain dari PC atau laptop Anda.

Jika Anda tidak ingin mengunduh driver 10 gigabyte, Anda dapat mengunduh DriverPack Online versi Lite. Ini hanya program pemindai yang menentukan driver yang Anda butuhkan, terhubung ke database online dan memungkinkan Anda mengunduh hanya yang Anda butuhkan.

kesimpulan

Saat ini, mencari driver untuk komputer dan laptop tidaklah sulit. Namun, seperti program apa pun, mereka membutuhkan pembaruan dari waktu ke waktu, yang dilupakan banyak orang. Dan omong-omong, pembaruan bisa sangat membantu!

Jadi, misalnya, sejak musim semi, "" mulai muncul dari waktu ke waktu dengan keluhan tentang semacam pustaka DLL. Untuk beberapa waktu saya tahan dengan keadaan ini, tetapi kemudian saya lelah dan memutuskan untuk mencari solusi untuk masalah tersebut. Ternyata pelakunya adalah kesalahan pada driver kartu video. Setelah memperbarui driver, semuanya menjadi lebih baik dan selama beberapa bulan sekarang "penerbangan" normal :)

Moral dari semua hal di atas adalah ini: jika Anda tiba-tiba mulai mengalami "gangguan" di PC Anda atau telah diamati sejak pembelian komputer / menginstal ulang windows, periksa pembaruan driver untuk kritis komponen penting PC Anda. Jika ada, coba pasang dan mungkin sistem Anda akan bekerja dengan baik lagi!

P.S. Diperbolehkan untuk menyalin dan mengutip artikel ini dengan bebas, asalkan tautan aktif terbuka ke sumber ditunjukkan dan kepenulisan Ruslan Tertyshny dipertahankan.

Mungkin setiap orang yang menginstal ulang sistem operasinya sendiri setidaknya sekali memiliki pertanyaan populer: bagaimana cara mengetahui driver mana yang perlu diinstal di komputer agar operasinya stabil? Inilah pertanyaan yang akan kami coba jawab di artikel ini. Mari kita pahami lebih detail.

Secara teori, Anda perlu menginstal perangkat lunak untuk semua perangkat yang memerlukannya di komputer atau laptop. Seiring waktu, pengembang sistem operasi terus-menerus memperluas basis data driver Microsoft. Dan jika di Waktu jendela XP harus menginstal hampir semua driver secara manual, tetapi dalam kasus sistem operasi yang lebih baru, banyak driver yang sudah diinstal secara otomatis. Namun, ada perangkat yang perangkat lunaknya harus diinstal secara manual. Kami menyampaikan kepada Anda sejumlah cara yang akan membantu Anda dalam memecahkan masalah ini.

Metode 1: Situs web resmi produsen

Untuk menginstal semua driver yang diperlukan, Anda perlu menginstal perangkat lunak untuk semua papan di komputer Anda. Ini mengacu pada motherboard, kartu video, dan papan eksternal ( adaptor jaringan, kartu suara, dll.). Pada saat yang sama, di "Pengaturan perangkat" itu mungkin tidak menunjukkan bahwa perangkat keras memerlukan driver. Saat memasang sistem operasi, perangkat lunak standar untuk perangkat itu hanya digunakan. Namun, perangkat lunak untuk perangkat tersebut harus diinstal asli. Sebagian besar perangkat lunak yang diinstal ada di motherboard dan chip terintegrasi ke dalamnya. Oleh karena itu, pertama-tama kita akan mencari semua driver untuk motherboard, lalu untuk kartu video.

  1. Cari tahu pabrikan dan model motherboard. Untuk melakukan ini, tekan tombol Menangkan+R pada keyboard dan di jendela yang terbuka, masukkan perintah cmd untuk membuka baris perintah.
  2. DI DALAM garis komando Anda harus memasukkan perintah satu per satu:
    alas tiang wmic dapatkan Pabrikan
    alas tiang wmic dapatkan produk
    Jangan lupa tekan "Memasuki" setelah setiap perintah dimasukkan. Hasilnya, Anda akan melihat pabrikan dan model motherboard Anda di layar.
  3. Sekarang kami mencari situs web pabrikan di Internet dan membukanya. Dalam kasus kami, ini adalah .
  4. Di situs tersebut, kami mencari bidang pencarian atau tombol yang sesuai dalam bentuk kaca pembesar. Biasanya, dengan mengklik tombol ini Anda akan melihat kolom pencarian. Di kolom ini, Anda harus memasukkan model motherboard dan klik "Memasuki".
  5. Pada halaman berikutnya, Anda akan melihat hasil pencarian. Anda harus memilih motherboard Anda dari daftar. Biasanya, ada beberapa subbagian di bawah nama model papan. Jika ada bagian "Driver" atau "Unduhan", klik nama bagian tersebut dan buka.
  6. Dalam beberapa kasus, halaman berikut dapat dibagi menjadi subbagian perangkat lunak. Jika demikian, cari dan pilih subbagian "Driver".
  7. Langkah selanjutnya adalah memilih sistem operasi dan kedalaman bit dari daftar drop-down. Harap dicatat bahwa dalam beberapa kasus mungkin ada perbedaan dalam daftar driver saat memilih OS yang berbeda. Oleh karena itu, lihat tidak hanya sistem yang telah Anda instal, tetapi juga versi di bawah ini.
  8. Setelah memilih OS, Anda akan melihat daftar semua perangkat lunak yang dibutuhkan motherboard Anda untuk berinteraksi dengan komponen komputer lainnya. Anda perlu mengunduh dan menginstal semuanya. Pengunduhan terjadi secara otomatis setelah mengklik tombol, Unduh atau ikon yang sesuai. Jika Anda mengunduh arsip dengan driver, maka sebelum menginstal, pastikan untuk mengekstrak semua isinya ke dalam satu folder terpisah. Setelah itu, instal perangkat lunak.
  9. Setelah Anda menginstal semua perangkat lunak untuk motherboard Anda, mari beralih ke kartu video.
  10. Tekan kombinasi tombol lagi Menangkan+R dan di jendela yang muncul, masukkan perintah "dxdiag". Klik untuk melanjutkan "Memasuki" atau tombol "OKE" di jendela yang sama.
  11. Di jendela alat diagnostik yang terbuka, buka tab "Layar". Di sini Anda dapat mengetahui pabrikan dan model adaptor grafis Anda.
  12. Jika Anda memiliki laptop, Anda juga harus membuka tab "Konverter". Di sini Anda dapat melihat informasi tentang kartu grafis diskrit kedua.
  13. Setelah Anda mengetahui pabrikan dan model kartu video Anda, Anda harus mengunjungi situs web resmi perusahaan. Berikut adalah daftar halaman unduhan produsen kartu grafis utama.
  14. Anda perlu menentukan model kartu video Anda dan sistem operasi dengan bitness di halaman ini. Setelah itu, Anda dapat mengunduh perangkat lunak dan menginstalnya. Harap dicatat bahwa lebih baik menginstal perangkat lunak untuk adaptor grafis dari situs resmi. Hanya dalam hal ini komponen khusus akan dipasang yang akan meningkatkan kinerja kartu video dan memungkinkannya untuk disetel dengan baik.
  15. Saat Anda menginstal perangkat lunak untuk adaptor grafis dan motherboard, Anda perlu memeriksa hasilnya. Untuk ini kami buka "Pengaturan perangkat". Tekan kombinasi tombol Menang Dan "R" di keyboard, dan di jendela yang terbuka, tulis perintah devmgmt.msc. Setelah itu kita tekan "Memasuki".
  16. Akibatnya, Anda akan melihat jendela "Pengaturan perangkat". Itu tidak boleh berisi perangkat dan peralatan yang tidak dikenal, di sebelah namanya ada interogatif atau tanda seru. Jika demikian, maka Anda telah menginstal semua driver yang diperlukan. Dan jika ada komponen seperti itu, kami sarankan menggunakan salah satu metode berikut.

Metode 2: Utilitas Pembaruan Perangkat Lunak Otomatis

Jika Anda terlalu malas untuk mencari dan menginstal semua perangkat lunak secara manual, maka Anda harus melihat lebih dekat program yang dirancang untuk memudahkan tugas ini. Kami meninjau program paling populer untuk mencari dan memperbarui perangkat lunak secara otomatis di artikel terpisah.

Anda dapat menggunakan salah satu utilitas yang dijelaskan. Namun kami tetap menyarankan untuk menggunakan DriverPack Solution atau Driver Genius. Ini adalah program dengan basis data driver terbesar dan perangkat keras yang didukung. Kami telah memberi tahu Anda tentang cara menggunakan DriverPack Solution.

Oleh karena itu, izinkan kami memberi tahu Anda cara menemukan dan menginstal semua driver menggunakan program Driver Genius. Jadi, mari kita mulai.

  1. Kami memulai program.
  2. Anda akan segera menemukan diri Anda padanya halaman rumah. Ada tombol hijau di tengah "Mulai Cek". Kami dengan berani menekannya.
  3. Proses pemindaian komputer atau laptop Anda akan dimulai. Setelah beberapa menit, Anda akan melihat daftar semua perangkat yang perlu Anda unduh dan instal perangkat lunak. Karena kami tidak mencari driver tertentu, kami memeriksa semua item yang tersedia. Setelah itu, tekan tombol "Lebih jauh" di bagian bawah jendela program.
  4. Di jendela berikutnya, Anda akan melihat daftar perangkat yang drivernya telah diperbarui menggunakan utilitas ini, dan perangkat yang perangkat lunaknya masih perlu diunduh dan diinstal. Jenis perangkat terakhir ditandai dengan lingkaran abu-abu di sebelah namanya. Untuk keandalan, cukup tekan tombol "Unduh Semua".
  5. Setelah itu, program akan mencoba menyambung ke server untuk mengunduh file yang diperlukan. Jika semuanya berjalan dengan baik, Anda akan kembali ke jendela sebelumnya, di mana Anda dapat melacak kemajuan pengunduhan perangkat lunak di baris yang sesuai.
  6. Saat semua komponen diunduh, ikon di sebelah nama perangkat akan berubah menjadi hijau dengan panah ke bawah. Sayangnya, menginstal semua perangkat lunak dengan satu tombol tidak akan berfungsi. Oleh karena itu, pilih saluran dengan perangkat yang diperlukan dan tekan tombol "Install".
  7. Secara opsional, buat titik pemulihan. Anda akan diminta untuk ini di kotak dialog berikutnya. Pilih jawaban yang sesuai dengan keputusan Anda.
  8. Setelah itu, proses penginstalan driver untuk perangkat yang dipilih akan dimulai, di mana kotak dialog standar akan muncul. Di dalamnya, Anda hanya perlu membaca perjanjian lisensi dan menekan tombol "Lebih jauh". Anda seharusnya tidak memiliki masalah pada tahap ini. Setelah menginstal perangkat lunak ini atau itu, Anda mungkin diminta untuk mem-boot ulang sistem. Jika pesan seperti itu muncul, kami sarankan Anda melakukannya. Setelah driver berhasil diinstal, Program pengemudi Jenius di sebelah baris dengan peralatan akan menjadi tanda centang hijau.
  9. Jadi, Anda perlu menginstal perangkat lunak untuk semua peralatan dari daftar.
  10. Pada akhirnya, Anda dapat memindai komputer lagi agar meyakinkan. Jika Anda telah menginstal semua driver, Anda akan melihat pesan serupa.
  11. Selain itu, Anda dapat memeriksa apakah semua perangkat lunak diinstal dengan "Pengaturan perangkat" seperti yang dijelaskan pada akhir metode pertama.
  12. Jika masih ada perangkat yang tidak teridentifikasi, coba cara berikut.

Metode 3: Layanan Online

Jika metode sebelumnya tidak membantu Anda, tetap berharap untuk opsi ini. Artinya adalah kami akan mencari perangkat lunak secara manual dengan pengidentifikasi perangkat unik. Agar tidak menggandakan informasi, kami sarankan Anda membiasakan diri dengan pelajaran kami.

Di dalamnya Anda akan menemukan informasi mendetail tentang cara menemukan ID dan apa yang harus dilakukan selanjutnya. Serta panduan menggunakan dua layanan pencarian driver online terbesar tersebut.

Metode 4: Pembaruan driver manual

Metode ini adalah yang paling tidak efisien dari semua hal di atas. Namun, dalam kasus yang sangat jarang, dialah yang dapat membantu menginstal perangkat lunak. Inilah yang diperlukan.


Ini yang paling banyak cara-cara yang efektif tentukan perangkat yang Anda butuhkan untuk menginstal perangkat lunak. Kami berharap salah satu opsi yang diusulkan akan membantu Anda dalam menyelesaikan masalah ini. Jangan lupa untuk memperbarui perangkat lunak untuk perangkat Anda tepat waktu. Jika Anda kesulitan menemukan atau menginstal driver, tulis di komentar. Bersama-sama kita akan memperbaiki semuanya.

Seperti yang kita ketahui, di level perangkat keras komputer modern terdiri dari unit fungsional, yang merupakan komponen elektronik tertentu. Berbagai macam pengguna komputer pribadi akrab dengan blok fungsional seperti: prosesor, memori, kartu video, kartu suara, HDD, pengontrol I / O (menyediakan pengoperasian keyboard, mouse, joystick, media USB (flash drive)), printer, pemindai, dan beberapa lainnya. Pada tingkat fisik, perangkat ini berinteraksi satu sama lain melalui bus dan protokol khusus, menciptakan kombinasi interaksinya dengan simbiosis operasi, yang, secara umum, mencirikan fungsi komputer. Tetapi apakah komputer hanyalah kumpulan dari komponen elektronik? Tentu tidak, karena salah satu modul perangkat keras utama, CPU, dirancang untuk menjalankan instruksi mesin, yang urutannya, seperti yang kita ketahui, terdiri dari program, sehubungan dengan ini, akan tepat untuk menyebutkan satu level lagi - perangkat lunak. Sekarang mari kita kembali ke masa lalu yang tidak terlalu jauh; Pada awal era komputer, kode program (yang sering ditulis langsung dalam kode mesin/bahasa tingkat rendah) dapat dengan mudah berinteraksi dengan hardware secara langsung karena arsitektur hardware relatif sederhana. Namun, seiring waktu, teknologi telah berkembang, tingkat perangkat keras dan perangkat lunak telah berevolusi secara saling berhubungan, dan yang pertama adalah munculnya berbagai macam perangkat, dan yang kedua adalah munculnya berbagai macam perangkat. modul perangkat lunak, yang kemudian menyebabkan munculnya sistem operasi. Sistem operasi adalah tonggak penting dalam sejarah perkembangan industri komputer, karena itu, antara lain, bertindak sebagai penghubung, semacam koordinator (dispatcher) yang memastikan interaksi antara perangkat dan program: diterima permintaan dari lapisan perangkat lunak (misalnya, program pengguna) untuk pertukaran data dengan perangkat ini atau itu dan sebaliknya, yaitu, sebenarnya berfungsi sebagai antarmuka antara bagian perangkat keras dan perangkat lunak. Sistem operasi juga tidak tinggal diam, dan jika pada awalnya interaksi sistem operasi dengan perangkat keras komputer relatif sederhana, kemudian ketika arsitektur menjadi lebih kompleks dan kemampuan perangkat keras baru diperkenalkan, struktur sistem operasi menjadi lebih rumit. Sepanjang pengembangan sistem operasi, pengembang telah mencoba membuat kode yang menyediakan interaksi penuh dengan perangkat perangkat keras sebanyak mungkin yang tersedia di pasar. Namun demikian, pendekatan seperti itu, karena arsitektur komputer pribadi x86 menjadi lebih kompleks, menyebabkan munculnya konsep lapisan perangkat lunak terpisah yang disebut driver yang bertanggung jawab untuk berinteraksi dengan kelas / jenis perangkat tertentu. Konsep driver ternyata sangat sukses sehingga selain arahan utama - dukungan untuk perangkat fisik, konsep ini diekstrapolasi ke beberapa kategori perangkat logis / virtual. Pada artikel ini kita akan berbicara tentang apa itu driver jendela.

Teori

Mari kita menjauh sedikit dari konsep pengemudi dan melihat teori umum. Untuk memahami apa itu driver dalam suatu sistem, pertama-tama Anda harus melalui teori minimum tentang arsitektur umum x86-64. Mengapa x86, ya, karena platform khusus ini: a) dipilih oleh saya untuk eksperimen, b) adalah yang paling umum di segmen operasi klien Sistem Windows. Fitur-fitur yang disuarakan di bagian ini akan memberi kita pemahaman tentang banyak aspek pengoperasian sistem operasi itu sendiri dan, karenanya, driver dalam komposisinya.

Mode pengoperasian prosesor

Struktur internal sistem operasi apa pun didasarkan pada fitur perangkat keras dari platform yang menjalankannya. Tautan pusat adalah prosesor, prosesor arsitektur x86-64 memiliki beberapa mode operasi:

  • Modus nyata;
  • Mode virtual (Mode virtual);
  • Modus terlindungi;
  • Mode panjang (Mode panjang).

Di awal era pengembangan komputer pribadi arsitektur x86, prosesor bekerja dalam mode nyata. Namun demikian, mode nyata secara bertahap menjadi bagian dari masa lalu, karena memiliki sejumlah fitur yang tidak memungkinkan untuk mengembangkan teknologi lebih lanjut: bus data 16-bit dan bus alamat 20-bit (batasan pengalamatan), pengalamatan segmen dengan ukuran segmen 64 kilobyte (ketidaknyamanan untuk menggunakan ruang alamat), kurangnya batasan akses ke ruang alamat. Untuk menghapus batasan yang ada, mode terproteksi dikembangkan, yang menyediakan sejumlah fitur penting untuk pengembangan sistem operasi: "multitasking", mekanisme perlindungan (akses ke perintah istimewa), yang menyediakan kontrol akses kode yang berbeda bagian (program) satu sama lain, model memori maya. Dalam Mode Terlindungi Prosesor Intel arsitektur x86 menerapkan apa yang disebut cincin perlindungan atau tingkat hak istimewa. Ada empat di antaranya: 0 (paling istimewa), 1, 2 dan 3 (paling tidak istimewa). Level hak istimewa dimaksudkan untuk melindungi kode mode kernel dari program pengguna dan program pengguna dari satu sama lain, karena hal ini dapat menyebabkan korupsi. Namun, sistem operasi Windows tidak menggunakan semua level yang terdaftar, hanya dua level yang terlibat di dalamnya: 0 dan 3.
Untuk kejelasan pemahaman ini, kami menyajikan diagram interaksi komponen Windows yang disederhanakan:

Seperti yang Anda lihat, lingkungan internal sistem operasi Windows dibagi menjadi dua bagian dan mendukung dua mode eksekusi:

  • Mode pengguna- mode tidak terjangkau, terkait dengan cincin perlindungan prosesor perangkat keras ke-3;
  • Mode kernel adalah mode istimewa yang terkait dengan ring perlindungan prosesor ke-0 perangkat keras;

Fitur ini mungkin merupakan poin terpenting dalam memahami struktur internal Windows: secara global, sistem operasi seolah-olah dibagi menjadi dua bagian utama: mode pengguna dan mode kernel.

Perlu dipahami, disadari, dan diingat sekali dan untuk selamanya, karena, pada kenyataannya, ini adalah salah satu konsep dasar dari begitu banyak sistem operasi modern.
Mode pengguna dan mode kernel memiliki perbedaan sebagai berikut:

  • Ruang alamat virtual terisolasi (tidak tumpang tindih): ruang mode pengguna menempati bagian bawah (alamat dari ke), ruang mode kernel menempati bagian atas (alamat dari ke);
  • Hak istimewa akses kode yang berbeda ke sumber daya (memori, prosesor, perangkat, dll.).

Proses berikut berjalan dalam mode pengguna:

Subsistem Keterangan
Proses Dukungan Sistem
  • Proses logon Winlogon (winlogon.exe )
  • Proses server lokal otentikasi lsass (lsass.exe )
  • Proses Manajer Kontrol Layanan (services.exe )
  • Proses Manajer Sesi (smss.exe )
  • Proses konsol (conhost.exe )
  • Proses Manajer Sesi Lokal (lsm.exe )
  • . . .
Proses Layanan
  • Proses Host untuk Layanan (svchost.exe )
  • Proses Spooler (spoolsv.exe )
  • Proses Manajemen Layanan WMI (winmgmt.exe )
  • . . .
Aplikasi
  • Aplikasi pengguna (semua aplikasi yang tidak termasuk dalam kategori lain).
  • Pengelola Tugas (taskmgr.exe )
  • Penjelajah (explorer.exe)
  • Konsol Manajemen (mmc.exe )
  • . . .
Subsistem Lingkungan
  • Subsistem Win32 (csrss.exe , kernel32.dll , advapi32.dll , user32.dll , gdi32.dll , ...)
  • Subsistem Linux (lxss.sys , lxcore.sys )
  • Subsistem POSIX (psxss.exe , psxrun.exe , posix.exe , psxdll.dll )
  • Subsistem OS/2 (os2.exe , os2ss.exe , os2srv.exe )
  • Subsistem WOW/WOW64 (wow64win.dll, wow64.dll, wow64cpu.dll)
  • . . .
Antarmuka ke fungsi kernel
  • Menyediakan transfer kontrol ke kernel untuk fungsi yang membutuhkannya. Didukung oleh ntdll.dll

Dalam mode kernel:

Subsistem Keterangan
Sistem eksekutif (Eksekutif)
  • Manajer I/O
  • Manajer Proses
  • Pengelola Utas
  • Manajer memori virtual
  • Manajer objek
  • Manajer PnP
  • Manajer Daya
  • Manajer Jendela
  • . . .
Inti inisialisasi driver penting untuk sistem selama fase boot, sinkronisasi antarprosesor, penjadwalan dan pengiriman proses/utas/interupsi, penanganan/pengiriman pengecualian/kesalahan dan beberapa fungsi lainnya (ntoskrnl.exe , ntkrnlmp.exe , ntkrnlpa.exe , ntkrpamp .exe ).
Driver Perangkat driver perangkat fisik/logis/virtual: sistem file, jaringan, disk, dan driver lainnya.
Subsistem Windowing / grafis (Windowing And Graphics System) Windowing dan subsistem dukungan grafis yang menyediakan dukungan untuk fungsi grafis. antarmuka pengguna(Antarmuka Pengguna Grafis, GUI). (win32k.sys )
Lapisan Abstraksi Perangkat Keras (HAL) memberikan independensi dari perangkat keras platform, mengisolasi komponen kernel dari spesifikasinya perangkat keras. (hal.dll)

Karena sistem operasi apa pun harus dapat bekerja dengan perangkat keras, kit distribusi (kit instalasi / file sistem) berisi driver untuk komponen perangkat keras utama, yang tanpanya sistem akan benar-benar kehilangan akses ke perangkat keras dengan semua masalah berikutnya: tidak akan bisa berfungsi atau tidak sama sekali akan melalui proses instalasi. Driver "internal" ini disajikan dalam bentuk yang disebut pustaka driver bawaan, yang komposisinya berubah dari versi ke versi, bergantung pada tahapan evolusi perangkat keras dan tren pasar. Driver dari perpustakaan ini, jika perlu, diinstal pada tahap penginstalan sistem operasi, tergantung pada deteksi (identifikasi) perangkat tertentu di komputer. Secara umum, selama penginstalan, kode deteksi perangkat keras mendeteksi perangkat yang diinstal di komputer dan memeriksa perpustakaannya untuk driver yang sebanding. Untuk perangkat yang memiliki driver sistem, penginstalan dilakukan dalam mode otomatis (latar belakang). Jadi, "di pintu keluar", setelah menginstal sistem operasi, kita bisa mendapatkan set minimum driver sistem yang diperlukan agar berfungsi, yang memungkinkan kita mengatur lingkungan kerja awal yang bisa diterapkan. Namun perlu diingat bahwa Anda tidak boleh membatasi diri pada driver yang disertakan dalam kit distribusi, karena sebagian besar perangkat dapat berfungsi penuh mungkin memerlukan driver yang disediakan oleh produsen perangkat.

Pertanyaannya tetap: apakah semua komponen mode kernel berinteraksi dengan perangkat keras secara eksklusif melalui lapisan HAL? apakah ada pengecualian? Di Web, banyak sumber menyediakan diagram di mana driver adaptor grafis berinteraksi dengan kartu video seolah-olah "secara langsung", melewati HAL. Seingat saya, grafik diberi prioritas tertinggi di beberapa versi Windows, sehingga dipisahkan ke dalam kategori perangkat terpisah yang bekerja langsung dengan adaptor grafis, dan ini dilakukan untuk mempercepat GUI sistem.

Tingkat Permintaan Interupsi (IRQL)

Di antara mekanisme internal utama yang menentukan fungsi sistem operasi Windows, terdapat topik yang cukup penting untuk memahami prinsip pengoperasian driver, yang tidak mungkin dilewati. Mekanisme ini disebut tingkat permintaan interupsi(Tingkat Permintaan Interupsi, Tingkat IRQ, IRQL) dan cukup sulit untuk dipahami, sehingga studi mendalamnya jauh melampaui cakupan materi yang disajikan, namun, dalam artikel ini kami akan mencoba membuat ringkasan (yah, di masa mendatang kami akan mengalokasikan artikel terpisah untuk itu). Terus terang saya sendiri masih bingung dengan konsep IRQL, maka saya akan mengemukakan pemahaman saya sendiri secara sistematis, step by step, berdasarkan ilmu yang didapat pada setiap tahapan.
Istilah interupsi selalu dikaitkan dengan saya dengan mode operasi prosesor yang sebenarnya, beralih ke zaman sistem operasi MSDOS, di mana semuanya cukup sederhana: ada satu set 256 interupsi yang tersedia melalui tabel vektor interupsi. Beberapa dari interupsi ini adalah perangkat keras, masing-masing, dihasilkan secara independen oleh beberapa peristiwa perangkat keras eksternal, sementara yang lain adalah perangkat lunak, masing-masing, dapat dipanggil dari kode aplikasi. Entri dalam tabel interupsi dapat didefinisikan ulang, yaitu, vektor penangan interupsi tersedia untuk diubah sesuka hati ke prosedur pemrosesannya sendiri. Konsep seperti tingkat permintaan interupsi tidak ada, semuanya sederhana dan jelas. Namun, dengan evolusi prosesor dan sistem operasi, mode terlindungi pertama kali muncul, dan kemudian Windows, sejak saat itu semuanya mulai menjadi lebih rumit dengan cepat.
Tiba-tiba, di versi pertama Windows 95 / NT, semacam tabel muncul (terdiri dari 32 level permintaan interupsi), levelnya dinilai dari yang terendah 0 (pasif) hingga yang tertinggi 31 (tinggi):

Nama Kelas Tujuan Tingkat Intel x86-64
TINGGI Perangkat keras Tingkat tertinggi. NMI dan jenis lainnya. 31
KEKUATAN Perangkat keras Peristiwa mati listrik 30
IPI Perangkat keras Sinyal antarprosesor. Sinyal komunikasi antarprosesor. 29
JAM Perangkat keras Siklus pengatur waktu sistem 28
PROFIL Perangkat keras Kontrol kinerja. Timer pembuatan profil kernel (mekanisme untuk mengukur kinerja sistem). 27
PERANGKAT Perangkat keras DIRQL (Perangkat IRQL). Interupsi perangkat keras perangkat. 3-26
MENUGASKAN Program Operasi penjadwalan/panggilan prosedur yang ditangguhkan (DPC). 2
APC Program Panggilan prosedur asinkron. 1
PASIF Program Tingkat pasif. Tidak ada gangguan. Tingkat eksekusi kode mode pengguna normal 0

Seperti yang Anda lihat, ada fitur yang sangat menarik pada tabel di atas: level perangkat lunak dan perangkat keras disatukan (0-2 adalah level perangkat lunak, dan 3-31 adalah level perangkat keras).

IRQL adalah atribut pemrograman berpemilik yang diperkenalkan oleh pengembang Microsoft. Mekanisme ini tidak mendapat dukungan perangkat keras dari prosesor. Sistem secara mandiri mengelola semua jenis interupsi yang terjadi melalui mekanisme untuk memetakan level interupsi dari pengontrol interupsi perangkat keras (PIC) dan level perangkat lunaknya sendiri ke dalam tabel level interupsi independen perangkat keras.

Dari pernyataan ini mengikuti bahwa model adalah miliknya sendiri, perangkat lunak, dan level di dalamnya tidak terikat pada spesifikasi perangkat keras apa pun, ini memungkinkan sistem untuk merakit jenis interupsi perangkat keras dan non-perangkat keras ke dalam satu hierarki prioritas. Level IRQL yang lebih rendah (non-perangkat keras/perangkat lunak) (PASSIVE, APC, DPC/DISPATCH) digunakan untuk menyinkronkan subsistem perangkat lunak sistem operasi: memicu operasi penjadwalan seperti peralihan utas atau pemrosesan penyelesaian I/O. Mari kita lihat secara detail:

  • Prioritas IRQL ke-0 (terendah) (PASSIVE): adalah tingkat permintaan interupsi tipikal di mana pekerjaan dilakukan dalam sistem operasi, baik dalam mode pengguna maupun dalam mode kernel. Kode (program) dijalankan tingkat yang diberikan, dapat dengan mudah diinterupsi (didahului) oleh apa pun: misalnya, utas yang dieksekusi dengan level IRQ PASSIVE didahului oleh penjadwal setelah berakhirnya waktu yang dialokasikan untuknya.
  • IRQL APC dan DPC/DISPATCH adalah level interupsi perangkat lunak yang terkait dengan penjadwal.
  • Tingkat 1 IRQL (APC): Pada level ini, apa yang disebut prosedur APC dijalankan, yaitu prosedur yang mengeksekusi secara asinkron dalam konteks utas tertentu, dengan kata lain, mengatur I / O asinkron, atau mengalamatkan / menunggu rilis apa pun (eksternal, global) objek sistem. Menggunakan fungsi APC (misalnya, WaitForSingleObjectEx) dalam kode tidak mengarah pada eksekusi fungsi secara instan, sebaliknya, utas (dalam konteks di mana fungsi dijalankan) memasuki status khusus dan interupsi perangkat lunak APC dihasilkan, panggilan fungsi ditempatkan dalam antrian internal. Lain kali saat utas itu berjalan, fungsi APC terjadwal dijalankan pada lapisan APC. Oleh karena itu, utas yang berjalan pada lapisan APC tidak menerima permintaan dari lapisan APC mereka sendiri, yang digunakan sistem untuk operasi penyelesaian I/O.
  • Tingkat 2 IRQL (DPC/DISPATCH):
    • digunakan untuk menangani Panggilan Prosedur yang Ditangguhkan (DPC): Panggilan Prosedur yang Ditangguhkan adalah rutinitas panggilan balik yang ditangguhkan untuk eksekusi hingga peralihan ke tingkat IRQL DISPATCH terjadi; Biasanya, DPC diminta dari IRQL tinggi untuk melakukan pekerjaan tambahan yang waktu CPU-nya tidak kritis. Ini adalah tahap yang cukup penting untuk pertunjukan, dan sekarang saya akan menjelaskan alasannya. Driver perangkat mencoba untuk melakukan jumlah operasi seminimal mungkin di dalam rutinitas layanan interupsi (ISR) mereka sendiri agar tidak memakan waktu lama di level DIRQL, sehingga tidak memblokir interupsi lain dan tidak memperlambat, akibatnya, seluruh sistem .

      Semakin tinggi level IRQL, semakin rendah kapabilitas proses. Ini mendorong pengembang untuk level tinggi IRQL untuk melakukan hanya operasi yang paling diperlukan, dan untuk melakukan semua tindakan lainnya pada tingkat rendah.

      Jika pengemudi memahami bahwa pekerjaan tambahan diperlukan, yang menghabiskan banyak waktu prosesor, maka ia meminta DPC dan mentransfer tugas ini ke sana. Saat IRQL turun ke DISPATCH, fungsi driver yang ditangguhkan dipanggil kembali dan melakukan pemrosesan selanjutnya. Dengan mengimplementasikan algoritme serupa di level IRQL DISPATCH, pengemudi menghabiskan lebih sedikit waktu di level DIRQL, dan, karenanya, mengurangi waktu tunda untuk memproses interupsinya sendiri, sehingga membebaskannya untuk perangkat sistem lainnya.

    • digunakan untuk menjalankan tugas penjadwal: Seperti yang Anda ketahui, sistem operasi Windows NT mengimplementasikan preemptive multitasking, yang berarti bahwa setiap proses yang berjalan pada sistem operasi dialokasikan untuk dieksekusi waktu tertentu. Karena IRQL dari penjadwal utas dan DPC adalah 2, ini lebih tinggi daripada prioritas utas pengguna (dieksekusi pada level 0). Pada gilirannya, prioritas penjadwal lebih rendah daripada prioritas interupsi perangkat keras (interupsi dari perangkat), yaitu dapat diinterupsi oleh interupsi perangkat keras.

Oke, tapi saya masih tidak mengerti mengapa tidak mungkin meninggalkan semua level ini dan membuat model antrean "datar", atau melakukan semua jenis tugas ini saat mereka datang? Mari kita simulasikan situasi kerja:
bayangkan beberapa kode seperti program kecil tertulis "berlutut". Jadi kami meluncurkannya untuk dieksekusi, masing-masing, sebuah proses dibentuk dalam sistem untuk program kami, dalam konteks di mana utas utama mulai dieksekusi. Utas tipikal (mode pengguna atau mode kernel) berjalan pada level IRQL PASSIVE terendah. Sepanjang eksekusi utas, jam (chip pengatur waktu) secara berkala menghasilkan interupsinya sendiri untuk menghitung interval waktu, yang digunakan untuk menunjukkan ke sistem operasi bahwa periode waktu tertentu telah berlalu. Prosedur penanganan interupsi jam dilakukan pada level IRQL CLOCK, yang (jika Anda melihat tabel) memiliki prioritas lebih tinggi daripada kebanyakan level: level DISPATCH, yang menjalankan penjadwal, dan level PASIF, yang menjalankan program kita. Dengan demikian, pengatur waktu secara konstan menggantikan pekerjaan penjadwal dan program kami. Dengan setiap detak pengatur waktu berlalu, rutinitas interupsi pengatur waktu mengurangi sisa pengatur waktu saat ini kuantum waktu utas pengguna kami. Pada saat irisan waktu dari utas pelaksana berkurang menjadi nol, penangan interupsi jam menghasilkan interupsi tingkat DISPATCH, sehingga menyebabkan penjadwal berjalan untuk memilih utas berikutnya yang akan dieksekusi. Setelah menghasilkan interupsi level DISPATCH, pengatur interupsi pengatur waktu menghentikan eksekusi kodenya dan kontrol dikembalikan ke kernel sistem. Kernel menemukan interupsi berikutnya dengan tingkat prioritas tertinggi dalam antrian permintaan, yaitu dalam mode tunggu. Setiap interupsi dilayani secara bergantian. Ketika semua interupsi di atas level DISPATCH dilayani, rutinitas interupsi level DISPATCH dijalankan. Penangan interupsi ini memproses daftar DPC dan kemudian memanggil penjadwal. Penjadwal mendeteksi bahwa kuantum waktu utas saat ini telah habis, yaitu dikurangi menjadi nol, setelah itu Penjadwal mengeksekusi algoritme penjadwalan untuk memilih utas berikutnya yang akan dieksekusi. Kode utas yang diatur untuk dieksekusi akan dieksekusi saat sistem turun ke level IRQL PASSIVE.
Ini adalah bagaimana prioritas diterapkan, dan karenanya, multitasking preemptive. Sekarang bayangkan Anda menghapus hierarki level permintaan interupsi dari sistem, bagaimana perilaku sistem dalam kasus ini? Dalam situasi ini, tidak jelas apa yang harus dieksekusi dan kapan, sistem akan mengeksekusi semua tugas yang masuk secara bergantian, yang akan mengarah pada fakta bahwa utas dapat dengan mudah mendahului penjadwal dan dengan demikian umumnya menghancurkan atau sepenuhnya menonaktifkan multitasking preemptive, yang akan menyebabkan ke belakang operasi OS yang tidak dapat diprediksi. Dengan demikian:

IRQL adalah tingkat prioritas perangkat keras-perangkat lunak yang digunakan untuk sinkronisasi dalam sistem operasi keluarga Windows, yaitu, tingkat IRQL adalah metode utama yang digunakan untuk memprioritaskan semua tindakan yang dilakukan di sistem operasi Windows selama siklus kerja.

masing-masing:

IRQL menunjukkan prioritas kode yang dijalankan pada prosesor sehubungan dengan interupsi dan kejadian asinkron (tiba-tiba) lainnya.

Tujuan level IRQL dalam sistem adalah sebagai berikut:

  1. Masking: Meningkatkan level interupsi memungkinkan Anda untuk memotong (menutupi) level interupsi perangkat keras yang mendasarinya pada pengontrol PIC. Hal ini memungkinkan Anda untuk sementara mengabaikan interupsi yang terjadi pada level yang lebih rendah, sehingga mendapatkan waktu untuk menjalankan rutinitas interupsi perangkat keras pada level ini.
  2. Sinkronisasi perangkat keras: sinkronisasi data antar utas yang berjalan pada prosesor/inti berbeda dalam sistem multiprosesor.
  3. Pengaturan waktu perangkat lunak: untuk menentukan kapan berbagai rutinitas APC/DPC dapat diservis, untuk menentukan kapan aplikasi mode pengguna dapat diservis.

Dengan demikian, pada tingkat global, mekanisme IRQL memungkinkan subrutin sistem operasi untuk:

  • Mengelola masuk kembali (masuk kembali)
  • Pastikan dapat terus berjalan tanpa didahului (preempted) oleh beberapa aktivitas lain.

Sinkronisasi proses adalah mekanisme yang memungkinkan Anda memastikan integritas sumber daya (file, data dalam memori) saat digunakan oleh beberapa proses atau utas dalam urutan acak.

Oke, tapi bagaimana pengaruhnya terhadap pengemudi? Kita tahu bahwa driver masing-masing dapat dalam mode pengguna dan mode kernel, mereka berjalan dalam mode pengguna dan dalam mode kernel. Dari sini dapat disimpulkan bahwa:

Kode driver dapat berjalan pada level IRQL yang berbeda.

Dan ini mengarah pada dua kesimpulan yang agak penting:

  1. Kode driver bersifat preemptible dan interruptible. Seperti kode lainnya dalam sistem, kode ini dapat diinterupsi kapan saja setelah akhir pembagian waktu yang dialokasikan;
  2. Kode driver harus menggunakan set tertentu fungsi sistem tergantung pada tingkat IRQL di mana itu dijalankan.

Bayangkan situasi di mana kode driver dieksekusi pada IRQL rendah, memodifikasi beberapa objek (misalnya, file file.txt ), lalu kode lain pada IRQL yang lebih tinggi tiba-tiba menghentikan eksekusinya dan mengubah file.txt yang sama dengan data yang berbeda. Saat kontrol kembali ke driver kami, itu akan terus memodifikasi file dengan datanya sendiri, sehingga menimpa data yang berasal dari sumber lain. Dengan demikian, file tersebut akan memasuki keadaan tidak konsisten. Berbagai objek sistem sinkronisasi telah diperkenalkan untuk memecahkan masalah ini. Agar kode tingkat kernel dapat memodifikasi tipe data tertentu, objek mutex, ia harus memperoleh kepemilikan kunci terlebih dahulu.

Konsep pengemudi

Inti dari sistem operasi Windows tidak dirancang untuk berinteraksi dengan perangkatnya sendiri.

Oleh karena itu, kesimpulan yang mengikuti pernyataan ini jelas: antarmuka terpisah diperlukan untuk interaksi sistem dengan perangkat, bahkan mungkin kombinasi kompleks dari beberapa antarmuka. Konsep driver dikembangkan untuk memecahkan masalah pemasangan dan digunakan di sebagian besar model sistem modern, ini didasarkan pada pekerjaan di ruang alamat kernel dari kode khusus yang memastikan interaksi kernel sistem dengan semua jenis perangkat logis / fisik.
Mengingat orientasi umum sumber daya, dalam artikel ini kami hanya akan membahas secara spesifik driver sistem operasi Windows. Jadi untuk driver Windows, seperti, secara umum, driver sistem operasi lain, pernyataan berikut ini benar:

Driver (Driver) - perangkat lunak yang dengannya sistem operasi (program pengguna, kernel, dan komponen lainnya) mendapatkan akses ke fungsionalitas beberapa perangkat fisik atau logis.

sama, tetapi dengan kata lain:

Driver - antarmuka antara kode mode pengguna, kode mode kernel, dan fungsi perangkat fisik/logis/virtual.

Salah satu definisi di atas menyoroti fitur penting dari driver: salah jika menganggap driver hanya berinteraksi dengan perangkat fisik, karena driver tidak harus menyediakan akses ke fungsi perangkat keras apa pun, itu juga dapat menyediakan hanya fungsi perangkat lunak. Contoh solusi tersebut adalah driver yang dipasang di sistem oleh antivirus, sistem enkripsi data, dan sistem pemantauan. Algoritma umum Pengoperasian driver apa pun adalah sebagai berikut: aplikasi, melalui fungsi antarmuka pengguna khusus (di Windows, ini adalah Win32 API) atau permintaan I / O, secara tidak langsung / langsung mengakses fungsi driver perangkat. Pengemudi, pada gilirannya, menyediakan akses ke fitur fungsional perangkat yang diinginkan, dan juga mengontrol proses interaksi antara permintaan aplikasi dan perangkat itu sendiri. Secara alami, pengemudi harus mendefinisikan (menjelaskan) semua prinsip interaksi dengan perangkat yang dilayani (budak, milik sendiri), harus ada satu set data tentang objek yang dikelola, instruksi (satu set perintah), dengan bantuan yang mana kode sistem / pengguna dapat menginisialisasi perangkat dengan benar dan memulai interaksi dengannya.

Memuat Driver di Startup Sistem Operasi

Akan sangat menarik untuk melihat pada tahap boot sistem operasi apa driver Windows pertama mulai memuat dan mulai berjalan? Namun, dalam presentasi mendetail, proses ini agak non-sepele dan untuk pemahaman yang mendalam diperlukan pembalikan kode dari banyak komponen boot, selain semuanya, perlu mempertimbangkan banyak poin terkait, seperti: boot urutan karena ketergantungan antar driver, karena itu driver dapat dikelompokkan ke dalam apa yang disebut " grup pemuatan", pemuatan driver itu sendiri dapat dibagi menjadi beberapa tahap, dll. Pada saat yang sama, perlu dicatat bahwa ada banyak materi di Web mengenai sistem operasi yang sudah ketinggalan zaman, jadi kami akan mencoba memperbarui proses pengunduhan. driver Windows pada contoh sistem operasi Windows 7 (paling dekat dengan saya) Windows 7. Dan sebagai permulaan, tidak ada salahnya berbicara tentang komponen utama kernel Windows terlibat aktif dalam proses pemuatan driver:

  • Manajer (pengelola) masukan/keluaran (I/O Manager)- modul mode kernel, yang merupakan bagian dari subsistem eksekutif, yang mengontrol proses input / output, menyediakan abstraksi perangkat fisik dan logis untuk aplikasi pengguna dan komponen sistem A yang menautkan aplikasi mode pengguna ke driver. Mengontrol tahapan proses interaksi pengemudi. Seluruh pertukaran data manajer I / O dengan driver dilakukan dengan memanggil prosedur callback driver dan mengirimkannya struktur data IRP standar, yang menggambarkan seluruh esensi panggilan ke driver;
  • Plug-and-Play Manager (Pengelola PnP)- modul mode kernel dan mode pengguna, yang merupakan bagian dari subsistem eksekutif, yang bertanggung jawab untuk menambah, mengenali, menghapus perangkat di sistem operasi. Bagian dari mode kernel berinteraksi dengan komponen dan driver sistem lainnya selama proses instalasi (boot). perangkat lunak diperlukan untuk melayani perangkat dalam sistem. Bagian mode pengguna bertanggung jawab untuk berinteraksi dengan program mode pengguna (untuk pengalaman pengguna interaktif) dalam situasi yang memerlukan penginstalan driver baru atau penyesuaian parameter operasi pada yang sudah ada. Mengelola distribusi sumber daya perangkat keras dalam sistem, juga mengetahui cara mengenali perangkat, merespons koneksi / pemutusan sambungannya, memuat driver yang sesuai saat perangkat baru terdeteksi;
  • Manajer Kontrol Layanan (SCM)- proses sistem yang bertanggung jawab untuk membuat, menghapus, memulai dan menghentikan layanan dan driver sistem operasi. Ini juga menyediakan: pengoperasian log peristiwa, dukungan untuk teknologi panggilan prosedur jarak jauh (RPC);

Kedua manajer ini, yaitu manajer I/O dan manajer PnP, secara aktif berinteraksi satu sama lain.
Sekarang kami akan menjelaskan proses memuat sistem operasi, namun, kami tidak akan melakukannya dalam bentuk yang biasa kami lakukan, tetapi akan mencatat secara singkat poin-poin penting mengenai pengoperasian komponen sistem operasi yang dijelaskan dengan driver:

  1. Bootmgr(.efi) memuat modul winload(.efi) dan memberikan kontrol padanya.
  2. Winload(.efi) memindai kumpulan registri Layanan HKEY_LOCAL_MACHINE\System\ dan dapatkan daftar semua driver yang diinstal pada sistem. Kumpulan registri ini berisi kunci yang memetakan ke driver target, dan berisi berbagai pengaturan terkait driver seperti Group , Start , Type , LoadOrderGroup , DependOnGroup , DependOnServices , yang menentukan kriteria pemuatan driver tertentu.
  3. Winload(.efi) memuat driver yang sangat penting untuk tahap awal pemuatan/pengoperasian sistem operasi, seperti driver pengontrol drive, driver sistem file. Jelas, driver tersebut memiliki prioritas tertinggi, karena mereka membuat dasar untuk memuat driver lain, oleh karena itu, karena alasan ini dan lainnya, mereka harus ada di memori pada saat kontrol ditransfer ke kernel. Karenanya, mereka ditandai dengan tipe khusus SERVICE_BOOT_START . Driver untuk tahap ini mulai mengunduh tergantung pada grup tempat mereka berada.
  4. Winload(.efi) langsung memuat kernel dari ntoskrnl.exe dan meneruskan kontrol ke sana.
  5. Kernel memuat Manajer I/O dan Manajer PnP.
  6. Manajer I/O membuat katalog global. Direktori ini nantinya digunakan untuk mendaftarkan objek perangkat.
  7. Manajer PnP memulai driver yang sudah dimuat ke dalam memori pada langkah sebelumnya (tipe SERVICE_BOOT_START) dengan memanggil prosedur DriverEntry setiap driver. Pada tahap ini, driver dependen juga dimuat.
  8. Manajer PnP membangun pohon perangkat sistem, melintasinya dari root, dan memuat driver perangkat yang belum dimuat.
  9. Manajer PnP memuat driver perangkat yang belum dibongkar, terlepas dari nilai parameter Mulai. Banyak dari driver ini bertipe SERVICE_DEMAND_START .
  10. Manajer PnP memuat driver fungsionalitas lanjutan. Driver ini termasuk driver adaptor video, driver perangkat eksternal, driver stack TCP/IP. Driver seperti itu bertipe SERVICE_SYSTEM_START .
  11. Kernel memuat Session Manager Subsystem Service (SMSS), yang pada gilirannya memuat Service Control Manager (SCM). SCM memindai kumpulan registri ( HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services) dan, berdasarkan informasi yang diterima, memasang database internal layanan/driver, membentuk antarmuka pemrograman untuk melayani layanan/driver yang diinstal. SCM memuat driver non-PnP "autostart" (tipe SERVICE_AUTO_START) dan driver apa pun yang menjadi sandarannya.

Dari seluruh algoritme untuk memuat driver ini, kita perlu memahami aturan dasar berikut: driver dapat dimuat (tergantung pada tahap / kelas driver) menggunakan manajer PnP, atau menggunakan SCM, tetapi Manajer I / O berpartisipasi aktif dalam proses operasi pengemudi.

Struktur Pengandar Windows

Seperti apa rupa pengemudi dalam hal struktur? Apakah ini benar-benar semacam program kelas khusus yang diatur dengan cara yang murni spesifik? Saya juga pernah berpikir naif, tetapi jika Anda memikirkannya, mengapa pengembang sistem operasi harus mempersulit hidup mereka dan menciptakan format khusus baru dari gambar file yang dapat dieksekusi untuk beberapa komponen nuklir? Jauh lebih mudah untuk mengadaptasi yang lama, yang telah lama di-debug dan dibuktikan ratusan kali.

Pengemudi adalah semacam "perpustakaan mode kernel", yang biasa DLL, yang header PE-nya (struct IMAGE_NT_HEADERS , substruktur OptionalHeader) memiliki nilai bidang Subsistem = 1 (IMAGE_SUBSYSTEM_NATIVE).

Jenis subsistem dapat diatur saat build modul yang dapat dieksekusi. Subsistem asli itu sendiri tipikal untuk aplikasi yang beroperasi menurut aturan selain yang klasik: pada tahap menyiapkan gambar untuk dieksekusi, mereka tidak perlu menginisialisasi subsistem Win32. Antara lain, subsistem asli digunakan untuk kode mode kernel, yang merupakan hampir semua driver.

Dengan analogi dengan DLL, secara sederhana kita dapat menganggap driver sebagai seperangkat prosedur (dipanggil oleh aplikasi eksternal), yang masing-masing dirancang untuk menangani jenis panggilan tertentu ke driver.

Mari kita membuat penyimpangan kecil dan membicarakan konsep seperti itu sebagai objek. Faktanya adalah bahwa seluruh proses fungsi driver Windows, seperti modul sistem operasi lainnya, bergantung pada berbagai struktur data sistem. Struktur ini dikelola oleh kernel dan dapat berisi utas, peristiwa, permintaan I/O, perangkat, dan entitas lainnya.

  • Objek. Blok data yang berisi catatan properti entitas tertentu dari sistem operasi. Dikelola oleh dispatcher (manajer) objek. Banyak objek memiliki deskriptor (deskriptor) yang membuat objek tersedia untuk aplikasi.
  • Struktur data. Blok data yang berisi catatan properti entitas tertentu dari sistem operasi. dikelola oleh kernel. Dibedakan dari benda, tetapi (karena inersia) disebut juga benda

Inilah sebabnya (dengan banyak tekanan) semua struktur internal sistem operasi Windows disebut objek.
Sekarang kembali ke prosedur driver, sebenarnya, apa yang disebut "prosedur" driver adalah objek callback COM yang memproses kejadian yang berasal dari objek infrastruktur sistem operasi yang sesuai, dikatakan bahwa driver menyediakan kernel sistem operasi dengan COM antarmuka ditentukan oleh serangkaian prosedur yang diterapkan oleh pengemudi. Ekspor, yaitu publikasi (deklarasi) prosedur driver untuk akses lebih lanjut dari luar, dilakukan dengan mendaftar di prosedur driver utama (standar untuk semua driver), yang disebut DriverEntry .

Tujuan utama dari fungsi DriverEntry adalah agar pengembang driver mengimplementasikan di dalamnya pengisian objek (catatan struct) driver dengan penunjuk ke berbagai prosedur internal driver yang menyediakan satu fungsi atau lainnya. Dalam prosedur DriverEntry, Anda dapat mengatur (mengubah) nama objek perangkat, yang kemudian digunakan oleh aplikasi untuk membuka pegangan perangkat dan mengirim paket permintaan I/O (IRP).

Fungsi DriverEntry sebenarnya adalah fungsi inisialisasi global dan dijalankan sekali selama pemuatan driver. Fungsi ini bisa sesederhana mungkin, atau berisi fungsionalitas tingkat lanjut (subrutin tambahan), seperti, misalnya, membuat objek perangkat tambahan, polling perangkat, fase tambahan konfigurasi dan inisialisasi perangkat.
Setelah menerbitkan fungsinya sendiri, driver menjadi kernel "terlihat" dari sistem operasi. Agar tidak memperumit teori yang sudah agak rumit, kami akan berasumsi bahwa dari sudut pandang kernel Windows, perangkat apa pun adalah sejenis "perangkat virtual" abstrak yang beroperasi dengan serangkaian perintah standar dan dapat diakses melalui antarmuka internal . Seperti disebutkan di atas, di kernel sistem operasi Windows terdapat modul khusus dari sistem eksekutif yang disebut Manajer I/O, yang menyediakan antarmuka interoperabilitas tunggal untuk semua driver mode kernel, termasuk driver perangkat fisik, driver perangkat logis, dan driver sistem file. Oleh karena itu, sistem I/O kernel mengelola driver, atau kita dapat mengatakan bahwa driver menggunakan antarmuka manajer I/O untuk berfungsi di sistem operasi. Di sisi lain, pengemudi menyediakan konversi (konversi) dari "perintah standar" yang berasal dari sistem operasi menjadi perintah yang "dipahami" oleh perangkat yang dikendalikannya (jika ada), dan sebaliknya. Manajer I/O mendefinisikan sekumpulan (set) rutin yang dapat diimplementasikan pada driver karena:

Driver berisi sekumpulan rutinitas callback yang menyediakan berbagai tahapan proses I/O.

Untuk pemahaman yang lebih dalam tentang fungsionalitas apa yang harus disediakan oleh driver, mari berikan gambaran umum tentang prosedur driver utama:

Sebenarnya, melihat diagram di atas, menjadi jelas jenis interaksi apa, yaitu, kelompok prosedur, yang harus diterapkan oleh driver Windows abstrak. Mari sekarang buat daftar beberapa prosedur ini:

  • Inisialisasi - Manajer I/O memulai prosedur inisialisasi (disebut DriverEntry) yang dimaksudkan untuk melakukan tindakan pada pengaturan awal objek driver, mendaftarkan semua rutinitas driver lainnya, mengonfigurasi budak, dan melakukan tindakan lain atas nama pengembang.
  • Tambahkan perangkat - tambahkan objek perangkat (opsional). Dalam prosedur ini, pengandar biasanya membuat objek perangkat untuk setiap perangkat yang dilayani pengandar. Biasanya digunakan untuk driver Plug-and-Play.
  • Pemrosesan - seperangkat prosedur pengiriman (pemrosesan berbagai status). Membuka, menutup, membaca, menulis ke perangkat, status daya pemrosesan, peristiwa PnP, dan status sistem, serta beberapa jenis interaksi lainnya, dijelaskan dalam prosedur pengiriman. Sebenarnya, ini adalah prosedur utama, karena operasi I/O tipikal diproses melalui prosedur pengiriman.
  • Memulai (permulaan) I/O adalah tahap kedua pemrosesan permintaan I/O ke perangkat, langsung memulai I/O perangkat. Prosedur ini dapat digunakan untuk mulai mentransfer data ke/dari perangkat.
  • Prosedur layanan interupsi - ketika perangkat menghasilkan interupsi, manajer interupsi mentransfer kontrol ke prosedur ini.
  • Penanganan Panggilan Prosedur yang Ditangguhkan - Rutin DPC mengambil alih sebagian besar penanganan interupsi setelah ISR dijalankan. Panggilan prosedur yang ditangguhkan dijalankan pada tingkat IRQL yang lebih rendah (DPC/DISPATCH) daripada prosedur ISR itu sendiri. Algoritme serupa diterapkan untuk menghindari pemblokiran interupsi lainnya.
  • Rutin Penyelesaian I/O - Driver bertingkat mungkin memiliki Rutin Penyelesaian I/O yang memberi tahu penyelesaian pemrosesan IRP oleh driver level rendah.
  • Prosedur Pembatalan I/O - Jika operasi I/O dapat terganggu, pengemudi dapat menentukan satu atau lebih prosedur tersebut. Saat driver menerima IRP untuk permintaan I/O yang dapat dibatalkan, driver menetapkan prosedur pembatalan IRP dan IRP melewati berbagai langkah pemrosesan yang dapat diubah atau dihapus oleh prosedur jika operasi saat ini tidak dapat dibatalkan.
  • Rutin pengiriman cepat - Driver yang banyak menggunakan Cache Manager, seperti driver sistem file, biasanya menyediakan rutinitas serupa untuk memungkinkan kernel mem-bypass algoritme penanganan I/O umum.
  • Prosedur unload harus diterapkan di setiap driver yang bekerja (membebaskan/meminjam) dengan sumber daya sistem agar Manajer I/O dapat membongkar driver dari memori.
  • Shutdown Alert Procedure - Memungkinkan pengemudi melepaskan semua sumber daya yang ditempati saat sistem dimatikan.

Menjadi jelas bahwa dalam proses pengembangan driver Windows tidak perlu mengimplementasikan seluruh rangkaian prosedur yang dijelaskan di atas, setiap driver adalah unik dan pengembang bebas menyediakan rangkaian implementasinya sendiri yang didukung oleh driver. Saat driver dimuat ke dalam sistem menggunakan manajer PnP atau SCM, manajer I/O membuat objek driver di namespace dan memanggil rutin inisialisasi driver (biasanya DriverEntry) yang melakukan langkah inisialisasi lebih lanjut.

Objek driver mewakili citra driver yang dimuat dalam memori kernel, dan sistem mengontrol driver melalui objek ini.

Objek driver mewakili kode dan data driver di kernel: antara lain, driver mengekspor titik masuk prosedurnya melalui objek ini. Prosedur inisialisasi driver menulis ke atribut objek ini titik masuk dari semua prosedur driver yang diekspor. Setelah dimuat, driver dapat membuat objek perangkat untuk merepresentasikan perangkat atau bahkan untuk membentuk antarmuka driver. Sebagian besar driver membuat objek perangkat seperti ini:

  • Driver PnP membuat objek perangkat melalui rutinitas perangkat tambahan mereka saat manajer PnP memberi tahu mereka tentang keberadaan perangkat yang mereka kelola.
  • Driver non-PnP membuat objek perangkat saat manajer I/O memanggil rutinitas inisialisasi.

Saat membuat objek bertipe "perangkat" (perangkat), pengemudi perlu menetapkan objek ini Nama. Objek yang baru dibuat ini kemudian ditempatkan di namespace pengelola objek(Pengelola Objek), yang, seperti manajer I/O (manajer), merupakan bagian dari subsistem eksekutif kernel. Manajer objek dirancang untuk memelihara database dari semua sumber daya sistem operasi yang direpresentasikan sebagai objek. Nama objek dapat ditentukan secara eksplisit oleh driver itu sendiri, atau dihasilkan secara otomatis oleh manajer I/O. Menurut konvensi, objek perangkat harus berada di direktori \Device dari namespace pengelola objek, yang tidak dapat diakses oleh aplikasi melalui Win32 API. Dan agar objek "perangkat" tersedia untuk aplikasi, driver harus membuat di \GLOBAL?? tautan simbolis ke nama objek ini di direktori \Device. Non-Plug-and-Play dan driver sistem file biasanya membuat tautan simbolis dengan nama terkenal (misalnya, \Device\VMwareKbdFilter). Hanya setelah semua tindakan yang terdaftar, driver menjadi "terlihat" di sistem dan tersedia untuk dipanggil oleh aplikasi pengguna.

Interaksi Pengemudi

Bagaimana program pengguna dapat berinteraksi dengan driver dalam sistem? Ada dua cara untuk melakukan ini:

  1. Tersirat - memanggil fungsi API Win32 generik;
  2. Eksplisit -- permintaan I/O langsung ke pengemudi;

Nah, dengan kasus pertama, semuanya cukup sederhana, di program aplikasi beberapa fungsi Win32 API biasa dipanggil (misalnya, CreateFile), yang kemudian, bergantung pada objek target (file, direktori), dapat memanggil fungsi pertukaran dengan driver dalam rangkaian panggilannya. Faktanya, dalam kasus ini, kode aplikasi tidak menetapkan sendiri tugas untuk berinteraksi dengan driver mana pun, hanya di sepanjang rantai panggilan prosedur, pada tahap tertentu eksekusi masuk ke mode kernel dan fungsi driver dipanggil di sana. Semua ini tetap tersembunyi dari pengembang, tetapi dimungkinkan untuk melacak interaksi menggunakan alat debugging.
Kasus kedua lebih menarik, ini terjadi ketika panggilan driver tidak berarti panggilan tidak langsung (dengan memanggil fungsi generik), tetapi transfer menggunakan fungsi khusus (misalnya, DeviceIoControl) dari permintaan kontrol I / O yang disebut , yang selanjutnya memulai pembentukan blok data yang disebut paket permintaan I / O.

Paket Permintaan I/O (IRP) adalah struktur data kernel Windows yang berisi informasi yang menjelaskan permintaan I/O.

Secara formal, IRP adalah sebuah paket, tetapi sebenarnya itu adalah objek kernel, yaitu struktur data (blok) dengan seperangkat prosedur untuk manajer I / O, yang menyediakan pertukaran data antara program dan driver, atau antara pengemudi dan pengemudi. Seperti yang telah kami sebutkan, arsitektur Windows dibangun sedemikian rupa sehingga tidak memungkinkan interaksi langsung antara program mode pengguna dan driver, jadi pertukaran semacam itu direduksi menjadi pengiriman kode IOCTL oleh program, yang sudah mengarah ke manajer I/O menghasilkan paket permintaan IRP. Ini adalah manajer I/O, yang bertanggung jawab untuk berinteraksi dengan driver, yang mengoperasikan IRP. Manajer I/O menerima permintaan I/O dari program pengguna, kemudian menghasilkan IRP dan meneruskannya ke driver yang sesuai.
Paket IRP terdiri dari dua bagian:

  • bagian permanen;
  • tumpukan penempatan I/O.

Di bagian konstanta, IRP berisi kode fungsi mayor dan (tidak selalu) minor. IRP_MJ_CREATE, IRP_MJ_CLOSE, irp_mj_read, irp_mj_write, irp_mj_cleanup, irp_mp_mp_mp_mp_mp_mp_mp_mp, irp -np -np -np, irp -nprik_pcryplevice, irp -nprik_pcrypol, irp, irp, irp, irpspria, irpkeP_MJ_MJ_MJ_MJ_MJ_MJ_MJ_MJ_MJ_MJ_MJ_MJ_MJ_MJ_MJ_MJ_MJ_MJ_MJ_MJ Paket ini juga berisi tumpukan penempatan I/O - struktur IO_STACK_LOCATION khusus yang berisi parameter tertentu: ini adalah kumpulan perangkat yang akan memproses paket IRP ini. Selain itu, paket ini ditransmisikan secara berurutan dari perangkat ke perangkat di sepanjang tumpukan. Lebih dari satu penempatan tumpukan menunjukkan bahwa IRP dapat ditangani oleh banyak driver. "Sel tumpukan" dari IRP dirancang untuk menyimpan informasi "variabel" saat paket IRP melewati tumpukan driver. IRP melewati prosedur yang dipublikasikan setiap driver, yang masing-masing mengambil informasi yang diperlukan dari lokasi tumpukan penempatan I/O "nya". Prosedur driver secara tradisional disebut "prosedur callback". Seperti yang telah kami sebutkan, fungsi inisialisasi DriverEtnry memberi tahu kernel (menerbitkan) nama prosedur ini dan kemudian kernel itu sendiri memanggil prosedur ini atau itu dalam keadaan tertentu.
Tidak seperti program standar, driver bukanlah proses klasik dengan ruang alamatnya sendiri dan tidak memiliki utas eksekusi. Alih-alih, fungsi driver dijalankan dalam konteks utas dan proses yang memanggilnya. Konteks (ruang eksekusi kode) dari driver tergantung pada siapa yang memanggil (memanggil) driver. Banding dapat dimulai:

  1. Program aplikasi (program mode pengguna). Dalam hal ini, konteks eksekusi driver diketahui dengan tepat, dan cocok dengan konteks program aplikasi;
  2. Pengemudi lain (pihak ketiga). Dalam hal ini, konteks eksekusi lebih sulit ditentukan, bisa diketahui atau acak, tergantung pada konteks eksekusi fungsi driver pemanggil.
  3. interupsi perangkat keras/perangkat lunak. Dalam hal ini, konteks eksekusi adalah acak, karena interupsi (dan, karenanya, beralih ke kode driver) dapat terjadi ketika kode apa pun dalam sistem operasi dijalankan.

Sekali lagi, tidak seperti program standar, driver tidak dapat memanggil fungsi API Win32 standar, itu hanya dapat beroperasi pada fungsi yang tersedia di kernel yang dimulai dengan awalan Ex.. , Hal.. , Io.. , Ke.. , Ks.. , Mm.. , Ob.. , Po.. , Ps.. , Rtl.. , Se.. , Zw.. dan beberapa lainnya.

Jenis (jenis) driver Windows

Dalam proses evolusi dan, karenanya, kerumitan konsep pengemudi, pengemudi mulai dibagi menjadi beberapa kategori (atau tipe) tergantung pada tujuannya. Inilah yang utama:

  • Driver Kelas(Pengemudi kelas) - driver yang dikembangkan oleh Microsoft untuk kelas perangkat tertentu.
  • Driver sistem file(Driver Sistem File) - driver yang mengimplementasikan sistem file di berbagai media.
  • Driver Warisan(Driver lawas) - driver mode kernel "usang" (kompatibel dengan struktur dengan versi OS lama) yang secara independen mengontrol perangkat slave secara langsung tanpa driver perangkat tambahan. Mengapa mereka memiliki nama seperti itu? Karena ini adalah jenis driver yang dipertahankan dari versi pertama jajaran sistem operasi Windows NT.
  • Pengemudi bus - Pengemudi yang menyediakan fungsionalitas bus komputer apa pun (ISA, PCI, USB, IEEE1394, dan lainnya);
  • Filter Driver(Filter driver) - driver yang digunakan untuk memantau / mengubah logika driver lain dengan bekerja dengan data yang melewatinya.
    • Driver filter atas(Driver filter atas) - subtipe driver filter yang terletak di atas driver fungsional dalam tumpukan. Semua permintaan melewati driver filter atas, yang berarti mereka dapat mengubah dan / atau memfilter informasi ke driver fungsional, dan kemudian, mungkin, ke perangkat. Contohnya adalah driver filter yang memantau/memfilter lalu lintas, mengenkripsi/menyadap permintaan baca/tulis. Driver semacam itu digunakan di firewall.
    • Driver Filter Bawah(Driver filter bawah) - subtipe driver filter, terletak di bawah driver fungsional di tumpukan. Biasanya, lebih sedikit permintaan yang melewati pengandar filter yang lebih rendah daripada pengandar filter lainnya, karena sebagian besar permintaan dijalankan dan diselesaikan oleh pengandar fungsional itu sendiri.
  • Driver fungsional(Driver fungsi) - driver yang berfungsi secara independen dan menentukan semua aspek yang terkait dengan perangkat.
  • Driver PnP (PnP Driver) - driver yang mendukung teknologi Plug-and-Play;
  • Minidriver (miniport, miniclass)(Driver miniport, Minidriver, driver Miniclass) - driver yang menangani tugas yang terkait dengan perangkat target dan menggunakan driver kelas untuk mengontrol perangkat. Bertindak sebagai salah satu bagian dari sepasang driver, di mana kategori ini bertindak sebagai driver perangkat akhir yang menjalankan tugas perangkat tertentu.

Menurut tingkat komponenisasi, driver adalah:

  • Tingkat tunggal - Pemrosesan I / O diimplementasikan dalam satu modul yang dapat dieksekusi (driver).
  • Multilevel - Pemrosesan I/O didistribusikan di antara beberapa driver.

Driver PnP di bawah Windows dibagi menjadi:

  • Penggerak Fungsi
  • Sopir bus (sopir bus)
  • Filter driver (filter-driver)

Dengan mode eksekusi, driver Windows dinilai:

  • Pengemudi mode pengguna.
  • Pengandar mode kernel.

Model pengemudi

Sepanjang keberadaan sistem operasi, pengembang telah mencoba untuk membakukan dan menyederhanakan pengembangan driver. Akibatnya, model muncul.

Model WDM

Dahulu kala, ada dua arah utama untuk pengembangan konsep driver Windows:

  1. Windows 95/98 menggunakan model VxD (Virtual Device Driver);
  2. di Windows NT3.51, model driver NT (driver gaya NT, Driver NT) dikembangkan secara paralel.

Namun, mulai dari versi Windows 98/NT4.0, pengembang berusaha untuk menyatukan (universal) pengembangan driver, sebagai akibatnya model yang disebutkan diganti dengan model WDM baru.

WDM (Model Pengandar Windows, Pengandar Windows Model) adalah lingkungan pengembangan terpadu (kerangka kerja) untuk driver perangkat sistem operasi Windows. Itu dibuat untuk mengurangi persyaratan standardisasi kode untuk driver.

Model WDM adalah langkah dalam mendefinisikan ulang tumpukan driver Windows klasik untuk memberikan dukungan bagi teknologi Plug-and-Play dan ACPI yang revolusioner. Model memungkinkan untuk memuat/membongkar driver dengan cepat, tanpa perlu me-restart sistem operasi, mengembangkan driver sebagai ekstensi (filter) ke standar driver sistem, mengelola penghematan energi dan konfigurasi perangkat dengan lebih fleksibel, dan seterusnya.
Dalam kerangka model WDM, apa saja perangkat keras didukung oleh setidaknya dua driver:

  • Driver fungsi (Function driver) - bertanggung jawab atas hampir semua fitur fungsional dari perangkat yang dilayani: operasi I / O, penanganan interupsi, dan kontrol perangkat;
  • Pengemudi bus - bertanggung jawab untuk menjaga koneksi antara perangkat dan komputer, sebenarnya mendukung bus komunikasi (misalnya, PCI, USB, dll.).

Model WDF

Sepanjang perkembangannya, model WDM telah mengalami banyak perubahan, tumbuh secara signifikan. Dimulai dengan Windows Vista, upaya lain dilakukan untuk mengembangkan konsep driver Windows, pada dasarnya model WDM yang sudah ada saat itu, menghasilkan model baru (tambahan ke WDM) yang disebut WDF.

WDF (Windows Driver Foundation, Windows Driver Foundation) adalah lingkungan pengembangan (seperangkat alat) yang memfasilitasi pengembangan driver perangkat untuk sistem operasi Windows (Windows 2000 dan yang lebih baru).

Hal ini disebabkan fakta yang tak terbantahkan bahwa pengembang gagal mencapai tingkat abstraksi model WDM yang memadai, yaitu integrasi subsistem I / O yang tidak memadai dengan teknologi Plug-and-Play dan manajemen daya. Ini meninggalkan pengembang driver dengan beban yang sangat besar untuk menyinkronkan permintaan I/O yang sama ini dengan peristiwa Plug-and-Play dan permintaan daya. Jelas, diperlukan penyederhanaan lebih lanjut dari model driver. WDF telah menggantikan WDM dan dianggap sebagai model paling modern.
WDF mengimplementasikan fitur-fitur berikut:

  1. "Penghapusan" dari beberapa kelas driver yang tidak penting untuk mode eksekusi ke dalam mode pengguna, yang mengurangi jumlah crash di kernel.
  2. Sebagian besar penanganan interaksi subsistem I/O dengan Plug-and-Play dan manajemen daya kini ditangani oleh mekanisme bawaan model WDF.
  3. Menyediakan antarmuka internal baru ke model WDF yang memungkinkan abstraksi dari antarmuka sistem yang lebih sulit dipahami; Dalam model WDM / legacy, cukup sulit untuk mengimplementasikan logika beberapa bagian interaksi dengan driver tanpa mempelajari semua dasar-dasar arsitektur kernel yang kompleks, sedangkan WDF memungkinkan Anda mengotomatiskan banyak jenis interaksi; Sejumlah besar kode saat mengembangkan driver WDM sekarang dapat diganti dengan pemanggilan prosedur WDF.
  4. Kemampuan untuk membuat driver "kanonik". Kehadiran template yang menyediakan pengembang pihak ketiga dengan kemampuan untuk mengesampingkan kriteria yang unik untuk driver mereka, sehingga mengurangi waktu pengembangan.

Model WDF dibagi menjadi dua area:

  • UMDF (Kernel-Mode Driver Framework) adalah lingkungan pengembangan driver mode kernel.
  • KMDF (User-Mode Driver Framework) adalah lingkungan pengembangan driver mode pengguna.

Pembagian lingkungan menjadi mode pengguna dan kernel dalam model WDF agak sewenang-wenang, karena tujuan utama dari perbedaan ini adalah untuk mengklasifikasikan pengembangan driver untuk kelas perangkat tertentu.



Memuat...
Atas