Bagikan melalui


Menginisialisasi Driver Miniport

Ketika perangkat jaringan tersedia, sistem memuat driver miniport NDIS untuk mengelola perangkat (jika driver belum dimuat). Setiap driver miniport harus menyediakan fungsi DriverEntry . Sistem memanggil DriverEntry setelah memuat driver. DriverEntry mendaftarkan karakteristik driver miniport dengan NDIS (termasuk versi NDIS yang didukung dan titik masuk driver).

Sistem meneruskan dua argumen ke DriverEntry:

  • Penunjuk ke objek driver, yang dibuat oleh sistem I/O.

  • Penunjuk ke jalur registri, yang menentukan di mana parameter khusus driver disimpan.

Di DriverEntry, driver miniport meneruskan kedua pointer ini dalam panggilan ke fungsi NdisMRegisterMiniportDriver . Driver Miniport mengekspor serangkaian fungsi MiniportXxx standar dengan menyimpan titik masuk mereka dalam struktur NDIS_MINIPORT_DRIVER_CHARACTERISTICS dan meneruskan struktur tersebut ke NdisMRegisterMiniportDriver.

DriverEntry untuk driver miniport mengembalikan nilai yang dikembalikan oleh panggilan ke NdisMRegisterMiniportDriver.

Driver miniport juga melakukan inisialisasi khusus driver lainnya yang diperlukan di DriverEntry. Driver melakukan inisialisasi khusus adaptor dalam fungsi MiniportInitializeEx . Untuk informasi selengkapnya tentang inisialisasi adaptor, lihat Menginisialisasi Adapter.

DriverEntry dapat mengalokasikan struktur NDIS_MINIPORT_DRIVER_CHARACTERISTICS pada tumpukan karena pustaka NDIS menyalin informasi yang relevan ke penyimpanannya sendiri. DriverEntry harus menghapus memori untuk struktur ini dengan NdisZeroMemory sebelum mengatur nilai yang disediakan driver dalam anggotanya. Anggota MajorNdisVersion dan MinorNdisVersion harus berisi versi utama dan minor NDIS yang didukung driver. Di setiap anggota XxxHandler dari struktur karakteristik, DriverEntry harus mengatur titik masuk fungsi MiniportXxx yang disediakan driver, atau anggota harus NULL.

Untuk mengaktifkan driver miniport untuk mengonfigurasi layanan opsional, NDIS memanggil fungsi MiniportSetOptions dalam konteks panggilan driver miniport ke NdisMRegisterMiniportDriver. Untuk informasi selengkapnya tentang layanan opsional, lihat Mengonfigurasi Layanan Driver Miniport Opsional.

Driver yang memanggil NdisMRegisterMiniportDriver harus siap bagi NDIS untuk memanggil fungsi MiniportInitializeEx mereka kapan saja setelah DriverEntry kembali. Driver tersebut harus memiliki informasi penginstalan dan konfigurasi yang memadai yang disimpan dalam registri atau tersedia dari panggilan ke fungsi konfigurasi khusus jenis bus NdisXxx untuk menyiapkan sumber daya khusus NIC yang diperlukan driver untuk melakukan operasi I/O jaringan.

Driver miniport akhirnya harus memanggil NdisMDeregisterMiniportDriver untuk merilis sumber daya yang dialokasikan dengan memanggil NdisMRegisterMiniportDriver. Jika inisialisasi driver gagal setelah panggilan ke NdisMRegisterMiniportDriver berhasil, driver dapat memanggil NdisMDeregisterMiniportDriver dari dalam DriverEntry. Jika tidak, driver miniport harus merilis sumber daya khusus driver yang dialokasikan dalam fungsi MiniportDriverUnload-nya . Dengan kata lain, jika NdisMRegisterMiniportDriver tidak mengembalikan NDIS_STATUS_SUCCESS, DriverEntry harus merilis sumber daya apa pun yang dialokasikan sebelum mengembalikan kontrol. Driver tidak akan dimuat jika ini terjadi. Untuk informasi selengkapnya, lihat Membongkar Driver Miniport.